diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d9192b --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Pydev +.project +.pydevproject +.settings/ +.metadata diff --git a/alexandria/alexandria.conf b/alexandria/alexandria.conf new file mode 100644 index 0000000..0ca2580 --- /dev/null +++ b/alexandria/alexandria.conf @@ -0,0 +1,20 @@ +[alexandria] +port=80 + +[itop] +drvtype=cmdb +endpoint=http://itop/rest +loginItop=itopuser +passwordItop=itoppassword + +[redfish] +drvtype=hw + +[ironic] +drvtype=hw +endpoint=http://ironic/rest + +[mondorescue] +drvtype=hw +paramMondo1 +paramMondo2 diff --git a/alexandria/app.py b/alexandria/app.py new file mode 100644 index 0000000..bcd84b9 --- /dev/null +++ b/alexandria/app.py @@ -0,0 +1,50 @@ +# coding=utf-8 + +from flask import Flask +#from flask import Response +from flask import jsonify +import config + + +# Vars +alexandria_version="0.1" + +# Configuration file +conf_file = config.AlexandriaConfiguration('alexandria.conf') + +# Initialise Flask +app = Flask(__name__) +app.debug = True + +@app.route('/drivers', methods = ['GET']) +def api_drivers(): + data = {'drivers' : conf_file.get_drivers()} + resp = jsonify(data) + resp.status_code = 200 + return resp + +@app.route('/drivers/<driver_name>') +def api_driver(driver_name): + data = {driver_name : conf_file.get_driver_info(driver_name)} + resp = jsonify(data) + resp.status_code = 200 + return resp + +@app.route('/', methods = ['GET']) +def api_root(): + global alexandria_version + data = { + 'Service' : 'Alexandria', + 'Version' : alexandria_version + } + + resp = jsonify(data) + resp.status_code = 200 + + resp.headers['Link'] = 'http://luisrei.com' + + return resp + + +if __name__ == '__main__': + app.run() diff --git a/alexandria/config.py b/alexandria/config.py new file mode 100644 index 0000000..cd6ebab --- /dev/null +++ b/alexandria/config.py @@ -0,0 +1,16 @@ +# coding=utf-8 + +import ConfigParser + + +class AlexandriaConfiguration(object): + + def __init__(self, configuration_file): + self.config = ConfigParser.ConfigParser(allow_no_value=True) + self.config.read(configuration_file) + + def get_drivers(self): + return self.config.sections() + + def get_driver_info(self,driver): + return self.config.options(driver) \ No newline at end of file