Warning Livedoc is no longer being updated and will be deprecated shortly. Please refer to https://documentation.tjhsst.edu.

Difference between revisions of "Cepheus"

From Livedoc - The Documentation Repository
Jump to: navigation, search
(Created page with "cepheus ======= ## Designed for the TJ Computer Systems Lab ## Roadmap - Scheduler + Databased (MySQL) - Web Frontend - REST API ## Scheduling Process 1. API Request 2. Do w...")
 
Line 1: Line 1:
cepheus
+
= cepheus =
=======
 
## Designed for the TJ Computer Systems Lab
 
  
## Roadmap
+
== Designed for the TJ Computer Systems Lab ==
- Scheduler + Databased (MySQL)
 
- Web Frontend
 
- REST API
 
  
## Scheduling Process
+
== Roadmap ==
1. API Request
 
2. Do we currently have resources to service?
 
3. If yes -> pick first vm
 
    - mark active and timeframe
 
    - power on if not already on
 
    - retrieve connection details
 
    - increase resource in use count
 
4. If no -> Determine next available VM that can service request
 
    - Mark for use in {x} minutes
 
    - Set callback to send e-mail to user and complete step 3 now that we have sufficient resources
 
5. Return the user the associated details depending on Questions 2 - JSON to web interface
 
  
## Admin Interface
+
* Scheduler + Databased (MySQL)
- Pool management
+
* Web Frontend
    - Add VM's to pool
+
* REST API
    - Modify types of requests
 
    - Reset user requests and make overrides
 
- Resource Overview
 
  
## Database Structure
+
== Scheduling Process ==
- User TABLE
 
    - User ID
 
    - Current Allocation
 
    - Request count
 
  
- Resource TABLE
+
# API Request
    - id
+
# Do we currently have resources to service?
    - name
+
# If yes -> pick first vm
    - type
+
#* mark active and timeframe
    - host
+
#* power on if not already on
    - status
+
#* retrieve connection details
    - time_requested
+
#* increase resource in use count
    - length
+
# If no -> Determine next available VM that can service request
 +
#* Mark for use in {x} minutes
 +
#* Set callback to send e-mail to user and complete step 3 now that we have sufficient resources
 +
# Return the user the associated details depending on Questions 2 - JSON to web interface
  
## Improvements
+
== Admin Interface ==
- Add advance reservation
 
  
## Packages Required
+
* Pool management
- Python-libvirt
+
** Add VM's to pool
- Flask
+
** Modify types of requests
- PeeWee Python ORM
+
** Reset user requests and make overrides
- APScheduler
+
* Resource Overview
- python 2.7
 
- Python-gobject
 
- gobject-introspection
 
- simplejson (python)
 
- MySQL-python
 
  
## Install Guide
+
== Database Structure ==
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
+
* User TABLE
3.  Place the root of the Flask application in api @ /api ```Suggested method: Apache ProxyPass```
+
** User ID
4.  Set all the variables to your environment in api/scheduler/config.py
+
** Current Allocation
5.  Create the database tables by executing ```createtables.py```
+
** Request count
6.  Add resources using ```createresource.py```
+
* Resource TABLE
    - Optional: Add users via ```createuser.py``` for statistics tracking. username and ID should correlate with LDAP.
+
** id
7.  ...
+
** name
8.  Profit.
+
** 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 ==
 +
 
 +
# Serve up the static folder with your choice of webserver with php support
 +
# Edit php variables in static/authenticate.php to fit your LDAP/AD environment
 +
# Place the root of the Flask application in api @ /api <code>Suggested method: Apache ProxyPass</code>
 +
# Set all the variables to your environment in api/scheduler/config.py
 +
# Create the database tables by executing <code>createtables.py</code>
 +
# Add resources using <code>createresource.py</code>
 +
#* Optional: Add users via <code>createuser.py</code> for statistics tracking. username and ID should correlate with LDAP.<br />
 +
# ...
 +
# Profit.

Revision as of 19:55, 7 October 2013

cepheus

Designed for the TJ Computer Systems Lab

Roadmap

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

Scheduling Process

  1. API Request
  2. Do we currently have resources to service?
  3. If yes -> pick first vm
    • mark active and timeframe
    • power on if not already on
    • retrieve connection details
    • increase resource in use count
  4. If no -> Determine next available VM that can service request
    • Mark for use in {x} minutes
    • Set callback to send e-mail to user and complete step 3 now that we have sufficient resources
  5. 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 Suggested method: Apache ProxyPass
  4. Set all the variables to your environment in api/scheduler/config.py
  5. Create the database tables by executing createtables.py
  6. Add resources using createresource.py
    • Optional: Add users via createuser.py for statistics tracking. username and ID should correlate with LDAP.
  7. ...
  8. Profit.