Code Monkey home page Code Monkey logo

hackathon-2017's People

Contributors

dbarrosop avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

termlen0

hackathon-2017's Issues

kcelenza ideas for hackathon

Not sure if I should break these up, the first one is the one I plan on working on, and the others are ideas for whomever.

File Uploading

I worked on this last hackathon, but there was not a consensus on the methods. Since then @ktbyers has a demo here: https://github.com/ktbyers/napalm-ios/tree/file_copy

My plan for the hackathon is to finally work on this.

Documentation

Documentation could always be updated and it is a great place to start if you do not have a ton of programming experience.

Config Replace/Merge Methods

What goes on "under the hood" is not well understood to the audience abroad. It would be great to have a manual example of what is happening. As an example, show archive config differences <base_file> <new_file> and show common pitfalls associated.

Driver Overview

Build out https://napalm.readthedocs.io/en/latest/support/index.html#general-support-matrix to include the backend connection mechanism and additional caveats.

Writing Output of Commands/Offline mode

I think it would be helpful to be able to save the configuration of the command output (api or ssh), to be usable later. Once that is done, it would be equally helpful to run in an offline mode.

This has been brought up here: napalm-automation/napalm-base#296 but there has not been final consensus on what the final method should be. (would be good to define this)

Normalize Interface

I currently do this in post-processing, but would be nice to have an option to return an normalized interface. This is essentially what I do: https://github.com/itdependsnetworks/Scripts/blob/master/normalize_interface/normalize_interface.py

Supported Getters

Always good to update the supported getters: https://napalm.readthedocs.io/en/latest/support/index.html#getters-support-matrix

Anywhere there is an X, a method is missing, and could use an update.

A web interface to NAPALM (and netmiko)

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.

grpc proxy

Write a proxy service that implements a northbound grpc API and leverages on napalm-yang as southbound API to interact with the network.

Note: Probably too big of a project but would be cool to have some POC working. Also, I might write this one in golang* if I find an easy way to leverage napalm-yang from a go application.

* Reasons for golang are: better coroutines support, better grpc/protobuf support, I like it more than python.

Idea for Hackathon - Writing Output of Commands/Offline mode

Writing Output of Commands/Offline mode

I think it would be helpful to be able to save the configuration of the command output (api or ssh), to be usable later. Once that is done, it would be equally helpful to run in an offline mode.

This has been brought up here: napalm-automation/napalm-base#296 but there has not been final consensus on what the final method should be. (would be good to define this)

napalm-yang implement openconfig models

As you probably already knows napalm-yang is a framework to translate native configuration from a device to openconfig models and viceversa. Some examples:

There are plenty of models/vendors to implement so if you want to work on any of those just shout :D

poll

https://napalm-automation.net/hackathon-2017-summary/

So, here are the candidate, just add a comment with the corresponding emoji to cast your vote:

  • ๐Ÿ‘ afourmy worked on e-napalm an awesome web UI for napalm and netmiko. I totally recommend this one.
  • ๐Ÿ’ฏ ogenstad worked on automating the process of turning ansible "docstrings" into actual documentation. You can see the result here
  • ๐Ÿ”ข tcaiazza started working on a napalm-yang parser for NXOS. It's still WIP but I am sure he will finish it soon ;)
  • ๐Ÿฅ‡ ktbyers started working on a testing environment to test config operations. Testing these operations has always been difficult so having this environment is certainly going to be useful.
  • ๐Ÿ† itdependsnetworks worked on many things, most notably on bringing a set of helper functions to standardize interface names across commands.
  • โœ‹ dbarrosop built a POC for an automation framework built on python to be used in python. You can find the project here

Ansible documentation

All of the modules in https://github.com/napalm-automation/napalm-ansible have documentation in the same way that the modules within Ansible does.

However unlike Ansible the documentation isn't available online outside of the source code. For the hackathon we could use this information to publish the documentation on https://napalm.readthedocs.io/en/latest/.

For this to happen we need to create tests to validate format of the current documentation and create a hook in Travis so that a new release of the Ansible modules would trigger a new build of the documentation for the https://github.com/napalm-automation/napalm repo.

Idea for Hackathon - Documentation

Documentation

Documentation could always be updated and it is a great place to start if you do not have a ton of programming experience.

Config Replace/Merge Methods

What goes on "under the hood" is not well understood to the audience abroad. It would be great to have a manual example of what is happening. As an example, show archive config differences <base_file> <new_file> and show common pitfalls associated.

Driver Overview

Build out https://napalm.readthedocs.io/en/latest/support/index.html#general-support-matrix to include the backend connection mechanism and additional caveats.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.