README.md
# on-http [![Build Status](https://travis-ci.org/RackHD/on-http.svg?branch=master)](https://travis-ci.org/RackHD/on-http) [![Code Climate](https://codeclimate.com/github/RackHD/on-http/badges/gpa.svg)](https://codeclimate.com/github/RackHD/on-http) [![Coverage Status](https://coveralls.io/repos/RackHD/on-http/badge.svg?branch=master&service=github)](https://coveralls.io/github/RackHD/on-http?branch=master)
__`on-http` is the HTTP server for RackHD__
_Copyright 2015-2016, EMC, Inc._
## Installation
rm -rf node_modules
npm install
npm run apidoc
npm run taskdoc
## Running
Note: requires MongoDB and RabbitMQ to be running to start correctly.
sudo node index.js
* http://127.0.0.1/ui -- RackHD Web UI
* http://127.0.0.1/docs -- RackHD Docs
* http://127.0.0.1/taskdoc -- RackHD Task Annotation
## API References
* http://rackhd.readthedocs.io/en/latest/rackhd/index.html
* https://bintray.com/rackhd/docs/apidoc#files
The readthedocs shows API usage for 2.0 by default. Using `api/current/` will
use the 2.0 API by default. Functional differences between the 1.1 API and the 2.0
API are listed in readthedocs, however, the 1.1 API is officially deprecated.
## Config
The `fileService` requires a "fileService" key which holds keys mapping backend
strings to their individual config values; it requires at least "defaultBackend"
to be among the backend keys. More strings may be added and mapped to
injector strings in the `fileSevice.injectorMap` attribute.
## Debugging/Profiling
To run in debug mode to debug routes and middleware:
sudo DEBUG=express:* node --debug index.js
If you're using Node v4 or greater you can use `node-inspector` to debug and profile from a GUI.
npm install node-inspector -g
node-inspector --preload=false &
sudo DEBUG=express:* node --debug-brk index.js
Note: do not use the `node-debug` command it doesn't work as well.
## CI/Testing
To run tests from a developer console:
npm test
To run tests and get coverage for CI:
# verify hint/style
./node_modules/.bin/jshint -c .jshintrc --reporter=checkstyle lib index.js > checkstyle-result.xml || true
./node_modules/.bin/istanbul cover -x "**/spec/**" _mocha -- $(find spec -name '*-spec.js') -R xunit-file --require spec/helper.js
./node_modules/.bin/istanbul report cobertura
# if you want HTML reports locally
./node_modules/.bin/istanbul report html
## Client Libraries
Instructions for how to generate client libraries (python, java, go) can be seen on the readthedocs
* http://rackhd.readthedocs.io/en/latest/rackhd/rackhd_api.html?highlight=swagger#rackhd-client-libraries
## Building
Unversioned packages are built automatically from travis-ci and uploaded to bintray.com. Using
this repository is detailed in [the docs](http://rackhd.readthedocs.org/en/latest/rackhd/ubuntu_package_installation.html).
Build scripts are placed in the `extra/` directory.
* `.travis.yml` will call the appropriate scripts in `extra/` to build an unversioned package.
* `extra/make-sysdeps.sh` can be used to install system level packages in a Ubuntu system.
* `extra/make-cicd.sh` will perform all the necessary build steps to generate a version package.
If you want to build your own versioned packages, you can use the Vagrantfile provided in `extra/`. Simply perform `vagrant up` and it will run all the necessary steps.
The resulting .deb packages will end up in `deb/`.