Result Manager module
Result Manager definition¶
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',
)
Create Result Manager:
manager = ResultManager()
Run tests for all connected devices:
for device in inventory_anta.get_inventory().devices:
manager.add(
VerifyNTP(device=device).test()
)
manager.add(
VerifyEOSVersion(device=device).test(version='4.28.3M')
)
Print result in native format:
manager.results
[
TestResult(
name="pf1",
test="VerifyZeroTouch",
categories=["configuration"],
description="Verifies ZeroTouch is disabled",
result="success",
messages=[],
custom_field=None,
),
TestResult(
name="pf1",
test='VerifyNTP',
categories=["software"],
categories=['system'],
description='Verifies if NTP is synchronised.',
result='failure',
messages=["The device is not synchronized with the configured NTP server(s): 'NTP is disabled.'"],
custom_field=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
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 |
|
results_by_status
cached
property
¶
results_by_status: dict[AntaTestStatus, list[TestResult]]
A cached property that returns the results grouped by status.
sorted_category_stats
property
¶
sorted_category_stats: dict[str, CategoryStats]
A property that returns the category_stats dictionary sorted by key name.
__len__ ¶
__len__() -> int
Implement len method to count number of results.
Source code in anta/result_manager/__init__.py
100 101 102 |
|
add ¶
add(result: TestResult) -> None
Add a result to the ResultManager instance.
The result is added to the internal list of results and the overall status of the ResultManager instance is updated based on the added test status.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
result |
TestResult
|
TestResult to add to the ResultManager instance. |
required |
Source code in anta/result_manager/__init__.py
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
|
filter ¶
filter(hide: set[AntaTestStatus]) -> ResultManager
Get a filtered ResultManager based on test status.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
hide |
set[AntaTestStatus]
|
Set of AntaTestStatus enum members to select tests to hide based on their status. |
required |
Returns:
Type | Description |
---|---|
ResultManager
|
A filtered |
Source code in anta/result_manager/__init__.py
260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
|
filter_by_devices ¶
filter_by_devices(devices: set[str]) -> ResultManager
Get a filtered ResultManager that only contains specific devices.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
devices |
set[str]
|
Set of device names to filter the results. |
required |
Returns:
Type | Description |
---|---|
ResultManager
|
A filtered |
Source code in anta/result_manager/__init__.py
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
|
filter_by_tests ¶
filter_by_tests(tests: set[str]) -> ResultManager
Get a filtered ResultManager that only contains specific tests.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
tests |
set[str]
|
Set of test names to filter the results. |
required |
Returns:
Type | Description |
---|---|
ResultManager
|
A filtered |
Source code in anta/result_manager/__init__.py
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 |
|
get_devices ¶
get_devices() -> set[str]
Get the set of all the device names.
Returns:
Type | Description |
---|---|
set[str]
|
Set of device names. |
Source code in anta/result_manager/__init__.py
322 323 324 325 326 327 328 329 330 |
|
get_results ¶
get_results(
status: set[AntaTestStatus] | None = None,
sort_by: list[str] | None = None,
) -> list[TestResult]
Get the results, optionally filtered by status and sorted by TestResult fields.
If no status is provided, all results are returned.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
status |
set[AntaTestStatus] | None
|
Optional set of AntaTestStatus enum members to filter the results. |
None
|
sort_by |
list[str] | None
|
Optional list of TestResult fields to sort the results. |
None
|
Returns:
Type | Description |
---|---|
list[TestResult]
|
List of results. |
Source code in anta/result_manager/__init__.py
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 |
|
get_status ¶
get_status(*, ignore_error: bool = False) -> str
Return the current status including error_status if ignore_error is False.
Source code in anta/result_manager/__init__.py
256 257 258 |
|
get_tests ¶
get_tests() -> set[str]
Get the set of all the test names.
Returns:
Type | Description |
---|---|
set[str]
|
Set of test names. |
Source code in anta/result_manager/__init__.py
312 313 314 315 316 317 318 319 320 |
|
get_total_results ¶
get_total_results(
status: set[AntaTestStatus] | None = None,
) -> int
Get the total number of results, optionally filtered by status.
If no status is provided, the total number of results is returned.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
status |
set[AntaTestStatus] | None
|
Optional set of AntaTestStatus enum members to filter the results. |
None
|
Returns:
Type | Description |
---|---|
int
|
Total number of results. |
Source code in anta/result_manager/__init__.py
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
|
options:
filters: ["!^_[^_]", "!^__len__"]