Client initializationΒΆ

Before an API client can be used, it needs to be initialized with a configuration. There are several ways to do it. The most standard option is reading the ~/.config/copr file and providing it to the Client class.

Such a configuration file typically has:

[copr-cli]
copr_url = https://copr.fedorainfracloud.org
username = coprusername
login = secretlogin
token = secrettoken
# expiration date: 2023-01-17

To get your configuration file for the Fedora Copr instance, go to https://copr.fedorainfracloud.org/api/

The only mandatory field though is copr_url:

[copr-cli]
copr_url = https://copr.fedorainfracloud.org

With such a simplified configuration, you can still do the read-only API queries that do not require user-authentication (listing projects, builds, etc.).

Alternatively, the Copr server you work with might support GSSAPI authentication (Fedora Copr does). To let the Client use your kinit tokens, you need to enable GSSAPI authentication first:

[copr-cli]
copr_url = https://copr.fedorainfracloud.org
gssapi = true

Having the config file prepared, you can finally use it for creating a Client instance. Just like:

from copr.v3 import Client
from pprint import pprint
client = Client.create_from_config_file()
pprint(client.config)
{'copr_url': u'https://copr.fedorainfracloud.org',
 'login': u'secretlogin',
 'token': u'secrettoken',
 'username': u'coprusername'}

A different config file can be easily used by passing its path to create_from_config_file method.

client = Client.create_from_config_file("/some/alternative/copr")

It is not required to use a configuration stored in a file though. Configuration dict can be passed to the Client constructor.

config = {'copr_url': u'https://copr.fedorainfracloud.org',
          'login': u'secretlogin',
          'token': u'secrettoken',
          'username': u'coprusername'}

client = Client(config)
assert client.config == config

Similarly it can be done when using proxies directly.

from copr.v3 import BuildProxy
build_proxy = BuildProxy.create_from_config_file()

Or even without configuration file.

config = {'copr_url': u'https://copr.fedorainfracloud.org',
          'login': u'secretlogin',
          'token': u'secrettoken',
          'username': u'coprusername'}

build_proxy = BuildProxy(config)

And finally, it is possible to just read the configuration file.

from copr.v3 import config_from_file
config = config_from_file()
client = Client(config)