There needed to be an extra blank line after the description for the commands to be formatted correctly. Change-Id: Ic7f05d1b63ca1997ff0e96d11455c8cb08883c7f
2.8 KiB
openstack-health
webclient for visualizing test results of OpenStack CI jobs.
Installation
API
Make sure the python dependencies are installed preferably in a virtualenv if doing development work:
pip install -r requirements.txt
Frontend
Installation of the frontend requires Node.js and Gulp.
Ubuntu:
sudo apt-get install nodejs npm nodejs-legacy
sudo npm -g install npm@2
sudo npm -g config set prefix /usr/local
sudo npm -g install npm
sudo npm -g install gulp
OSX (via HomeBrew, note no sudo):
brew install nodejs
npm install -g gulp
Then, install the Node modules by running, from the project directory:
npm install
Usage - Development
API
To run the REST API for development you either install the openstack_health python package and run:
$ openstack_health_api config_file
or alternatively just can just run the api.py file manually. For example, from the top of the repo you would run:
$ python2 openstack_health/api.py config_file
This will start up a local webserver listening on the localhost. You can then send requests to the specified port on stdout to see the response.
Frontend
A development server can be run as follows:
gulp dev
This will open a web browser and reload code automatically as it changes on the filesystem.
Usage - Production
API
The rest api is a flask application so any of the methods for deploying a flask application can be used. The standalone entrypoint used for development isn't suitable for production because it's single threaded. You should use a wsgi container, something like uwsgi, gunicorn, or mod_wsgi to deploy it for real. For example, running the API with uwsgi standalone you can do something like:
$ uwsgi -s /tmp/uwsgi.sock --module openstack_health.api --callable app --pyargv config_file --http :5000
That will startup a uwsgi server running the rest api on port 5000.
Frontend
The production application can be build using:
gulp prod
The result will be written to ./build
and should be
appropriate for distribution. Note that all files are not required:
- Directory structure (
js/
,css/
,fonts/
,images/
): required. - Static resources (
fonts/
,images/
): required. - Core files (
index.html
,js/main.js
,css/main.css
): required unless gzipped versions are used. - Gzipped versions of core files (
*.gz
): not required, but preferred. Use instead of plain core files to save on disk usage and bandwidth. - Source maps (
js/main.js.map
,js/main.js.map.gz
): only required for debugging purposes.
Testing
API
To test python code, run:
$ tox -e py27
Frontend
To test javascript code, run:
$ npm test