Giter Site home page Giter Site logo

nautobot-plugin-chatops-meraki's Introduction

Nautobot

Nautobot

Nautobot is a Network Source of Truth and Network Automation Platform built as a web application atop the Django Python framework with a PostgreSQL or MySQL database.

Key Use Cases

1. Flexible Source of Truth for Networking - Nautobot core data models are used to define the intended state of network infrastructure enabling it as a Source of Truth. While a baseline set of models are provided (such as IP networks and addresses, devices and racks, circuits and cable, etc.) it is Nautobot's goal to offer maximum data model flexibility. This is enabled through features such as user-defined relationships, custom fields on any model, and data validation that permits users to codify everything from naming standards to having automated tests run before data can be populated into Nautobot.

2. Extensible Data Platform for Automation - Nautobot has a rich feature set to seamlessly integrate with network automation solutions. Nautobot offers GraphQL and native Git integration along with REST APIs and webhooks. Git integration dynamically loads YAML data files as Nautobot config contexts. Nautobot also has an evolving plugin system that enables users to create custom models, APIs, and UI elements. The plugin system is also used to unify and aggregate disparate data sources creating a Single Source of Truth to streamline data management for network automation.

3. Platform for Network Automation Apps - The Nautobot plugin system enables users to create Network Automation Apps. Apps can be as lightweight or robust as needed based on user needs. Using Nautobot for creating custom applications saves up to 70% development time by re-using features such as authentication, permissions, webhooks, GraphQL, change logging, etc. all while having access to the data already stored in Nautobot. Some production ready applications include:

The complete documentation for Nautobot can be found at Read the Docs.

Questions? Comments? Start by perusing our GitHub discussions for the topic you have in mind, or join the #nautobot channel on Network to Code's Slack community!

Build Status

Branch Status
main Build Status
develop Build Status
next Build Status

Screenshots

Gif of main page


Gif of config contexts


Gif of prefix hierarchy


Gif of GraphQL


Gif of Modes

Installation

Please see the documentation for instructions on installing Nautobot.

Application Stack

Below is a simplified overview of the Nautobot application stack for reference:

Application stack diagram

Plugins and Extensibility

Nautobot offers the ability to customize your setup to better align with your direct business needs. It does so through the use of various plugins that have been developed for network automation, and are designed to be used in environments where needed.

There are many plugins available within the Nautobot Apps ecosystem. The below screenshots are an example of some popular ones that are currently available.

Plugin Screenshots

Golden Config Plugin

Gif of golden config

ChatOps Plugin

Gif of chatops

Device Lifecycle Management Plugin

Gif of DLM

Providing Feedback

The best platform for general feedback, assistance, and other discussion is our GitHub discussions. To report a bug or request a specific feature, please open a GitHub issue using the appropriate template.

If you are interested in contributing to the development of Nautobot, please read our contributing guide prior to beginning any work.

Related projects

Please check out the GitHub nautobot topic for a list of relevant community projects.

Notices

Nautobot was initially developed as a fork of NetBox (v2.10.4). NetBox was originally developed by Jeremy Stretch at DigitalOcean and the NetBox Community.

nautobot-plugin-chatops-meraki's People

Contributors

jedelman8 avatar jeffkala avatar qduk avatar tim-fiola avatar ubajze avatar whitej6 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

whitej6

nautobot-plugin-chatops-meraki's Issues

Inconsistent handling of "no matches found" cases

Expected Behavior

Consistent behavior across chat commands for the case where no matches are found corresponding to a given request.

Observed Behavior

Some commands (get_organizations, get_admins, get_networks, get_firewall_performance, get_camera_recent) return STATUS_FAILED when no matches are found, while other commands (get_devices, get_neighbors) send a message to the user but return STATUS_SUCCESS. Others (get_switchports, get_switchports_status, get_wlan_ssids, get_clients) have no special handling of this case at all.

The traceback is returned if the API key is not defined in Nautobot settings

Environment

  • Python version: any
  • Nautobot version: any
  • Nautobot Chatops Plugin version: any
  • nautobot-plugin-chatops-meraki version: 1.2.0

Expected Behavior

The plugin should read the key either from settings or from an environmental variable as per documentation.

Observed Behavior

If the key is not defined in the settings you get the following traceback:

nautobot_1  | Internal Server Error: /api/plugins/chatops/slack/slash_command/
nautobot_1  | Traceback (most recent call last):
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
nautobot_1  |     response = get_response(request)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
nautobot_1  |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
nautobot_1  |     return self.dispatch(request, *args, **kwargs)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/decorators.py", line 43, in _wrapper
nautobot_1  |     return bound_method(*args, **kwargs)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
nautobot_1  |     return view_func(*args, **kwargs)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/django/views/generic/base.py", line 98, in dispatch
nautobot_1  |     return handler(request, *args, **kwargs)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/nautobot_chatops/api/views/slack.py", line 104, in post
nautobot_1  |     registry = get_commands_registry()
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/nautobot_chatops/workers/__init__.py", line 70, in get_commands_registry
nautobot_1  |     command_func = worker.load()
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2450, in load
nautobot_1  |     return self.resolve()
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2456, in resolve
nautobot_1  |     module = __import__(self.module_name, fromlist=['__name__'], level=0)
nautobot_1  |   File "/usr/local/lib/python3.9/site-packages/nautobot_plugin_chatops_meraki/worker.py", line 26, in <module>
nautobot_1  |     MERAKI_DASHBOARD_API_KEY = settings.PLUGINS_CONFIG["nautobot_plugin_chatops_meraki"]["meraki_dashboard_api_key"]
nautobot_1  | KeyError: 'meraki_dashboard_api_key'

Steps to Reproduce

  1. Install the plugin version 1.2.0
  2. Start Nautobot without the nautobot-plugin-chatops-meraki plugin settings in the configuration file.
  3. Execute the /meraki command.

Docs review

A couple of links to the ChatOps plugin are not working in the README.md file in the section In https://github.com/networktocode-llc/nautobot-plugin-chatops-meraki/blob/develop/README.md#command-setup

  1. The hyperlink in Add a slash command to Slack called /meraki. See the nautobot-chatops installation guide for instructions on adding a slash command to your Slack channel. for the nautobot-chatops installation guide is https://github.com/nautobot/nautobot-plugin-chatops/blob/develop/docs/chat_setup.md. This URL is not found. I think the file name changed.

  2. Same thing as above with linked URL in same section in the sentence You may need to adjust your Access Grants in Nautobot depending on your security requirements.. The hyperlink for Access Grants in Nautobot is https://github.com/nautobot/nautobot-plugin-chatops/blob/develop/docs/chat_setup.md#grant-access-to-the-chatbot, which leads nowhere.

  3. In the README.md file, I recommend describing how to add that environment variable.

The plugin requires the use of a environment variable. See below.

MERAKI_DASHBOARD_API_KEY: Is set to the dashboard API key

Allow API Key to be specified in config or read from file

When deploying this plugin in our environment I store the API key in hashicorp vault. I can query vault in the Nautobot config file very easily. I can also use the vault agent to inject the secret as a file but injecting it as an environment variable is much harder with vault and arguably less secure. I would suggest allowing this variable to be set in the config file where I can configure any way I might want.

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.