sqre-uservice-status

Minimal SQuaRE API wrapper for status.lsst.codes


Keywords
lsst, api-lsst-codes
License
MIT
Install
pip install sqre-uservice-status==0.0.8

Documentation

Build Status

sqre-apikit

LSST DM SQuaRE microservice convenience tools.

Rationale

In order to create a microservice hosted behind https://api.lsst.codes, a service will need to provide a route on /metadata and /v{{api_version}}/metadata. That route must serve appropriate metadata about the service.

Metadata format

The metadata served must be a JSON object, and must contain the following fields:

name: str

version: str

repository: str

description: str

api_version: str

auth: str

The fields name, version, api_version, and description are arbitrary, although semantic versioning is strongly encouraged, and the API version should reflect the version of the api.lsst.codes API in use (currently 1.0, documentation pending).

Auth must be one of none, basic, or bitly-proxy. It represents the way in which the microservice will authenticate to GitHub: either it doesn't need to, it uses HTTP Basic Auth with a username and service token, or it uses the Bitly OAuth2 Proxy with a username, a password, and the proxy starting-OAuth2 endpoint.

Provided Functionality

sqre-apikit provides one module, apikit, which contains a function, set_flask_metadata, and a class, APIFlask.

The function is designed to add the metadata route to an existing Flask app, and the class is designed to return a subclass of flask.Flask which has the metadata route already baked into it.

Installation

sqre-apikit runs on Python 2.7 or 3.5. You can install it with

pip install sqre-apikit

This will also install the dependency Flask.

Example usage

apikit.set_flask_metadata()

import apikit
import flask

app = flask.Flask("Hello")
apikit.set_flask_metadata(app,
                          version="0.0.1",
                          repository="http://example.repo",
                          description="Hello World App")

apikit.APIFlask

import apikit

app = apikit.APIFlask(name="Hello",
                      version="0.0.1",
                      repository="http://example.repo",
                      description="Hello World App")

Development

To develop apikit, create a Python virtual environment, and

git clone https://github.com/lsst-sqre/sqre-apikit.git
cd sqre-apikit
virtualenv venv
. venv/bin/activate
pip install -r requirements.txt
python setup.py develop

Tests can be run with pytest:

py.test tests