Giter VIP home page Giter VIP logo

naas's Introduction

Hello there ๐Ÿ‘‹

My name is Brett Lykins, and my pronouns are He/Him.

I live in Fairfax, Virginia, USA.

Image of Brett in front of some trees

I am the Director of Product Management at OpsMill.

OpsMill Logo

Quick facts about me

One of these is a lie, and you should try to guess which one.

  • ๐Ÿค“ I am a new nerd who loves knowing how things work and how they're put together
  • ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ๐ŸŽธ I am passionate about technology and music, but after an unsuccessful year at music school I realized I should probably keep technology as a career and music as a hobby
  • ๐Ÿ’ผ I spent 15 years working in Networking and Security before I began to use Python and Go to make my life easier
  • โœ๐Ÿป ๐ŸŽ™ I write and speak about the intersection of these things to help organizations solve IT infrastructure problems

Current projects

These are projects that I am (somewhat) actively working on.

  • cisshgo: A small, fast, concurrent SSH server to emulate network equipment (for example, Cisco IOS) for testing purposes.
  • Leanpub Multi Action: A Github Action I built for interacting with the API of Leanpub in your authoring workflows.

Past projects

These are projects I was actively working on in the past, but I've not touched much in recent months (or years ๐Ÿ˜…).

  • NAAS: Netmiko as A Service is an API-driven wrapper for the popular Netmiko Python library for interacting with network devices.
  • Stockpiler: A Nornir-based tool for backing up network device configurations.

Drumroll please

The lie was the first one, if you guessed right here is a cookie: ๐Ÿช

I am not a new nerd, but a lifelong nerd.

And here are the receipts.

My first computer:

A picture of Brett as a diapered-toddler typing on an Apple IIe

Teaching my son that This is the Way:

A picture of Brett and his son in Star Wars costumes

naas's People

Contributors

lykinsbd avatar matt852 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

naas's Issues

Typo

There's a typo in the return output for /send_command/<job_id>. It returns app: "nass", instead of app: "naas"

Add lockout for multiple failures to same device

There is currently a rudimentary authentication failure lockout mechanism for a single user, however this does not catch the instance where different usernames are spamming the same device. We need to catch these and also temporarily lockout all access to that device.

Mechanism will be similar to existing user based lockout, just with the device's IP as the key.

Initial Documentation

Need to create initial set of documentation for starting/running the API.

This would include updated Readme and Contributing docs, as well as setting up a Swagger based API doc.

Add support for pipelining commands

Currently, for every front end API call a user makes, we instantiate a new backend Netmiko connection.

There needs to be a way to pipeline multiple requests by the same user/device pair down an existing connection if any.

Add handling for real TLS Certificate

Currently, while there is some support for using your own cert, there's no built way to actually get that cert/key into the container. Need to plumb that up.

Enhance Redis Connectivity Options

Need to provide some additional Redis options:

  1. Ability to specify Username/PW as well as other options on the redis.Redis redis-py object.
  2. Ability to use existing Redis instance and not spin one up with Docker unless needed.

Passwords are printing in Worker `INFO` level logs

When a job is fetched from the queue, it prints the entire function signature, including any arguments passed to the function. This can include passwords (And does today).

We need to rework credential handling to obfuscate this information in INFO level log output.

prompt or device name returns None

hey, trying to get prompt(devices name) out of send_commands function. sometimes it works and returns the name and some times it returns none.

any help?

Logging in worker process is not formatted well

We're currently using simply logging.basicConfig to setup the loggers, this is making log searches complicated as they're not in the same format as the API container logs.

Need to enhance the logging config to match that of the API via a log formatter.

Fix Payload Parameters To Match Netmiko

Today in payload, we ask for device_type however in Netmiko, this is a platform.

See netmiko.platforms for example.

Need to modify the payload parameter to platform, but as this is a client breaking change, am waiting for v1.0.0 release.

Incorrect return error for send_command

If I run POST send_command with an incorrectly spelled "commands" variable in the payload, or if it's missing, I get a proper 400 error with a proper response.

If I run the same command, but instead incorrectly spell or omit the "ip" variable in the payload, I get a 500 error returned, with only the following:

{
    "message": "Internal Server Error"
}

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.