CHANGES
1. Cleaned up base installation requirement leaving only nornir, nornir-salt and psutil.
2. Added installation flavors:
- dev - packages for development
- prodmin - minimum set of tested packages for production use to interact with devices over NETCONF, SSH or RESTCONF using Ncclient, Netmiko and requests respectively
- prodmax - set of tested packages to incorporate support of all salt-nornir supported features
3. Nornir Proxy Module render and download function changed, now, instead of throwing error and stopping altogether, new behavior is to continue with task execution but exclude failed hosts, once task completed, failed hosts added back to the results with exception details
4. Previously, when calling `nr.cfg_gen`, `nr.cfg` or `nr.cli` with filename argument pointing to non existing file it returns traceback, now it returns errors on a per-host basis and continue execution for non failed hosts. This is the result of implementing change 3.
5. `nr.workflow` updated to include hard requirement for global filter options to be set if proxy minion `nornir_filter_required` parameter is True, if `nornir_filter_required` is True, and no filters given in workflow global options, it will fail to target any hosts and will exit with error.
6. Updated runner behavior to identify hosts to minions mapping before sending tasks out, that allows to target only minions that actually manage given hosts.
7. Runner `nr.event` replaced `mode` argument with `progress` argument
8. Execution module - added `user` key to job identity dictionary to include it in events emitted by SaltEventProcessor.
9. State module, updated to generate uuid jid for the tasks for jobs tracking, by default state modules does not get jid id assigned, also, extracted user name value from __opts__ to include it in identity dictionary.
10. `nr.event` runner extended to display user name for the progress `bars` and `logs` modes
11. Dependency updated `nornir-scrapli==2022.1.30a1`, previously was `nornir-scrapli==2021.7.30`, reason - `scrapli-netconf==2022.1.30a1` fails to work with `nornir-scrapli==2021.7.30` netconf tasks if doing custom tasks.
12. Changed requirement from `psutil==5.8.*` to `psutil>=5.8.*, <=5.9.*` to allow newer psutil version, tested it with 3002 and 3004 SaltStack versions
BUGS
1. `nr.workflow` state module updated to exit with comment if global filters option provided but matched no hosts, previously it was continuing with execution returning empty report
2. Change 3 fixed `nr.workflow` if first step is to get file from master and it fails for the host, this error was not included in report.
3. Change 3 fixed `nr.workflow` if first step fails and it targeted only one host, empty report produced
4. Nornir Proxy module `list_hosts` function updated to honor `nornir_filter_required` parameter to raise an error if no filters provided but `nornir_filter_required` set to true.
5. Fixing bug 4 fixed issue with nr.workflow when it was continuing on with tasks execution when `nornir_filter_required` was True but no global filters provided in options.
6. Runner nr.event was fixed to better handle events for failed hosts, previously it was failing with key error
7. Runner fixed bug to raise command execution error when no minions matched by tgt and tgt_type
8. Fixed docs spelling using pylint spelling check plugin (pyenchant) and sphinxcontrib-spelling RST plugin
9. When was running tasks with runner other than RetryRunner netmiko_send_command failed with - `TypeError: send_command() got an unexpected keyword argument 'connection_name'`, added check if not using RetryRunner to remove `connection_name` argument from task kwargs.
FEATURES
1. Added support for `nr.workflow` to produce text tables in github, jira or some pretty format out of workflow report summary section using tabulate module.
2. Proxy module `render` function updated to support arguments that refer to dictionary keyed by host name with values being config templates to render.
3. Added new runner function nr.cfg that supports loading devices configuration from directory with files or dictionary, it also supports interactive mode allowing operator to control tasks execution.
4. Updated proxy module and SaltEvetProcessor to send worker_id in events
5. Created runner `nr.make_plugin` function to create boilerplate code for various Nornir Plugins, added Nornir `task` and `test` - TestsProcessor custom function
6. Runner module added `bars` progress mode to `nr.event`, as a result `nr.call` and `nr.cfg` also support `bars` mode. bars mode uses Rich library progress bars.
7. `nr.workflow` added support to specify common step `kwargs` in `options` section, this is to simplify adding common arguments to all steps, like `event_progress`
8. Added new stats - `tasks_completed` and `tasks_failed` counters, as well as `worker_tasks_completed` and `worker_tasks_failed` to `nr.nornir stats` and `nr.nornir workers stats`
functions output respectively.
9. Execution module table `brief` and `terse` format now support headers argument e.g. `table=brief headers="host, result"`
10. Added `nr.nornir connect` function to be able to connect to devices on demand, as well as to retry various connection parameters such as credentials, port number etc. using `reconnect` argument list
11. Execution module tasks added support for RetryRunner task parameters - `run_connect_retry`, `run_task_retry`, `run_creds_retry`, `run_num_workers`, `run_num_connectors` to influence Nornir task run logic
12. Replaced cp.get_file_str with cp.get_url for downloading functions to allow sourcing files from any of supported URL schemes: salt://, http://, https://, ftp://, s3://, swift:// and file:// (local filesystem). Updated proxy module and execution modules to provide that support.