Skip to main content

Python client for DCI Control Server

Project description

python-dciclient

The python-dciclient project provides both the python bindings and a CLI to the DCI Control Server

Installation

The team behind the project offers repositories for Red Hat/CentOS:

  • yum -y install https://packages.distributed-ci.io/dci-release.el7.noarch.rpm

Then simply run yum install python2-dciclient for Python 2 or yum install python3-dciclient for Python 3.

As mentioned above, the package provides two things:

  • The CLI: a dcictl command is provided. For more details dcictl --help.
  • The API: a python module one can use to interact with a control server (dciclient.v1.api.*)

Credentials

Admitting one has valid credentials to use the DCI Control Server platform, there are two way to specify those informations while using dcictl:

  • A dcirc file:

A file where the necessary credentials are stored. This file needs then to be sourced before using dcictl. Example:

export DCI_LOGIN=foo
export DCI_PASSWORD=bar
export DCI_CS_URL=https://api.distributed-ci.io

or using the API secret method:

export DCI_CLIENT_ID=<client_type>/<client_id>
export DCI_API_SECRET=<api_secret>
export DCI_CS_URL=https://api.distributed-ci.io

Where client_type can currently be remoteci or feeder

Which will allow the user to run the command: dcictl team-list

  • At the command line level:

One can pass those informations on the CLI level. Example: dcictl --dci-login jdoe --dci-password jdoe --dci-cs-url 'https://api.distributed-ci.io' team-list or dcictl --dci-client-id <client_type>/<client_id> --dci-api-secret <api_secret> --dci-cs-url 'https://api.distributed-ci.io' team-list

Where client_type can currently be remoteci or feeder

For RemoteCIs or Feeders please use the API Secret to authenticate.

List of available commands

Run dcictl --help command to see the list of the available commands

Commands:
  component-create             Create a component.
  component-delete             Delete a component.
  component-file-delete        Delete a component file.
  component-file-download      Retrieve a component file.
  component-file-list          List files attached to a component.
  component-file-show          Show a component file.
  component-file-upload        Attach a file to a component.
  component-list               List all components.
  component-show               Show a component.
  component-status             Show an overview of the last jobs associated...
  component-update             Update a component.
  file-delete                  Delete a file.
  file-list                    List all files.
  file-show                    Show a file.
  job-delete                   Delete a job.
  job-list                     List all jobs.
  job-output                   Show the job output.
  job-recheck                  Recheck a job.
  job-results                  List all job results.
  job-show                     Show a job.
  jobdefinition-annotate       Annotate a jobdefinition.
  jobdefinition-attach-test    Attach a test to a jobdefinition.
  jobdefinition-create         Create a jobdefinition.
  jobdefinition-delete         Delete a jobdefinition.
  jobdefinition-list           List all jobdefinitions.
  jobdefinition-list-test      List tests attached to a jobdefinition.
  jobdefinition-set-active     Annotate a jobdefinition.
  jobdefinition-show           Show a jobdefinition.
  jobdefinition-unattach-test  Unattach a test to a jobdefinition.
  jobdefinition-update         Update a jobdefinition.
  jobstate-list                List all jobstates.
  jobstate-show                Show a jobstate.
  purge                        Purge soft-deleted resources.
  remoteci-create              Create a remoteci.
  remoteci-delete              Delete a remoteci.
  remoteci-get-data            Retrieve data field from a remoteci.
  remoteci-list                List all remotecis.
  remoteci-refresh-keys        Refresh a remoteci key pair.
  remoteci-reset-api-secret    Reset a remoteci api secret.
  remoteci-show                Show a remoteci.
  remoteci-update              Update a remoteci.
  team-create                  Create a team.
  team-delete                  Delete a team.
  team-list                    List all teams.
  team-show                    Show a team.
  team-update                  Update a team.
  topic-attach-team            Attach a team to a topic.
  topic-create                 Create a topic.
  topic-delete                 Delete a topic.
  topic-list                   List all topics.
  topic-list-team              List teams attached to a topic.
  topic-show                   Show a topic.
  topic-unattach-team          Unattach a team from a topic.
  user-create                  Create a user.
  user-delete                  Delete a user.
  user-list                    List all users.
  user-show                    Show a user.
  user-update                  Update a user.

dci-vault

If you want to store secrets in your YAML configuration files (settings or inventories), you can use the dci-vault command to do so. The various agents will then decrypt the secrets transparently. For example:

$ source dcirc.sh
$ echo -n 42 | dci-vault encrypt_string --stdin-name answer
Reading plaintext input from stdin. (ctrl-d to end input)
answer: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          36373332616633313866333234303166616237613332316534393834663934663463353433363464
          6363626133323036383939633566383139373636633533390a316363393437653663363538343730
          65333862633131353030353137636236663036656264393638353464343138623664323731613331
          6466636637393865380a336365633465633037623935633866366562373732356635343361353334
          3732
Encryption successful

dci-vault is a thin layer on top of ansible-vault so all the sub-commands of ansible-vault are available.

dci-rhel-latest-kernel-version

The dci-rhel-latest-kernel-version is a utility command to easily get the latest kernel available for the RHEL product.

$ source dcirc.sh
$ dci-rhel-latest-kernel-version --topic RHEL-not-existing
topic RHEL-not-existing not found

- available topics:
RHEL-9.2
RHEL-9.1
RHEL-8.7
RHEL-8.6
RHEL-8.5
RHEL-9.0
RHEL-8.4
RHEL-8.0
RHEL-8.1
RHEL-7.6
RHEL-7.7
RHEL-8.3
RHEL-8.2
RHEL-7.8
RHEL-7.9
RHEL-7-nightly
RHEL-7-milestone
$ dci-rhel-latest-kernel-version --topic-list
available topics:
RHEL-9.2
RHEL-9.1
RHEL-9.0
RHEL-8.7
RHEL-8.6
RHEL-8.5
RHEL-8.4
RHEL-8.3
RHEL-8.2
RHEL-8.1
RHEL-8.0
RHEL-7.9
$ dci-rhel-latest-kernel-version --topic RHEL-9.2
5.14.0-160.el9

dci-create-component

to create a component, you can use the dci-create-component utility. For example, to create the my-product version 1.0 component on the OCP-4.11 topic, use it like that:

$ source dcirc.sh
$ dci-create-component OCP-4.11 "My Company Product" 1.0 ga

dci-find-latest-component

dci-find-latest-component allows to find the latest component for a product. For example to find the latest GA OCP component on the most recent topic, you can do it like this:

$ source dcirc.sh
$ dci-find-latest-component --tags build:ga OpenShift ocp

To lookup the latest GA OCP component for a specific topic for example OCP-4.11, you can do it like this:

$ source dcirc.sh
$ dci-find-latest-component --topic OCP-4.11 --tags build:ga OpenShift ocp

License

Apache 2.0

Author Information

Distributed-CI Team distributed-ci@redhat.com

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

dciclient-2.5.0.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

dciclient-2.5.0-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

Details for the file dciclient-2.5.0.tar.gz.

File metadata

  • Download URL: dciclient-2.5.0.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.10

File hashes

Hashes for dciclient-2.5.0.tar.gz
Algorithm Hash digest
SHA256 38126721c9b593dcba702356b3ddef999d516e487c36a1a89555b051ed929ec9
MD5 b3b47f24dc8d391e66184b39047533ac
BLAKE2b-256 e28159dd440a5937378491b3c07b44723025bc3360c16ac8638616c477e5946e

See more details on using hashes here.

File details

Details for the file dciclient-2.5.0-py3-none-any.whl.

File metadata

  • Download URL: dciclient-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 54.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.10

File hashes

Hashes for dciclient-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 341154f2db8a240630671488b1369a8847ed9aebbe50047805359100f9fba0e1
MD5 254df7bc68469da77784835f4d674a6c
BLAKE2b-256 8a91e57b77a658b0b25dc565784300d1e2072c0e084757b0799e101a70659021

See more details on using hashes here.

Supported by

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