Cepheus

Roadmap

 * Scheduler + Databased (MySQL)
 * Web Frontend
 * REST API

Scheduling Process

 * 1) API Request
 * 2) Do we currently have resources to service?
 * 3) If yes -&gt; pick first vm
 * 4) * mark active and timeframe
 * 5) * power on if not already on
 * 6) * retrieve connection details
 * 7) * increase resource in use count
 * 8) If no -&gt; Determine next available VM that can service request
 * 9) * Mark for use in {x} minutes
 * 10) * Set callback to send e-mail to user and complete step 3 now that we have sufficient resources
 * 11) Return the user the associated details depending on Questions 2 - JSON to web interface

Admin Interface

 * Pool management
 * Add VM's to pool
 * Modify types of requests
 * Reset user requests and make overrides
 * Resource Overview

Database Structure

 * User TABLE
 * User ID
 * Current Allocation
 * Request count
 * Resource TABLE
 * id
 * name
 * type
 * host
 * status
 * time_requested
 * length

Improvements

 * Add advance reservation

Packages Required

 * Python-libvirt
 * Flask
 * PeeWee Python ORM
 * APScheduler
 * python 2.7
 * Python-gobject
 * gobject-introspection
 * simplejson (python)
 * MySQL-python

Install Guide

 * 1) Serve up the static folder with your choice of webserver with php support
 * 2) Edit php variables in static/authenticate.php to fit your LDAP/AD environment
 * 3) Place the root of the Flask application in api @ /api
 * 4) Set all the variables to your environment in api/scheduler/config.py
 * 5) Create the database tables by executing
 * 6) Add resources using
 * 7) * Optional: Add users via  for statistics tracking. username and ID should correlate with LDAP.


 * 1) Profit.
 * 1) Profit.