Skip to content

A web interface to NAPALM (and netmiko) #11

@afourmy

Description

@afourmy

I want to work on implementing a web interface to NAPALM (and netmiko too).
It can be a showcase of napalm for network engineers who are not familiar with python / ansible.

What I will use: Flask, SQLalchemy, Bootstrap, jQuery and maybe some other javascript libraries if need be.

Main functionnalities:

  • a web page to manage devices.
    Device = IP address + operating system + username + password (credentials to log in to the device) and optionally, hostname + secret password.
    A device can be created from a form manually, or by importing an excel file that contains those data, or by importing a .csv file.
    Devices can be deleted as well.

  • a web page for sending script with netmiko
    The user can choose a driver, choose the global_delay_factor, and a protocol (SSH or telnet).
    Then, he writes the script in a text area and the script is sent to the device. A script can be a Jinja2 template, and it will be possible for the user to import a .yaml file to turn the j2 template into a real script.

  • a web page for napalm getters
    the user selects a device and one or more getters, the request is sent to the device and the result is displayed in the webinterface by pretty printing the dictionnary.

  • a web page for napalm configuration functions
    just like with netmiko, the user can write a script (possibly a j2 template along with a yaml file) and send it to the device by using configure_merge or configure_replace. It will also be possible to rollback.

  • a web page to configure a "napalm daemon", that will give the possibility to do certain things on a regular basis, for instance retrieve the configuration of the device every day, or retrieve a given set of getters every hour and store the result somewhere, that sort of things.

the project will be available here: https://github.com/afourmy/e-napalm (I started two days ago as the whole things takes a few days)

Any comment / feedback / ideas on how to improve it or what else can be done is more than welcome !

Note: it won't be finished before Monday as I don't have access to my lab this we, which I need to test it on real devices.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions