GithubHelp home page GithubHelp logo

dcmattyg / brahma-project Goto Github PK

View Code? Open in Web Editor NEW
2.0 5.0 1.0 1.77 MB

Brahma Angular Frontend and NodeJS/Express Backend

License: Other

Dockerfile 0.21% JavaScript 2.11% TypeScript 28.68% HTML 24.73% CSS 0.03% Python 36.48% Shell 0.71% SCSS 7.04%

brahma-project's Introduction

brahma

Cisco ACI deployment...SIMPLIFIED!

Business/Technical Challenge

One of the most challenging hurdles for customers to adopting ACI as a technology, is the initial setup/configuration of ACI...implementing networking with a GUI when the customer has used CLI based configurations for many times decades.

This project is being developed to provide a more seamless transition to ACI for customers by simplifying the initial setup, taking the vast majority of the most common implementation requirements of customers and making all of that complexity disappear.

You want ACI for your software-define networking? You don't care about every little setting and just want it up and running quickly, without clicking between dozens of different tabs and windows? Brahma is for YOU!

Proposed Solution

Brahma provide an EXTREMELY easy to use CLI and SaaS interface that takes the unfamiliar feeling of ACI away, and replaces it with a sense of satisfaction knowing that you have the best SDN in the world up and running is mere minutes!

Just create a token with CLI, login to the SaaS dashboard, configure, and apply!

Cisco Products Technologies/ Services

Our solution will levegerage the following Cisco technologies

Team Members

Solution Components

Brahma is comprised of two major componest; a CLI front-end, and a SaaS back-end.

The brahma-cli component is written in Python. Python was chosen because Brahma leverages the ACI Cobra SDK to read and apply configuration to ACI environments. Python made it extremely simply to integrate the components together. The brahma-cli also uses ArgParse, so it can be used much like many of your favorite CLI's from other vendors (AWS as an example).

The SaaS back-end is written in Angular (Javascript) and served out via NodeJS. Brahma also uses the Cisco-UI kit to skin the dashboard so that it looks and feels like many other Cisco UI'a. Angular made rapid development a snap as the Angular CLI can quickly build out skeleton framework in a single command, as well as expand with additional components & services in a similar fashion. NodeJS enables a simple API interface for both the brahma-cli as well as the internal web services to communicate.

All of these components can be nicely containerized allowing extreme ease in distributing and maintaining the Brahma code/program. Docker-Compose adds yet another level where Docker networks and persistent volumes can also be spun up simultaneously so all of the many Brahma components can go from zero to fully running in about a minute.

All data is stored in a MongoDB database that is also running in Docker via Docker-Compose. Since Brahma is dealing with JSON formats and API calls, a document DB such as MongoDB was the ideal choice. Not to mention the phenomenal support & integration with NodeJS.

CLI Usage (after server below is operational)

  1. Run 'brahma-cli -n' (create a new Brahma token)
  2. Navigate to local running SaaS service and paste in your token
  3. Throw your config settings into the wizard and save
  4. Run 'brahma-cli -a' to apply the settings to ACI
  5. Done!

Prerequisites

  • Docker 18.x (or higher)
  • Docker-Compose 1.25.x (or higher)
  • Node 8.x (or higher)
  • Angular CLI 7.x (or higher)
  • Python 3.x
  • ACI Cobra SDK (https://<apic>/cobra/_downloads/)

Installation

For Server:
git clone https://github.com/DCMattyG/brahma-project.git
cd brahma-project

npm install -g @angular/cli npm install

pushd server npm install popd

sudo docker volume create mongo_data sudo docker volume create mongo_config ./brahma-server.sh -compose -up

For CLI:
virtualenv -p python3 venv source venv/bin/activate pushd brahma-project/cli python3 setup.py install popd

For Cobra SDK and ACI Models (downloaded from APIC): pip install acicobra-4.2... acimodel-4.2...

Environment Variables for Testing:
export BRAHMA_URL=<url> (e.g. localhost)
export BRAHMA_PORT=<port> (e.g. 3000)

Documentation

License

Provided under Cisco Sample Code License, for details see LICENSE

Code of Conduct

Our code of conduct is available here

Contributing

See our contributing guidelines here

brahma-project's People

Contributors

dcmattyg avatar eti-tme-tim avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

gve-vse-tim

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.