Expedient: A Pluggable Platform for GENI Control Frameworks


What do we want from a GENI control framework? It should be:
  1. Simple and Extendible: so that developers can easily add new types of resources.
  2. Convenient to use:so that it helps experimenters rather than be yet another thing they need to learn, configure, and maintain.
  3. Secure and Reliable:so that it conforms to the security policies of the entities that are providing resources to GENI.


The problem with choosing one framework over another is that it usually either limits the types of resources that can be used or it becomes too general and complex to work with. Expedient is a modular platform that solves these problems by acting as a client to multiple control frameworks:
  1. It does not interfere with how resource developers design their resources: Instead of resource developers trying to conform to an API, resource developers are left free to design their resources and the API to access them whichever way they like.
  2. It enables rich user interfaces: Expedient's pluggable architecture allows developers to write user interface plug-ins that are tailored to sets of resource types at a time. For example, one user interface can be tailored to easily manage and request OpenFlow switches connected to PlanetLab nodes through a GUI, while another can allow users to reserve resources through an interpreter.
  3. It simplifies authentication and authorization: Users authenticate themselves with Expedient and Expedient acts as a gateway for all their transactions with resources. If a resource provider does not want to implement authentication and authorization for each user who uses its resources, it can delegate these functions to Expedient. Resource developers only need a simple authentication and authorization mechanism.


Expedient is inspired by travel websites that allow a user to book a flight, hotels, and rental cars all within the same system. It is implemented as Web application using Python and the Django Web framework. It provides simple abstract classes that resource developers can extend to build a plugin for their resource types. It provides project, slice, and user management so that they do not have to worry about it.


Expedient is currently in alpha testing with more features constantly being added. It will be made available to a limited number of researchers after GEC8, and will be made fully available by GEC9.
It currently allows users to reserve OpenFlow and PlanetLab resources. And additional plugins are underway for ProtoGENI and EC2. If you would like to contribute a plugin, please contact us.


For more information, contact "jnaous at stanford * edu".


The documentation for Expedient and tutorials can be found here.


Automatically generated APIs are here.