netpalm makes it easy to push and pull state from your apps to your network by providing multiple southbound drivers, abstraction methods and modern northbound interfaces such as open API3 and REST webhooks.
Apcela Because Enterprise Speed Matters |
Delivering the power to communicate |
Maybe you?
|
Leveraging best of breed open source network components like napalm, netmiko, ncclient and requests, netpalm makes it easy to abstract from any network devices native telnet, SSH, NETCONF or RESTCONF interface into a modern model driven open api 3 interface.
Taking a platform based approach means netpalm allows you to bring your own jinja2 config, service and webhook templates, python scripts and webhooks for quick adoption into your existing devops workflows.
Built on a scalable microservice based architecture netpalm provides unparalleled scalable API access into your network.
netpalm acts as a ReST broker and abstraction layer for NAPALM, Netmiko, NCCLIENT or a Python Script.
netpalm uses TextFSM or Jinja2 to model and transform both ingress and egress data if required.
netpalm is underpinned by a container based scale out architecture for all components.
netpalm provides domain focused queueing strategy for task execution on network equipment.
Every netpalm container can be scaled in and out as required.
Kubernetes or Swarm is recommended for any large scale deployments.
To scale out the basic included compose deployment use the docker-compose
command
docker-compose scale netpalm-controller=1 netpalm-worker-pinned=2 netpalm-worker-fifo=3
Jinja2
Parsers
Webhooks
Scripts
Queueing
Caching
Scaling
We could show you examples for days, but we recommend playing with the online postman collection to get a feel for what can be done. We also host a public instance where you can test netpalm via the Swagger UI.
getconfig
methodnetpalm also supports all arguments for the transport libs, simply pass them in as below
netpalm supports model driven service templates, these self render an OpenAPI 3 interface and provide abstraction and orchestration of tasks across many devices using the get/setconfig or script methods.
The below example demonstrates basic SNMP state orchestration across multiple devices for create, retrieve, delete
netpalm is integrated into http://textfsm.nornir.tech so you can ingest your templates with ease
netpalm comes with a Postman Collection and an OpenAPI based API with a SwaggerUI located at http://localhost:9000/
after starting the container.
Supports the following per-request configuration (/getconfig
routes only for now)
redis_task_result_ttl
which defaults to 500){ "cache": { "enabled": true, "ttl": 30, "poison": false } }
Supports the following global configuration:
"redis_cache_enabled": true
"redis_cache_default_timeout": 300
Any change to the request payload will result in a new cache key EXCEPT:
{ "x": 1, "y": 2 } == {"x":1,"y":2}
{"x":1,"y":2} == {"y":2,"x"1}
fifo
vs pinned
queueing strategyAny call to any /setconfig
route for a given host:port will poison ALL cache entries for that host:port
/setconfig/dry-run
of courseEdit the config/config.json
file to change any parameters ( see defaults.json
for example )
sudo apt-get install docker.io
sudo apt-get install docker-compose
git clone https://github.com/tbotnz/netpalm.git
cd netpalm
sudo docker-compose up -d --build
9000
under your docker hosts IP.http://$(yourdockerhost):9000
We are open to contributions, before making a PR, please make sure you've read our CONTRIBUTING.md
document.
You can also find us in the channel #netpalm
on the networktocode Slack.
Owner
Contributors
Categories
Programming Languages
PythonLicense
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community