Cloudmesh REU Summer Projects
This project will work on thre of them
Project 1: Account Management
Cloudmesh is a project that allows the management of virtual machines in a federated fasion. It can be run in two modes. One is a standalone mode whare the users runs cloudmesh on the local machines. Another mode is a hosted mode where multiple users share a web server through which the virtual machines are managed. One of the important tasks is to integrate users into cloudmesh. As we work closely with FutureGrid we need to make sure that users are imported into cloudmesh. This is currently achieved with an integration to the FutureGrid LDAP server. However it assumes that users and projects are already in that server. The FuturGrid portal provides such an interface. However it is based on an older version of drupal and it is desirable to reimplement the user and project management functionality in cloudmesh. This project will explore (a) how we can design a data model in mongoengine to represent users and projects, (b) identify how we can leverage either django or flask to manage such projects. To address (b) we will first evaluate if we can get a django web application started and identify how to use it. If this turns out to be to difficult, we will fall back to flask.
As part of the management we need to implement a queue in which users are queued for approval, a project queue in which projects are queued and approved by a comittee. A simple backend system written in python will support this task provide an abstraction that is outside of the web interface.
Project 2: django
Cloudmesh contains a webserver that uses flask as a backend. Although flask is very powerful and easy to use, django is more comonly used in the cloud community. This also includes Openstack Horizon that uses flask. This project will explore how to use django instead of flask for the development of cloudmesh. As such we need an easy install and usage documentation that will be developed as part of this project. The django documentation is quite extensive and the main task will include the development of simple guides and examples that can be reused by the cloudmesh team to transition or clone the flask framework to django. The examples will develop concrete views and models utilizing mongodb to visualize contents form the database. Simple guides will be developed that tell others ow to do this.
Project 3: Reservation
Cloudmesh is a project that includes the ability to conduct bare metal provisioning. It is important that this is supported in a multiuser environment. We will be developing for this a time based reservation system in which users will have access to resources based on time slices. This project will develop such a reservation system as a commandline tool and also as a GUI (if time permits while leveraging the work done by von Laszewski for this project). As a result we will have a simple commandline tool that allows the administrator or user to chose a reservation or query the system to find a suitable reservation. Limits will be put in place so that users do not reserve too many resources and block the sytems while not allowing others to use it. The system will have an abstract plugin that allows the integration of a real bare metal provisioner. Howevre for this project, we will simulate it and focus only on the management of the reservation itself and not how they are used or how machines are leveraged for the actual bare metal provisioning. Convemient tables and views are developed as part of the GUI development which is doable as the GUI framework is already included in the project developed by von Laszewski.