debian-koji/docs/source/profiles.rst
Ken Dreyer 7dabab3466 doc: update profiles documentation
Rewrite the descriptions for sections.

Use pre-formatted text for technical values or file paths.

Simplify example Python code.

Remove pyxdg TODO item, since Koji never used the xdg specification for
configurations, and this would break backwards compatibility at this
point.
2021-09-15 12:08:20 -04:00

81 lines
2.3 KiB
ReStructuredText

=============
Koji Profiles
=============
Koji clients can connect to multiple Koji instances via "profiles". These are
configuration sections that describe how to connect to different environments.
Command Line Interface
======================
By default, the ``koji`` CLI will use a profile named ``koji``. (This profile
is Fedora's production Koji environment.)
You can choose a different profile on the CLI. For example, to choose CentOS's
"cbs" profile instead:
* Run ``koji`` with ``--profile=cbs``, for example ``koji --profile cbs
list-hosts``.
* Symlink or alias the profile name to the ``koji`` executable. For example,
``ln -s /usr/bin/koji /usr/bin/cbs`` or ``alias cbs=koji``. The CLI will
use the executable name as the profile name, so you can simply run ``cbs
list-hosts``.
Configuration Files
===================
The Koji client searches for profile definitions in the following locations:
* ``/etc/koji.conf``
* ``/etc/koji.conf.d/*.conf``
* ``~/.koji/config.d/*.conf``
* The ``--config=FILE`` option on the CLI
Koji reads all these files and searches for ``[$profile_name]`` sections. For
example, if you use a profile named ``cbs``, the Koji client will search for a
section titled ``[cbs]`` in the files.
Using Koji Profiles in Python
=============================
Instead of using the ``koji`` Python module directly, you can get a
profile-specific module by calling::
mykoji = koji.get_profile_module("cbs")
This ``mykoji`` module is clone of the ``koji`` module with additional
profile-specific tweaks.
You can read all the settings in the profile configuration with the
``.config`` property::
mykoji.config # optparse.Values object
vars(mykoji.config) # plain python dict
Examples
--------
Print configurations for multiple profiles::
import koji
fedora_koji = koji.get_profile_module("koji")
stage_koji = koji.get_profile_module("stg")
for this_koji in (fedora_koji, stage_koji):
print("PROFILE: %s" % this_koji.config.profile)
for key, value in sorted(vars(this_koji.config).items()):
print(" %s = %s" % (key, value))
print("")
Use ``ClientSession`` to send RPCs to the hub::
import koji
mykoji = koji.get_profile_module("koji")
client = mykoji.ClientSession(mykoji.config.server)
print(client.listTags())