Skip to content

Multicast

ANTA catalog for multicast tests

Test functions related to multicast

VerifyIGMPSnoopingGlobal

Bases: AntaTest

Verifies the IGMP snooping global configuration.

Parameters:

Name Type Description Default
configuration str

Expected global IGMP snooping configuration (enabled or disabled).

required
Source code in anta/tests/multicast.py
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
class VerifyIGMPSnoopingGlobal(AntaTest):
    """
    Verifies the IGMP snooping global configuration.

    Args:
        configuration (str): Expected global IGMP snooping configuration (enabled or disabled).
    """

    name = "VerifyIGMPSnoopingGlobal"
    description = "Verifies the IGMP snooping global configuration."
    categories = ["multicast", "igmp"]
    commands = [AntaCommand(command="show ip igmp snooping")]

    @AntaTest.anta_test
    def test(self, configuration: Optional[str] = None) -> None:
        """
        Run VerifyIGMPSnoopingGlobal validation

        Args:
            configuration: Expected global IGMP configuration (enabled or disabled).
        """

        if not configuration:
            self.result.is_skipped("VerifyIGMPSnoopingGlobal was not run as no configuration was given")
            return

        if configuration not in ["enabled", "disabled"]:
            self.result.is_error(f"VerifyIGMPSnoopingGlobal was not run as 'configuration': {configuration} is not in the allowed values: ['enabled', 'disabled'])")
            return

        command_output = self.instance_commands[0].json_output

        self.result.is_success()
        if (igmp_state := command_output["igmpSnoopingState"]) != configuration:
            self.result.is_failure(f"IGMP state is not valid: {igmp_state}")

test

test(configuration: Optional[str] = None) -> None

Run VerifyIGMPSnoopingGlobal validation

Parameters:

Name Type Description Default
configuration Optional[str]

Expected global IGMP configuration (enabled or disabled).

None
Source code in anta/tests/multicast.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
@AntaTest.anta_test
def test(self, configuration: Optional[str] = None) -> None:
    """
    Run VerifyIGMPSnoopingGlobal validation

    Args:
        configuration: Expected global IGMP configuration (enabled or disabled).
    """

    if not configuration:
        self.result.is_skipped("VerifyIGMPSnoopingGlobal was not run as no configuration was given")
        return

    if configuration not in ["enabled", "disabled"]:
        self.result.is_error(f"VerifyIGMPSnoopingGlobal was not run as 'configuration': {configuration} is not in the allowed values: ['enabled', 'disabled'])")
        return

    command_output = self.instance_commands[0].json_output

    self.result.is_success()
    if (igmp_state := command_output["igmpSnoopingState"]) != configuration:
        self.result.is_failure(f"IGMP state is not valid: {igmp_state}")

VerifyIGMPSnoopingVlans

Bases: AntaTest

Verifies the IGMP snooping configuration for some VLANs.

Parameters:

Name Type Description Default
vlans List[str]

A list of VLANs

required
configuration str

Expected IGMP snooping configuration (enabled or disabled) for these VLANs.

required
Source code in anta/tests/multicast.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class VerifyIGMPSnoopingVlans(AntaTest):
    """
    Verifies the IGMP snooping configuration for some VLANs.

    Args:
        vlans (List[str]): A list of VLANs
        configuration (str): Expected IGMP snooping configuration (enabled or disabled) for these VLANs.
    """

    name = "VerifyIGMPSnoopingVlans"
    description = "Verifies the IGMP snooping configuration for some VLANs."
    categories = ["multicast", "igmp"]
    commands = [AntaCommand(command="show ip igmp snooping")]

    @AntaTest.anta_test
    def test(self, vlans: Optional[List[str]] = None, configuration: Optional[str] = None) -> None:
        """
        Run VerifyIGMPSnoopingVlans validation

        Args:
            vlans: List of VLANs.
            configuration: Expected IGMP configuration (enabled or disabled) for these VLANs.
        """

        if not vlans or not configuration:
            self.result.is_skipped("VerifyIGMPSnoopingVlans was not run as no vlans or configuration was given")
            return
        if configuration not in ["enabled", "disabled"]:
            self.result.is_error(f"VerifyIGMPSnoopingVlans was not run as 'configuration': {configuration} is not in the allowed values: ['enabled', 'disabled'])")
            return

        command_output = self.instance_commands[0].json_output

        self.result.is_success()
        for vlan in vlans:
            if vlan not in command_output["vlans"]:
                self.result.is_failure(f"Supplied vlan {vlan} is not present on the device.")
                continue

            igmp_state = command_output["vlans"][str(vlan)]["igmpSnoopingState"]
            if igmp_state != configuration:
                self.result.is_failure(f"IGMP state for vlan {vlan} is {igmp_state}")

test

test(
    vlans: Optional[List[str]] = None,
    configuration: Optional[str] = None,
) -> None

Run VerifyIGMPSnoopingVlans validation

Parameters:

Name Type Description Default
vlans Optional[List[str]]

List of VLANs.

None
configuration Optional[str]

Expected IGMP configuration (enabled or disabled) for these VLANs.

None
Source code in anta/tests/multicast.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@AntaTest.anta_test
def test(self, vlans: Optional[List[str]] = None, configuration: Optional[str] = None) -> None:
    """
    Run VerifyIGMPSnoopingVlans validation

    Args:
        vlans: List of VLANs.
        configuration: Expected IGMP configuration (enabled or disabled) for these VLANs.
    """

    if not vlans or not configuration:
        self.result.is_skipped("VerifyIGMPSnoopingVlans was not run as no vlans or configuration was given")
        return
    if configuration not in ["enabled", "disabled"]:
        self.result.is_error(f"VerifyIGMPSnoopingVlans was not run as 'configuration': {configuration} is not in the allowed values: ['enabled', 'disabled'])")
        return

    command_output = self.instance_commands[0].json_output

    self.result.is_success()
    for vlan in vlans:
        if vlan not in command_output["vlans"]:
            self.result.is_failure(f"Supplied vlan {vlan} is not present on the device.")
            continue

        igmp_state = command_output["vlans"][str(vlan)]["igmpSnoopingState"]
        if igmp_state != configuration:
            self.result.is_failure(f"IGMP state for vlan {vlan} is {igmp_state}")

Last update: July 19, 2023