Implement REST API example with Flask.

This commit is contained in:
Uggla 2015-06-26 00:33:57 +02:00
parent 99c22b0d1e
commit 6bc505011f
4 changed files with 148 additions and 0 deletions

62
.gitignore vendored Normal file
View File

@ -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

View File

@ -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

50
alexandria/app.py Normal file
View File

@ -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()

16
alexandria/config.py Normal file
View File

@ -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)