Skip to content

Software

ANTA catalog for software tests

Test functions related to the EOS software

VerifyEOSExtensions

Bases: AntaTest

Verifies all EOS extensions installed on the device are enabled for boot persistence.

Source code in anta/tests/software.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
class VerifyEOSExtensions(AntaTest):
    """
    Verifies all EOS extensions installed on the device are enabled for boot persistence.
    """

    name = "VerifyEOSExtensions"
    description = "Verifies all EOS extensions installed on the device are enabled for boot persistence."
    categories = ["software"]
    commands = [AntaCommand(command="show extensions"), AntaCommand(command="show boot-extensions")]

    @AntaTest.anta_test
    def test(self) -> None:
        boot_extensions = []
        show_extensions_command_output = self.instance_commands[0].json_output
        show_boot_extensions_command_output = self.instance_commands[1].json_output
        installed_extensions = [
            extension for extension, extension_data in show_extensions_command_output["extensions"].items() if extension_data["status"] == "installed"
        ]
        for extension in show_boot_extensions_command_output["extensions"]:
            extension = extension.strip("\n")
            if extension != "":
                boot_extensions.append(extension)
        installed_extensions.sort()
        boot_extensions.sort()
        if installed_extensions == boot_extensions:
            self.result.is_success()
        else:
            self.result.is_failure(f"Missing EOS extensions: installed {installed_extensions} / configured: {boot_extensions}")

VerifyEOSVersion

Bases: AntaTest

Verifies the device is running one of the allowed EOS version.

Source code in anta/tests/software.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class VerifyEOSVersion(AntaTest):
    """
    Verifies the device is running one of the allowed EOS version.
    """

    name = "VerifyEOSVersion"
    description = "Verifies the device is running one of the allowed EOS version."
    categories = ["software"]
    commands = [AntaCommand(command="show version")]

    class Input(AntaTest.Input):  # pylint: disable=missing-class-docstring
        versions: List[str]
        """List of allowed EOS versions"""

    @AntaTest.anta_test
    def test(self) -> None:
        command_output = self.instance_commands[0].json_output
        if command_output["version"] in self.inputs.versions:
            self.result.is_success()
        else:
            self.result.is_failure(f'device is running version {command_output["version"]} not in expected versions: {self.inputs.versions}')

Input

Bases: Input

Source code in anta/tests/software.py
27
28
29
class Input(AntaTest.Input):  # pylint: disable=missing-class-docstring
    versions: List[str]
    """List of allowed EOS versions"""

versions instance-attribute

versions: List[str]

List of allowed EOS versions

VerifyTerminAttrVersion

Bases: AntaTest

Verifies the device is running one of the allowed TerminAttr version.

Source code in anta/tests/software.py
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class VerifyTerminAttrVersion(AntaTest):
    """
    Verifies the device is running one of the allowed TerminAttr version.
    """

    name = "VerifyTerminAttrVersion"
    description = "Verifies the device is running one of the allowed TerminAttr version."
    categories = ["software"]
    commands = [AntaCommand(command="show version detail")]

    class Input(AntaTest.Input):  # pylint: disable=missing-class-docstring
        versions: List[str]
        """List of allowed TerminAttr versions"""

    @AntaTest.anta_test
    def test(self) -> None:
        command_output = self.instance_commands[0].json_output
        command_output_data = command_output["details"]["packages"]["TerminAttr-core"]["version"]
        if command_output_data in self.inputs.versions:
            self.result.is_success()
        else:
            self.result.is_failure(f"device is running TerminAttr version {command_output_data} and is not in the allowed list: {self.inputs.versions}")

Input

Bases: Input

Source code in anta/tests/software.py
50
51
52
class Input(AntaTest.Input):  # pylint: disable=missing-class-docstring
    versions: List[str]
    """List of allowed TerminAttr versions"""

versions instance-attribute

versions: List[str]

List of allowed TerminAttr versions


Last update: August 18, 2023