populated compute API
3 files changed
tree: d7d6ef0ba172a3a04149d177e3a360e9fbea9332
  1. .gitignore
  2. LICENSE
  3. README.md
  4. emuvim/
README.md

emulator-strawman

(c) 2015 by Manuel Peuster

emu-vim

Requirements

  • needs the latest Dockernet to be installed in the system
  • the wrapper uses standard Python imports to use the Dockernet modules
  • Uses ZeroMQ based RPC to open a cloud-like interface that can be used by a demo CLI client
  • pip install import zerorpc
  • This will be replaced / extended by a REST API later

Project structure

  • emuvim/ all emulator code
  • api/ Data center API endpoint implementations (zerorpc, OpenStack REST, ...)
  • cli/ CLI client to interact with a running emulator
  • dcemulator/ Dockernet wrapper that introduces the notion of data centers and API endpoints
  • test/ Unit tests
  • example_topology.py An example topology script to show how topologies can be specified

Run

  • First terminal:
  • sudo python example_topology.py
  • Second terminal:
  • TODO add CLI commands here (e.g. request the start of a new compute resource)

TODO

  • DCemulator
  • correctly start and connect new compute resources at runtime
  • remove and disconnect compute resources at runtime
  • do IP management for new containers
  • list active compute resources
  • Cloud-like reference API with CLI for demonstrations
  • Write CLI client
  • Start compute
  • Stop compute
  • Re-factor endpoint API so that API objects can be more or less statless (ask DCEmulator for available DCs instead of maintaining a own list)
  • Create an Ansible-based automatic installation routine
  • Add resource constraints to datacenters
  • Check if we can use the Mininet GUI to visualize our DCs?

Features

  • Define a topology (Python script)
  • Add data centers
  • Add switches and links between the,
  • Define API endpoints in topology
  • call startAPI from topology definition and start it in a own thread
  • make it possible to start different API endpoints for different DCs