Build, verify and push operators
Project description
Operator Courier
The Operator Courier is used to build, validate and push Operator Artifacts.
Operator Courier is currently supported on Python 3.6 and above.
Installation
-
To install the latest version of operator-courier, just install the latest release from PyPI:
$ pip3 install operator-courier
-
To install a specific release, use the
==
operator and specify the version. For example:$ pip3 install operator-courier==2.0.1
-
To upgrade an existing operator-courier release:
$ pip3 install -U operator-courier
Usage
Command Line Interface
Once the project is installed, you can run the verify
command on a directory that adheres to the expected Manifest format.
$ operator-courier verify $MANIFESTS_DIR
To push the operator manifests to a quay.io app registry just use operator-courier push
. Just pass the directory, namespace, repository, release version and quay.io authorization token needed to push.
$ operator-courier push $MANIFESTS_DIR $EXAMPLE_NAMESPACE $EXAMPLE_REPOSITORY $EXAMPLE_RELEASE "$AUTH_TOKEN"
Once that is created, you should be able to view your pushed application on quay.io's Application page for your particular namespace, repo, and release version (https://quay.io/application/$EXAMPLE_NAMESPACE/$EXAMPLE_REPOSITORY?tab=$EXAMPLE_RELEASE)
For more info, run help on the main program or any of the subcommands
$ operator-courier -h
$ operator-courier $SUBCOMMAND -h
Debugging Validation Errors
You can optionally specify the --verbose
flag to view detailed validation information during verify
or push
$ operator-courier --verbose verify $MANIFESTS_DIR
$ operator-courier --verbose push $MANIFESTS_DIR $EXAMPLE_NAMESPACE $EXAMPLE_REPOSITORY $EXAMPLE_RELEASE "$AUTH_TOKEN"
For more information, please refer to the following docs about creating valid CSVs
Authentication
Currently, the quay API used by the courier can only be authenticated using quay.io's basic account token authentication. In order to get this token to authenticate with quay, a request needs to be made against the login API. This requires a normal quay.io account, and takes a username and password as parameters. This will return an auth token which can be passed to the courier.
$ AUTH_TOKEN=$(curl -sH "Content-Type: application/json" -XPOST https://quay.io/cnr/api/v1/users/login -d '
{
"user": {
"username": "'"${QUAY_USERNAME}"'",
"password": "'"${QUAY_PASSWORD}"'"
}
}' | jq -r '.token')
Expecting future enhancements, this authentication process will change somewhat in future releases.
Library
To use the Operator Courier in your project, simply install the Operator Courier pip package. Then import the api module:
from operatorcourier import api
def main():
api.build_verify_and_push(NAMESPACE, RESPOSITORY, RELEASE_VERSION, AUTH_TOKEN, source_dir="./my/folder/to/manifests/")
Building and running the tool locally with pip
$ pip3 install --user .
$ operator-courier
Building the docker image
$ docker build -f Dockerfile -t $TAG
$ docker run $TAG operator-courier
For further details, please see the contribution guide.
Testing
Unit tests
Install tox and run:
$ tox
This will run the tests with several versions of Python 3, measure coverage, and run flake8 for code linting.
Integration tests
Before running integration tests, you must have write access credentials to a quay.io namespace. See the authentication section for more information.
First, build the integration docker images:
$ docker build -f tests/integration/dockerfiles/integration-base.Dockerfile -t operator-courier-integration-base:latest .
$ docker build -f tests/integration/dockerfiles/integration.Dockerfile -t operator-courier-integration:latest .
Then run the tests inside a container using your access credentials:
$ docker run \
-e QUAY_NAMESPACE="$QUAY_NAMESPACE" \
-e QUAY_ACCESS_TOKEN="$QUAY_ACCESS_TOKEN" \
operator-courier-integration:latest \
tox -e integration
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file operator-courier-2.1.11.tar.gz
.
File metadata
- Download URL: operator-courier-2.1.11.tar.gz
- Upload date:
- Size: 973.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.2 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 017e04caf20028d691ef0f7c59dc9df50d4fe097a9a174fb375b1de08b16da3c |
|
MD5 | f72eb3213af149ad43681ed387de9f8c |
|
BLAKE2b-256 | c77f2ed32294785795b4277ff6afbf88a64a65fff78dd3cb2ad9dd088a66bf32 |
File details
Details for the file operator_courier-2.1.11-py2-none-any.whl
.
File metadata
- Download URL: operator_courier-2.1.11-py2-none-any.whl
- Upload date:
- Size: 31.5 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.2 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef81e3685b236ef6c196687fe3b3c0997c012b87a5afbe77a7b2d526ef5750fa |
|
MD5 | 73a79a3fb952907cbb074423f50ba14a |
|
BLAKE2b-256 | 9325719548816b544418d2606f141511742fb68c8c2dacfefd86d01769fae2af |