Skip to main content

Lightweight TOSCA orchestrator lightweight API

Project description

xOpera API

An HTTP API interface to the opera orchestrator. Mimics CLI commands.

WIP.

Development

Requires Python >= 3.7.

To begin:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

OpenAPI base code is generated with generate.sh and is not checked in to the repository.

Other useful commands:

# openapi-generator basics
java -jar openapi-generator-cli-4.3.0.jar
java -jar openapi-generator-cli-4.3.0.jar help generate
java -jar openapi-generator-cli-4.3.0.jar validate --input-spec openapi-spec.yml --recommend
java -jar openapi-generator-cli-4.3.0.jar config-help --generator-name python-flask --full-details

Usage

With Docker:

docker-compose up --build -d
docker cp test.csar xopera-api_api_1:/app/
docker exec xopera-api_api_1 unzip test.csar
docker logs -f xopera-api_api_1
# prepare request inputs: service_template, inputs (in JSON object form, not a string)
curl -XPOST localhost:8080/validate -H "Content-Type: application/json" -d @inputs-request.json
curl -XPOST localhost:8080/deploy -H "Content-Type: application/json" -d @inputs-request.json
curl localhost:8080/status
curl localhost:8080/outputs
curl localhost:8080/info
curl -XPOST localhost:8080/undeploy

With a local development installation:

./generate.sh
python3 -m venv .venv
source .venv/bin/activate
pip install wheel
pip install -r requirements.txt
cd src/
python3 -m opera.api.cli
curl localhost:8080

Building for PyPI, releases

  • If the opera dependency version has changed, you must reflect that change in setup.cfg.
  • Generate sources with ./generate.sh.
  • Test built packages in a Docker container.
  • Only release tags without any local changes present.
  • Manually create and upload releases onto GitHub, no automation for that.
  • Build and test before pushing tags to reduce rollbacks.
pip3 install -r requirements.txt
./generate.sh
git tag -a 1.2.3 -m 1.2.3

rm -rfv dist/
python setup.py sdist bdist_wheel

docker run -it --rm -v $(realpath ./dist/):/dist/:ro python:3.8-buster bash
    pip3 install dist/*.whl
    opera-api
    pip3 uninstall -y opera-api
    pip3 install dist/*.tar.gz
    opera-api

twine upload --repository <pypi|testpypi> dist/*
# upload to github manually

git push --tags

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opera-api-0.2.1.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opera_api-0.2.1-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file opera-api-0.2.1.tar.gz.

File metadata

  • Download URL: opera-api-0.2.1.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5

File hashes

Hashes for opera-api-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4b49355c8cbed9cde14b8a3ad43c4743f8a2b83090c5e1702c6638e1850f04b7
MD5 e10d24b780daa7ac0b21199fac84d6cd
BLAKE2b-256 c4f8730d99ff7dc6d76cfa38246ae6ca16727cf579164cf7697d73cc910c9102

See more details on using hashes here.

File details

Details for the file opera_api-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: opera_api-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5

File hashes

Hashes for opera_api-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5359092d6b3dffb1aed4e3eddb9d4adb1b6991c909cb9711d898adbb00a5ee7e
MD5 cd35d7477dd13ef31bcda2a87e8d4518
BLAKE2b-256 35e014ccd2a2ea2c95de9b205c967b63c6a8c0e4c9c3a37fae97dbb4a2cf8c89

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page