Skip to main content

Python client library for openQA API

Project description

openqa_client

This is a client for the openQA API, based on requests. It requires Python 3.6 or later.

Usage

Here's a simple example of reading the status of a job:

from openqa_client.client import OpenQA_Client
client = OpenQA_Client(server='openqa.opensuse.org')
print(client.openqa_request('GET', 'jobs/1'))

Here's an example of triggering jobs for an ISO:

# This is a Fedora server.
client = OpenQA_Client(server='openqa.happyassassin.net')
params = {}
params['ISO'] = '22_Beta_TC2_server_x86_64_boot.iso'
params['DISTRI'] = 'fedora'
params['VERSION'] = '22'
params['FLAVOR'] = 'server_boot'
params['ARCH'] = 'x86_64'
params['BUILD'] = '22_Beta_TC2'
print(cl.openqa_request('POST', 'isos', params))

You can use data= or json= instead of params=. params= adds query parameters to the request. data= sends application/x-www-form-urlencoded data; most endpoints accept this and it can avoid query string character limits for long requests. json= sends application/json encoded data; this is required for POST or PUT requests to the test_suites, machines and products endpoints.

All methods other than GET require authentication. This client uses the same configuration file format as the reference (perl) client in openQA itself. Configuration will be read from /etc/openqa/client.conf or ~/.config/openqa/client.conf. A configuration file looks like this:

[openqa.happyassassin.net]
key = APIKEY
secret = APISECRET

You can get the API key and secret from the web UI after logging in. Your configuration file may include credentials for multiple servers; each section contains the credentials for the server named in the section title.

If you create an OpenQA_Client instance without passing the server argument, it will use the first server listed in the configuration file if there is one, otherwise it will use 'localhost'. Note: this is a difference in behaviour from the perl client, which always uses 'localhost' unless a server name is passed.

TLS/SSL connections are the default (except for localhost). You can pass the argument scheme to OpenQA_Client to force the use of unencrypted HTTP, e.g. OpenQA_Client(server='openqa.happyassassin.net', scheme='http').

The API always returns JSON responses; this client's request functions parse the response before returning it.

If you need for some reason to make a request which does not fall into the openqa_request() method's expected pattern, you can construct a requests.Request and pass it to do_request(), which will attach the required headers, execute the request, and return the parsed JSON response.

The const module provides several constants that are shadowed from the upstream openQA code, including job states, results, and the 'scenario keys'.

Development

You can file pull requests at Github. There is an extensive test suite with CI integration. You can run the test suite locally by running tox. If your system has a tox version earlier than 3.3.0, you must have the setuptools_scm Python module installed for this to work correctly, or else you will get errors about a missing install.requires file.

Licensing

This software is available under the GPL, version 2 or any later version. A copy is included as COPYING. Contributions submitted as pull requests are assumed to be submitted under the same license terms unless otherwise specified.

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

openqa_client-4.3.1.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

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

openqa_client-4.3.1-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file openqa_client-4.3.1.tar.gz.

File metadata

  • Download URL: openqa_client-4.3.1.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.14.0rc2

File hashes

Hashes for openqa_client-4.3.1.tar.gz
Algorithm Hash digest
SHA256 5dd2740c29ad485f62f2e871e732f8405f078b1d283dc2ea90a5a5e74f5bf7ba
MD5 0956969f53f81123c4ef839326ddde9e
BLAKE2b-256 931de3ee9e9160411c25a7eeb720ab812a15d63aa6da48a746aef7e2b741f815

See more details on using hashes here.

File details

Details for the file openqa_client-4.3.1-py3-none-any.whl.

File metadata

  • Download URL: openqa_client-4.3.1-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.14.0rc2

File hashes

Hashes for openqa_client-4.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8e3d5135f581a60dab96b6daef2014d07e68c855a26c4a2f4d27bd9dd32751a1
MD5 07bec676d9c4546dbf7f8d95a796b369
BLAKE2b-256 f8cc9462ee127a075c4fb116ebb991f603f60ff5037839a71170242fd5250360

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