Koji 1.20.0 Release notes

Announcement: We’re going to drop python 2 support for hub and web in koji 1.22. Please, prepare yourself for deploying python 3 versions of these. Both are already supported and this is the next step in retiring python 2 codebase.

All changes can be found at pagure. Most important changes are listed here.

Migrating from Koji 1.19

For details on migrating see Migrating to Koji 1.20

Security Fixes


Client Changes

Add basic zchunk support for dist-repo

Fixes: https://pagure.io/koji/issue/1198

The dist-repo supports new options --zck, which enables createrepo’s zchunk generation, and --zck-dict-dir, which indicates the directory the builder that contains zchunk dictionaries to use.

Add repo waiting options to the build command

New options --wait-build and --wait-repo for the build command cause the build to wait for a repo regeneration. This is similar to using wait-repo + build in succession, except that the repo monitoring is handled in the build task itself.

Remove title option for livemedia-creator

livemedia-creator dropped --title option, so we are.

Add –disabled option to list-hosts command

This option is simply an alias for the existing --not-enabled option.

Unify return values for permission denied

Some places were using print + return 1, some parser.error calls. Let’s unify it to parser.error.

Library Changes

Raise error when we have not configuration

Previously, Koji would proceed with only the coded defaults, which is no longer sensible.

Sanity check on remotely opened RPMs

Sometimes RPMs are not downloaded correctly into buildroot and it results in weird errors. A simple check was added to detect corruption of downloaded files.

Include profile name in parsed config options

Fix behaviour to be in line with docs examples.

Make rpm import optional in koji/__init__.py

koji/__init__.py is being used more and more often in virtualenv. As rpm is always the pain here and most users don’t need those specific functions, we can make it optional (and require only on spec level). Distribution via PyPi will be less painful.

API Changes

Default krb_princs value changed to True in getUser

This argument was added in PR #1648, with a default value of False. It is used to control whether the krb_principals field is included in the result of getUser.

Drop buildMap API call

It was designed for GC, but it is not used anymore.

New addArchiveType API call

Adds a new hub method for inserting new archivetype records.

Raise GenericError on existing build reservation in in CGInitBuild

Previously a database exception was propagated. Now, it is raising a more informative exception.

Web UI Changes

Browsable api

The web ui now offers API introspection similar to the koji list-api command.

Cluster health info page

New web page showing current usage of build cluster.

Show build link(s) on buildContainer task page

This is a temporary solution to the problem of connecting the builds and tasks generated by the containerbuild plugin <https://github.com/containerbuildsystem/koji-containerbuild>.

Human-friendly file sizes in taskinfo page

Builder Changes

Provide for passing credentials to SRPMfromSCM

Builder’s conf can now contain scm_credentials_dir option, where can be stored authentication certificates or other data for use inside the mock when building SRPMs for fetching data from authenticated SCMs.

Log kernel version used for buildroot

Use –update for dist-repos if possible

Improves speed of new distrepos.

Don’t send notifications in case of deleted tag

In some cases (sidetags) tag can be deleted before untag notifications are sent, so don’t send them if tag is already deleted.

Check existence of maven symlink

In recent Fedora’s maven is alternatives symlink. Original check now failed even if maven was installed.

System Changes

QueryProcessor: fix countOnly for group sql

WebUI returned an error on Users tab after multiple kerberos realms per user were introduced.

Limit distRepo tasks per tag

Introduces distrepo.cancel_others extra flag for tags. If enabled, new distRepo task will cancel previous non-finished ones leaving only new one.

Fix CGRefundBuild to release build properly | PR: https://pagure.io/koji/pull-request/1853

Fixes for refunding failed/cancelled build.

Use BulkInsertProcessor for hub mass inserts

Speed up mass inserts.

Use comma delimiter for allowed_methods

The allowed_methods configuration option for the save_failed_tree plugin now expects comma-separated values, as the example config indicates.

Fix issue with listing users and old versions of Postgres

Utilities Changes

Add koji-gc/kojira/koji-shadow to setup.py

Koji utilities are now installlable from PyPi.

Garbage Collector

Speedup untagging/moving to trashcan

Rewrite of how koji-gc handles untagging. Multicalls are used now and some speedup of related API calls is also included.

DB Sweeper

New options to clean database

Last release introduced new tool koji-sweep-db which is used to clean the database. Few new options were added now like cleaning scratch builds, CG reservations, notification tasks or unused buildroots.

Note, that these new features are more technical preview. You need to use --force flag to run them for a good reason. They can a) take insane time to finish b) remove data you never wanted to delete. Always test these commands in safe environment, before running them in production.

Cleaning sessions and reservations are still safe and they are primary goals of the script.


A few fixes for kojikamid

kojikamid (the daemon that runs in VMs) needs a few updates to be consistent with changes to the the Koji data model, and Python 3 compatibility.

Documentation Changes

Lot of documentation was added in last release in API and also in docs pages.