Directives Modules

Directives are basically Python modules which help you with some specific functionality that is either common for many tasks, or non-trivial to do and therefore saves you the work of implementing it. They offer more functionality than our libtaskotron API, but the basic API might be sufficient for you needs, have a look at both.


In older libtaskotron versions the directives were used in a different way than standard Python modules, but that is no longer the case. Until they are re-implemented into standard-looking modules, they are somewhat awkward to use, nevertheless they are functional.

Using directives

We’ll use the Koji directive in the following example, but it applies to any of them. This is how to download a single RPM using the Koji directive:

from libtaskotron.directives import koji_directive
koji = koji_directive.KojiDirective()
params = {'action': 'download',
          'koji_build': 'htop-2.0.2-4.fc27.x86_64',
          'arch': 'all',
          'src': True,
          'target_dir': '/tmp/rpms',
koji.process(params, None)

First, you need to import the module. Then, create a new instance of the included class (named in CamelCase from the file name). Then, you need to construct a dictionary with mandatory and optional keyvals defined in the directive documentation. Finally, you call the process() method with the dictionary and a second None argument.

Available modules


download updates from Bodhi


generate a report of task results


create a YUM repository from RPM packages using createrepo_c


download files from distgit


test how directives work


set runtask exit code based on last or worst test outcome


download builds and tags from Koji


parse an xUnit XML file into the ResultYAML format


translate Koji tags into YUM repository URLs