# Execute Network Readiness For Use (NRFU) Testing ANTA provides a set of commands for performing NRFU tests on devices. These commands are under the `anta nrfu` namespace and offer multiple output format options: - [Text view](#performing-nrfu-with-text-rendering) - [Table view](#performing-nrfu-with-table-rendering) - [JSON view](#performing-nrfu-with-json-rendering) - [Custom template view](#performing-nrfu-with-custom-reports) ### NRFU Command overview ```bash anta nrfu --help Usage: anta nrfu [OPTIONS] COMMAND [ARGS]... Run NRFU against inventory devices Options: -u, --username TEXT Username to connect to EOS [env var: ANTA_USERNAME; required] -p, --password TEXT Password to connect to EOS that must be provided. It can be prompted using '--prompt' option. [env var: ANTA_PASSWORD] --enable-password TEXT Password to access EOS Privileged EXEC mode. It can be prompted using '--prompt' option. Requires '-- enable' option. [env var: ANTA_ENABLE_PASSWORD] --enable Some commands may require EOS Privileged EXEC mode. This option tries to access this mode before sending a command to the device. [env var: ANTA_ENABLE] -P, --prompt Prompt for passwords if they are not provided. [env var: ANTA_PROMPT] --timeout INTEGER Global connection timeout [env var: ANTA_TIMEOUT; default: 30] --insecure Disable SSH Host Key validation [env var: ANTA_INSECURE] --disable-cache Disable cache globally [env var: ANTA_DISABLE_CACHE] -i, --inventory FILE Path to the inventory YAML file [env var: ANTA_INVENTORY; required] -t, --tags TEXT List of tags using comma as separator: tag1,tag2,tag3 [env var: ANTA_TAGS] -c, --catalog FILE Path to the test catalog YAML file [env var: ANTA_CATALOG; required] --ignore-status Always exit with success [env var: ANTA_NRFU_IGNORE_STATUS] --ignore-error Only report failures and not errors [env var: ANTA_NRFU_IGNORE_ERROR] --help Show this message and exit. Commands: json ANTA command to check network state with JSON result table ANTA command to check network states with table result text ANTA command to check network states with text result tpl-report ANTA command to check network state with templated report ``` > `username`, `password`, `enable-password`, `enable`, `timeout` and `insecure` values are the same for all devices All commands under the `anta nrfu` namespace require a catalog yaml file specified with the `--catalog` option and a device inventory file specified with the `--inventory` option. !!! info Issuing the command `anta nrfu` will run `anta nrfu table` without any option. ## Tag management The `--tags` option can be used to target specific devices in your inventory and run only tests configured with this specific tags from your catalog. The default tag is set to `all` and is implicit. Expected behaviour is provided below: | Command | Description | | ------- | ----------- | | `none` | Run all tests on all devices according `tag` definition in your inventory and test catalog. And tests with no tag are executed on all devices| | `--tags leaf` | Run all tests marked with `leaf` tag on all devices configured with `leaf` tag.
All other tags are ignored | | `--tags leaf,spine` | Run all tests marked with `leaf` tag on all devices configured with `leaf` tag.
Run all tests marked with `spine` tag on all devices configured with `spine` tag.
All other tags are ignored | !!! info [More examples](tag-management.md) available on this dedicated page. ## Performing NRFU with text rendering The `text` subcommand provides a straightforward text report for each test executed on all devices in your inventory. ### Command overview ```bash anta nrfu text --help Usage: anta nrfu text [OPTIONS] ANTA command to check network states with text result Options: -s, --search TEXT Regular expression to search in both name and test --skip-error Hide tests in errors due to connectivity issue --help Show this message and exit. ``` The `--search` option permits filtering based on a regular expression pattern in both the hostname and the test name. The `--skip-error` option can be used to exclude tests that failed due to connectivity issues or unsupported commands. ### Example ```bash anta nrfu text --tags LEAF --search DC1-LEAF1A ``` [![anta nrfu text results](../imgs/anta-nrfu-text-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-text-output.png) ## Performing NRFU with table rendering The `table` command under the `anta nrfu` namespace offers a clear and organized table view of the test results, suitable for filtering. It also has its own set of options for better control over the output. ### Command overview ```bash anta nrfu table --help Usage: anta nrfu table [OPTIONS] ANTA command to check network states with table result Options: -d, --device TEXT Show a summary for this device -t, --test TEXT Show a summary for this test --group-by [device|test] Group result by test or host. default none --help Show this message and exit. ``` The `--device` and `--test` options show a summarized view of the test results for a specific host or test case, respectively. The `--group-by` option show a summarized view of the test results per host or per test. ### Examples ```bash anta nrfu --tags LEAF table ``` [![anta nrfu table results](../imgs/anta-nrfu-table-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-table-output.png) For larger setups, you can also group the results by host or test to get a summarized view: ```bash anta nrfu table --group-by device ``` [![anta nrfu table group_by_host_output](../imgs/anta-nrfu-table-group-by-host-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-table-group-by-host-output.png) ```bash anta nrfu table --group-by test ``` [![anta nrfu table group_by_test_output](../imgs/anta-nrfu-table-group-by-test-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-table-group-by-test-output.png) To get more specific information, it is possible to filter on a single device or a single test: ```bash anta nrfu table --device spine1 ``` [![anta nrfu table filter_host_output](../imgs/anta-nrfu-table-filter-host-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-table-filter-host-output.png) ```bash anta nrfu table --test VerifyZeroTouch ``` [![anta nrfu table filter_test_output](../imgs/anta-nrfu-table-filter-test-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-table-filter-test-output.png) ## Performing NRFU with JSON rendering The JSON rendering command in NRFU testing is useful in generating a JSON output that can subsequently be passed on to another tool for reporting purposes. ### Command overview ```bash anta nrfu json --help Usage: anta nrfu json [OPTIONS] ANTA command to check network state with JSON result Options: -o, --output FILE Path to save report as a file [env var: ANTA_NRFU_JSON_OUTPUT] --help Show this message and exit. ``` The `--output` option allows you to save the JSON report as a file. ### Example ```bash anta nrfu --tags LEAF json ``` [![anta nrfu json results](../imgs/anta-nrfu-json-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-json-output.png) ## Performing NRFU with custom reports ANTA offers a CLI option for creating custom reports. This leverages the Jinja2 template system, allowing you to tailor reports to your specific needs. ### Command overview ```bash anta nrfu tpl-report --help Usage: anta nrfu tpl-report [OPTIONS] ANTA command to check network state with templated report Options: -tpl, --template FILE Path to the template to use for the report [env var: ANTA_NRFU_TPL_REPORT_TEMPLATE; required] -o, --output FILE Path to save report as a file [env var: ANTA_NRFU_TPL_REPORT_OUTPUT] --help Show this message and exit. ``` The `--template` option is used to specify the Jinja2 template file for generating the custom report. The `--output` option allows you to choose the path where the final report will be saved. ### Example ```bash anta nrfu --tags LEAF tpl-report --template ./custom_template.j2 ``` [![anta nrfu json results](../imgs/anta-nrfu-tpl-report-output.png){ loading=lazy width="1600" }](../imgs/anta-nrfu-tpl-report-output.png) The template `./custom_template.j2` is a simple Jinja2 template: ```j2 {% for d in data %} * {{ d.test }} is [green]{{ d.result | upper}}[/green] for {{ d.name }} {% endfor %} ``` The Jinja2 template has access to all `TestResult` elements and their values, as described in this [documentation](../api/result_manager_models.md#testresult-entry). You can also save the report result to a file using the `--output` option: ```bash anta nrfu --tags LEAF tpl-report --template ./custom_template.j2 --output nrfu-tpl-report.txt ``` The resulting output might look like this: ```bash cat nrfu-tpl-report.txt * VerifyMlagStatus is [green]SUCCESS[/green] for DC1-LEAF1A * VerifyMlagInterfaces is [green]SUCCESS[/green] for DC1-LEAF1A * VerifyMlagConfigSanity is [green]SUCCESS[/green] for DC1-LEAF1A * VerifyMlagReloadDelay is [green]SUCCESS[/green] for DC1-LEAF1A ```