Skip to main content

Multi-threaded runner plugin for nornir that prints a cute progress bar.

Project description

nornir_progressbar

published

nornir_progressbar is a runner plugin for turning your task executions into nice-looking tqdm progress bars. It can be used with both of Nornir's standard Runners:

  • SerialRunner
  • ThreadedRunner

Installation

Install the package from PyPi with pip.

pip install nornir-progressbar

Usage

Be sure to register the RunnerPlugin within your Nornir script before using it.

To use the Multi-threaded execution, register the class ThreadedProgressBarRunner:

from nornir_progressbar.plugins.runners import ThreadedProgressBarRunner
from nornir.core.plugins.runners import RunnersPluginRegister
from nornir import InitNornir

RunnersPluginRegister.register("ProgressBar", ThreadedProgressBarRunner)

nr = InitNornir(config_file='sample_config.yaml')

For serial executions, use SerialProgressBarRunner instead:

from nornir_progressbar.plugins.runners import SerialProgressBarRunner
from nornir.core.plugins.runners import RunnersPluginRegister
from nornir import InitNornir

RunnersPluginRegister.register("ProgressBar", SerialProgressBarRunner)

nr = InitNornir(config_file='sample_config.yaml')

Your nornir config file should point to the new runner plugin:

---
inventory:
    plugin: SimpleInventory
    options:
        host_file: "inventory/hosts.yaml"
        group_file: "inventory/groups.yaml"
        defaults_file: "inventory/defaults.yaml"
runner:
    plugin: ProgressBar
    options:
        num_workers: 10

And that's it! Whenever you execute a nornir task, a progress bar will appear for each host in the inventory, incrementing for each host that finishes execution. The name of the task being run is used as the progress bar's description.

Progress bar example

Configuration

The plugin uses tqdm to render the progress bar. Keyword arguments can be passed directly to the tqdm() call by setting them under the plugin options. Adding a 'desc' argument will provide a custom description to the progress bar. Consult tqdm's documentation for all the keyword arguments supported.

---
inventory:
    plugin: SimpleInventory
    options:
        host_file: "inventory/hosts.yaml"
        group_file: "inventory/groups.yaml"
        defaults_file: "inventory/defaults.yaml"
runner:
    plugin: ProgressBar
    options:
        num_workers: 10
        desc: Toto tata
        leave: False

The above configuration yields a single progress bar with description "Toto tata" that gets replaced every time a task finishes execution. Progress bar with description

Use the ascii option to get an ASCII progress bar.

---
inventory:
    plugin: SimpleInventory
    options:
        host_file: "inventory/hosts.yaml"
        group_file: "inventory/groups.yaml"
        defaults_file: "inventory/defaults.yaml"
runner:
    plugin: ProgressBar
    options:
        num_workers: 10
        ascii: True

ASCII Progress Bar

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nornir_progressbar-0.1.1.tar.gz (7.3 kB view details)

Uploaded Source

File details

Details for the file nornir_progressbar-0.1.1.tar.gz.

File metadata

  • Download URL: nornir_progressbar-0.1.1.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for nornir_progressbar-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2b4466db86bd4d249edc71835526351558f823a617489e210ea9383242f405ad
MD5 f4c07d1c6807f95498c12f8576cb781f
BLAKE2b-256 0e432726870573def579136bd1ba05e82894e10b1202b06b8f1715f1529db221

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page