RackHD/on-http

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# 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/`.