Skip to content

Result Manager module

Result Manager definition

UML Diagram

ResultManager

ResultManager()

Helper to manage Test Results and generate reports.

Examples:

Create Inventory:

    inventory_anta = AntaInventory.parse(
        filename='examples/inventory.yml',
        username='ansible',
        password='ansible',
        timeout=0.5
    )

Create Result Manager:

    manager = ResultManager()

Run tests for all connected devices:

    for device in inventory_anta.get_inventory():
        manager.add_test_result(
            VerifyNTP(device=device).test()
        )
        manager.add_test_result(
            VerifyEOSVersion(device=device).test(version='4.28.3M')
        )

Print result in native format:

    manager.get_results()
    [
        TestResult(
            host=IPv4Address('192.168.0.10'),
            test='VerifyNTP',
            result='failure',
            message="device is not running NTP correctly"
        ),
        TestResult(
            host=IPv4Address('192.168.0.10'),
            test='VerifyEOSVersion',
            result='success',
            message=None
        ),
    ]

The status of the class is initialized to “unset”

Then when adding a test with a status that is NOT ‘error’ the following table shows the updated status:

Current Status Added test Status Updated Status
unset Any Any
skipped unset, skipped skipped
skipped success success
skipped failure failure
success unset, skipped, success success
success failure failure
failure unset, skipped success, failure failure

If the status of the added test is error, the status is untouched and the error_status is set to True.

Source code in anta/result_manager/__init__.py
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
def __init__(self) -> None:
    """
    Class constructor.

    The status of the class is initialized to "unset"

    Then when adding a test with a status that is NOT 'error' the following
    table shows the updated status:

    | Current Status |         Added test Status       | Updated Status |
    | -------------- | ------------------------------- | -------------- |
    |      unset     |              Any                |       Any      |
    |     skipped    |         unset, skipped          |     skipped    |
    |     skipped    |            success              |     success    |
    |     skipped    |            failure              |     failure    |
    |     success    |     unset, skipped, success     |     success    |
    |     success    |            failure              |     failure    |
    |     failure    | unset, skipped success, failure |     failure    |

    If the status of the added test is error, the status is untouched and the
    error_status is set to True.
    """
    self._result_entries: list[TestResult] = []
    # Initialize status
    self.status: TestStatus = "unset"
    self.error_status = False

add_test_result

add_test_result(entry: TestResult) -> None

Add a result to the list

Parameters:

Name Type Description Default
entry TestResult

TestResult data to add to the report

required
Source code in anta/result_manager/__init__.py
117
118
119
120
121
122
123
124
125
def add_test_result(self, entry: TestResult) -> None:
    """Add a result to the list

    Args:
        entry (TestResult): TestResult data to add to the report
    """
    logger.debug(entry)
    self._result_entries.append(entry)
    self._update_status(entry.result)

add_test_results

add_test_results(entries: list[TestResult]) -> None

Add a list of results to the list

Parameters:

Name Type Description Default
entries list[TestResult]

List of TestResult data to add to the report

required
Source code in anta/result_manager/__init__.py
127
128
129
130
131
132
133
134
def add_test_results(self, entries: list[TestResult]) -> None:
    """Add a list of results to the list

    Args:
        entries (list[TestResult]): List of TestResult data to add to the report
    """
    for e in entries:
        self.add_test_result(e)

get_hosts

get_hosts() -> list[str]

Get list of IP addresses in current manager.

Returns:

Type Description
list[str]

list[str]: List of IP addresses.

Source code in anta/result_manager/__init__.py
202
203
204
205
206
207
208
209
210
211
212
213
def get_hosts(self) -> list[str]:
    """
    Get list of IP addresses in current manager.

    Returns:
        list[str]: List of IP addresses.
    """
    result_list = []
    for testcase in self._result_entries:
        if str(testcase.name) not in result_list:
            result_list.append(str(testcase.name))
    return result_list

get_json_results

get_json_results() -> str

Expose list of all test results in JSON

Returns:

Name Type Description
str str

JSON dumps of the list of results

Source code in anta/result_manager/__init__.py
151
152
153
154
155
156
157
158
159
160
161
def get_json_results(self) -> str:
    """
    Expose list of all test results in JSON

    Returns:
        str: JSON dumps of the list of results
    """
    res = []
    for device in self._result_entries:
        res.append({k: v if isinstance(v, list) else str(v) for k, v in device})
    return json.dumps(res, indent=4)

get_result_by_host

get_result_by_host(host_ip: str) -> list[TestResult]

Get list of test result for a given host.

Parameters:

Name Type Description Default
host_ip str

IP Address of the host to use to filter results.

required
output_format str

format selector. Can be either native/list. Defaults to ‘native’.

required

Returns:

Type Description
list[TestResult]

list[TestResult]: List of results related to the host.

Source code in anta/result_manager/__init__.py
176
177
178
179
180
181
182
183
184
185
186
187
def get_result_by_host(self, host_ip: str) -> list[TestResult]:
    """
    Get list of test result for a given host.

    Args:
        host_ip (str): IP Address of the host to use to filter results.
        output_format (str, optional): format selector. Can be either native/list. Defaults to 'native'.

    Returns:
        list[TestResult]: List of results related to the host.
    """
    return [result for result in self._result_entries if str(result.name) == host_ip]

get_result_by_test

get_result_by_test(test_name: str) -> list[TestResult]

Get list of test result for a given test.

Parameters:

Name Type Description Default
test_name str

Test name to use to filter results

required
output_format str

format selector. Can be either native/list. Defaults to ‘native’.

required

Returns:

Type Description
list[TestResult]

list[TestResult]: List of results related to the test.

Source code in anta/result_manager/__init__.py
163
164
165
166
167
168
169
170
171
172
173
174
def get_result_by_test(self, test_name: str) -> list[TestResult]:
    """
    Get list of test result for a given test.

    Args:
        test_name (str): Test name to use to filter results
        output_format (str, optional): format selector. Can be either native/list. Defaults to 'native'.

    Returns:
        list[TestResult]: List of results related to the test.
    """
    return [result for result in self._result_entries if str(result.test) == test_name]

get_results

get_results() -> list[TestResult]

Expose list of all test results in different format

Returns:

Name Type Description
any list[TestResult]

List of results.

Source code in anta/result_manager/__init__.py
142
143
144
145
146
147
148
149
def get_results(self) -> list[TestResult]:
    """
    Expose list of all test results in different format

    Returns:
        any: List of results.
    """
    return self._result_entries

get_status

get_status(ignore_error: bool = False) -> str

Returns the current status including error_status if ignore_error is False

Source code in anta/result_manager/__init__.py
136
137
138
139
140
def get_status(self, ignore_error: bool = False) -> str:
    """
    Returns the current status including error_status if ignore_error is False
    """
    return "error" if self.error_status and not ignore_error else self.status

get_testcases

get_testcases() -> list[str]

Get list of name of all test cases in current manager.

Returns:

Type Description
list[str]

list[str]: List of names for all tests.

Source code in anta/result_manager/__init__.py
189
190
191
192
193
194
195
196
197
198
199
200
def get_testcases(self) -> list[str]:
    """
    Get list of name of all test cases in current manager.

    Returns:
        list[str]: List of names for all tests.
    """
    result_list = []
    for testcase in self._result_entries:
        if str(testcase.test) not in result_list:
            result_list.append(str(testcase.test))
    return result_list