Skip to main content

Network Automation and Programmability Abstraction Layer with Multivendor support

Project description

PyPI PyPI versions Actions Build Ruff

NAPALM

NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support) is a Python library that implements a set of functions to interact with different router vendor devices using a unified API.

NAPALM logo

NAPALM supports several methods to connect to the devices, to manipulate configurations or to retrieve data.

Supported Network Operating Systems

Please check the following link to see which devices are supported. Make sure you understand the caveats.

Documentation

Before using the library, please read the documentation at: Read the Docs

You can also watch a live demo of NAPALM to see what it is and what it can do for you.

Install

pip install napalm

Note: Beginning with release 5.1.0 and later, NAPALM offers support for Python 3.9+ only.

Note: Beginning with release 5.0.0 and later, NAPALM offers support for Python 3.8+ only.

Note: Beginning with release 4.0.0 and later, NAPALM offers support for Python 3.7+ only.

Upgrading

We plan to upgrade napalm as fast as possible. Adding new methods and bugfixes. To upgrade napalm it's a simple as repeating the steps you performed while installing but adding the -U flag. For example:

pip install napalm -U

We will be posting news on our slack channel and on Twitter.

Automation Frameworks

Due to its flexibility, NAPALM can be integrated in widely used automation frameworks.

Ansible

Please check napalm-ansible for existing Ansible modules leveraging the NAPALM API. Make sure you read the documentation and you understand how it works before trying to use it.

SaltStack

Beginning with release code named Carbon (2016.11), NAPALM is fully integrated in SaltStack - no additional modules required. For setup recommendations, please see napalm-salt. For documentation and usage examples, you can check the modules documentation, starting from the release notes and this blog post.

StackStorm

NAPALM is usable from StackStorm using the NAPALM integration pack. See that repository for instructions on installing and configuring the pack to work with StackStorm. General StackStorm documentation can be found at https://docs.stackstorm.com/, and StackStorm can be easily spun up for testing using Vagrant or Docker.

Contact

Slack

Slack is probably the easiest way to get help with NAPALM. You can find us in the channel napalm on the network.toCode() team.

FAQ

If you have any issues using NAPALM or encounter any errors, before submitting any questions (directly by email or on Slack), please go through the following checklist:

  • Make sure you have the latest release installed. We release very often, so upgrading to the latest version might help in many cases.
  • Double check you are able to access the device using the credentials provided.
  • Does your device meet the minimum requirements?
  • Some operating systems have some specific constraints. (e.g. have you enabled the XML agent on IOS-XR, or the NXAPI feature on NXOS?)
  • Are you able to connect to the device using NAPALM? Check using napalm CLI to get_facts:
$ napalm --vendor VENDOR --user USERNAME --password PASSWORD --optional_args OPTIONAL_ARGS HOSTNAME call get_facts

Where vendor, username, password and hostname are mandatory. Optional arguments are specified as comma separated values.

Example:

$ napalm --vendor junos --user napalm --password dbejmujz --optional_args 'port=12202, config_lock=False' edge01.bjm01 call get_facts

In case you have any errors, please review the steps above - this looks like a problem with your environment setup.

In order to get help faster, when submitting a bug/error make sure to include all the details requested.

News

Blog Posts

Presentations

Podcasts

Authors

Thanks

This project is maintained by David Barroso, Mircea Ulinic, and Kirk Byers and a set of other contributors.

Originally it was hosted by the Spotify organization but due to the many contributions received by third parties we agreed creating a dedicated organization for NAPALM and give a big thanks to Spotify for the support.

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

napalm-5.2.0.tar.gz (218.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

napalm-5.2.0-py3-none-any.whl (261.5 kB view details)

Uploaded Python 3

File details

Details for the file napalm-5.2.0.tar.gz.

File metadata

  • Download URL: napalm-5.2.0.tar.gz
  • Upload date:
  • Size: 218.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for napalm-5.2.0.tar.gz
Algorithm Hash digest
SHA256 9d1250d61e9412542263aa14d20e507fd9f34b0483e9e2719aaa00e2fc6c04da
MD5 6fb4d0421f70328e55bf152e797bf3e2
BLAKE2b-256 20892258ac65b46b80c1ea5cfa5cd9675a02f4e582edbcdd5649296887f5c0a3

See more details on using hashes here.

File details

Details for the file napalm-5.2.0-py3-none-any.whl.

File metadata

  • Download URL: napalm-5.2.0-py3-none-any.whl
  • Upload date:
  • Size: 261.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for napalm-5.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7de60abd0040f22e131487ff0635320342809e2ac1db44d1bf7dd6fc16604467
MD5 1849af5bc0817143514ba1effad69d21
BLAKE2b-256 618417c84987286f7eabc3ce64939558316a39e2747c61620bffda8fa1d4f4b4

See more details on using hashes here.

Supported by

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