Skip to main content

Operator Courier

Build Status Coverage Status

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

Metadata

Release files for operator-courier 2.1.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for operator-courier 2.1.11
File Size Uploaded
operator-courier-2.1.11.tar.gz 973.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for operator-courier 2.1.11
File Interpreter ABI Platform
operator_courier-2.1.11-py2-none-any.whl Python 2 none any Details

Total release size: 1.0 MB

Release files / operator-courier-2.1.11.tar.gz

Download URL operator-courier-2.1.11.tar.gz
Size 973.0 kB
Tags Source
SHA-256 checksum
How to use checksums
017e04caf20028d691ef0f7c59dc9df50d4fe097a9a174fb375b1de08b16da3c
BLAKE2b-256 checksum
How to use checksums
c77f2ed32294785795b4277ff6afbf88a64a65fff78dd3cb2ad9dd088a66bf32
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / operator_courier-2.1.11-py2-none-any.whl

Download URL operator_courier-2.1.11-py2-none-any.whl
Size 31.5 kB
Tags Python 2
SHA-256 checksum
How to use checksums
ef81e3685b236ef6c196687fe3b3c0997c012b87a5afbe77a7b2d526ef5750fa
BLAKE2b-256 checksum
How to use checksums
9325719548816b544418d2606f141511742fb68c8c2dacfefd86d01769fae2af
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

2.1.11 This release

2 release files

2.1.10

2 release files

2.1.9

2 release files

2.1.8

2 release files

2.1.7

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page