Skip to content

ANTA catalog for multicast and IGMP tests

VerifyIGMPSnoopingGlobal

Verifies the IGMP snooping global status.

Expected Results
  • Success: The test will pass if the IGMP snooping global status matches the expected status.
  • Failure: The test will fail if the IGMP snooping global status does not match the expected status.
Examples
anta.tests.multicast:
  - VerifyIGMPSnoopingGlobal:
      enabled: True

Inputs

Name Type Description Default
enabled bool
Whether global IGMP snopping must be enabled (True) or disabled (False).
-
Source code in anta/tests/multicast.py
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
89
90
91
92
93
94
95
96
97
98
99
class VerifyIGMPSnoopingGlobal(AntaTest):
    """Verifies the IGMP snooping global status.

    Expected Results
    ----------------
    * Success: The test will pass if the IGMP snooping global status matches the expected status.
    * Failure: The test will fail if the IGMP snooping global status does not match the expected status.

    Examples
    --------
    ```yaml
    anta.tests.multicast:
      - VerifyIGMPSnoopingGlobal:
          enabled: True
    ```
    """

    name = "VerifyIGMPSnoopingGlobal"
    description = "Verifies the IGMP snooping global configuration."
    categories: ClassVar[list[str]] = ["multicast"]
    commands: ClassVar[list[AntaCommand | AntaTemplate]] = [AntaCommand(command="show ip igmp snooping", revision=1)]

    class Input(AntaTest.Input):
        """Input model for the VerifyIGMPSnoopingGlobal test."""

        enabled: bool
        """Whether global IGMP snopping must be enabled (True) or disabled (False)."""

    @AntaTest.anta_test
    def test(self) -> None:
        """Main test function for VerifyIGMPSnoopingGlobal."""
        command_output = self.instance_commands[0].json_output
        self.result.is_success()
        igmp_state = command_output["igmpSnoopingState"]
        if igmp_state != "enabled" if self.inputs.enabled else igmp_state != "disabled":
            self.result.is_failure(f"IGMP state is not valid: {igmp_state}")

VerifyIGMPSnoopingVlans

Verifies the IGMP snooping status for the provided VLANs.

Expected Results
  • Success: The test will pass if the IGMP snooping status matches the expected status for the provided VLANs.
  • Failure: The test will fail if the IGMP snooping status does not match the expected status for the provided VLANs.
Examples
anta.tests.multicast:
  - VerifyIGMPSnoopingVlans:
      vlans:
        10: False
        12: False

Inputs

Name Type Description Default
vlans dict[Vlan, bool]
Dictionary with VLAN ID and whether IGMP snooping must be enabled (True) or disabled (False).
-
Source code in anta/tests/multicast.py
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
52
53
54
55
56
57
58
59
60
61
class VerifyIGMPSnoopingVlans(AntaTest):
    """Verifies the IGMP snooping status for the provided VLANs.

    Expected Results
    ----------------
    * Success: The test will pass if the IGMP snooping status matches the expected status for the provided VLANs.
    * Failure: The test will fail if the IGMP snooping status does not match the expected status for the provided VLANs.

    Examples
    --------
    ```yaml
    anta.tests.multicast:
      - VerifyIGMPSnoopingVlans:
          vlans:
            10: False
            12: False
    ```
    """

    name = "VerifyIGMPSnoopingVlans"
    description = "Verifies the IGMP snooping status for the provided VLANs."
    categories: ClassVar[list[str]] = ["multicast"]
    commands: ClassVar[list[AntaCommand | AntaTemplate]] = [AntaCommand(command="show ip igmp snooping", revision=1)]

    class Input(AntaTest.Input):
        """Input model for the VerifyIGMPSnoopingVlans test."""

        vlans: dict[Vlan, bool]
        """Dictionary with VLAN ID and whether IGMP snooping must be enabled (True) or disabled (False)."""

    @AntaTest.anta_test
    def test(self) -> None:
        """Main test function for VerifyIGMPSnoopingVlans."""
        command_output = self.instance_commands[0].json_output
        self.result.is_success()
        for vlan, enabled in self.inputs.vlans.items():
            if str(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 != "enabled" if enabled else igmp_state != "disabled":
                self.result.is_failure(f"IGMP state for vlan {vlan} is {igmp_state}")