Kuha OSMH Repo Handler
Kuha OSMH Repo Handler is a HTTP API written in Python for serving Kuha Document Store records through OSMH.
Kuha OSMH Repo Handler is a part of Open Source software bundle Kuha2.
Features
OSMH record types supported:
Study
Variable
Question
StudyGroup
OSMH Repo Handler supports streaming responses. Note that the requesting party must also support streaming. Streaming is disabled by default.
Dependencies & requirements
Python 3.5 or newer
Recommended: python3-venv 3.5.1 or newer
The software is continuously tested against Python versions 3.5, 3.6, 3.7, 3.8. and 3.9.
Python packages
The following can be obtained from Python package index.
tornado (License: Apache License 2.0)
Kuha Common is a library used with Kuha2 software. It can be obtained from https://bitbucket.org/tietoarkisto/kuha_common
kuha_common (License: EUPL)
License
Kuha OSMH Repo Handler is available under the EUPL. See LICENSE.txt for the full license.
Configuration
The application can be configured with a configuration file, via command line arguments or by environment variables. All configuration options have default values. If a configuration option is specified in more than one place, then command line values override environment variables which override configuration file values which override defaults.
The following configuration options are available:
- -h, --help
Show help message and exit.
- --print-configuration
Print active configuration and exit.
- --stream-response
Switch to enable streaming from ListRecordHeaders endpoint. Defaults to
False
. May also be controlled by setting environment variable:KUHA_OSMH_STREAM_RESPONSE
.
- --port <port>
Port for serving OSMH Repo Handler. Defaults to
6002
May also be controlled by setting environment variable:KUHA_ORH_PORT
.
- --osmh-repo-handler-api-version <api_version>
Api version for OSMH Repo Handler. This gets prepended to the URL path. Defaults to
v0
. May also be controlled by setting environment variable:KUHA_OSMH_API_VERSION
.
- --query-limit <limit>
Optional query limit for configuring the limit of records per query when fetching multiple records from Document Store. Set 0 to disable. Defaults to
0
. May also be controlled by setting environment variable:KUHA_OSMH_QUERY_LIMIT
.
- --document-store-host <host>
Host & scheme of Kuha Document Store. Defaults to
http://localhost
. May also be controlled by setting environment variable:KUHA_DS_HOST
.
- --document-store-port <port>
Port of Kuha document store database. Defaults to
6001
. May also be controlled by setting environment variable:KUHA_DS_PORT
.
- --document-store-api-version <api_version>
Api version for document store. This gets prepended to the URL path. Defaults to
v0
. May also be controlled by setting environment variable:KUHA_DS_API_VERSION
.
- --document-store-client-request-timeout <timeout>
Request timeout (in seconds) for Document Store client. Defaults to
120
. May also be controlled by setting environment variable:KUHA_DOCUMENT_STORE_CLIENT_REQUEST_TIMEOUT
.
- --document-store-client-connect-timeout <timout>
Connect timeout (in seconds) for Document Store client. Defaults to
120
. May also be controlled by setting environment variable:KUHA_DOCUMENT_STORE_CLIENT_CONNECT_TIMEOUT
.
- --document-store-client-max-clients <max_clients>
Maximum number of simultaneous client connections for Document Store client. Defaults to
10
. May also be controlled by setting environment variable:KUHA_DOCUMENT_STORE_CLIENT_MAX_CLIENTS
.
- --loglevel <loglevel>
Lowest logging level of log messages that get output. Valid values are logging levels supported by Python’s
logging
[CRITICAL,ERROR,WARNING,INFO,DEBUG]
. Defaults toINFO
. May also be controlled by setting environment variable:KUHA_LOGLEVEL
- --logformat <logformat>
Logging format supported by
logging
. Defaults to%(asctime)s %(levelname)s(%(name)s): %(message)s)
May also be controlled by setting environment variable:KUHA_LOGFORMAT
Configuration file
Args that start with ‘–’ (eg. –document-store-port) can also be set
in a config file. The configuration file lookup searches the file
from current working directory and from the package directory.
The name of the configuration file is kuha_osmh_repo_handler.ini
.
Note
Invoke with --help
to print out config file lookup paths.
Environment variables
If the program will be run by using the scripts provided in scripts
subdirectory, the runtime environment can be controlled via scripts/runtime_env
,
which will be created by copying from scripts/runtime_env.dist
at
installation time by scripts/install_kuha_osmh_repo_handler_virtualenv.sh
.
Running the program
This guide will use convenience scripts from scripts
subdirectory.
It is assumed that the program was installed by using
scripts/install_kuha_osmh_repo_handler_virtualenv.sh
.
Run OSMH Repo Handler server:
./scripts/run_kuha_osmh_repo_handler.sh
The script will source scripts/runtime_env
and activate the installed
virtualenv. Finally it calls kuha_osmh_serve
, with given command line arguments.