Bodhi's new Compose object

This video will demonstrate some of the new capabilities that are on the horizon for Bodhi, Fedora's update manager:

We have been working to add support for containers to Bodhi. One of the problems we've encountered is that the Open Shift Build System, or OSBS, needs to reference source layers from the production registry,, when building layered containers. This registry will be managed by Bodhi. However, when Fedora needs to do an update to the base layer, which might happen if a new version of gcc is released for example, we also need to build every container that is built upon the base layer.

This presents a problem since Bodhi typically only pushes out updates once a day. If the base layer is re-built, we would have to wait a day for Bodhi to move that layer into the production registry so that we could make a Buildroot Override for it and continue building the dependent layer. This problem becomes more complex when layers can depend on other layers as well.

Instead, we plan to add a mashing API to Bodhi. "Mashing" is the name we give to Bodhi's daily process of generating repositories of the various updates that are ready to be tested, or ready to be released to our users.

In order to get started with a mashing API, we need to first do a major refactor of the masher because it currently stores state information in lock files. The lock files are only available to the bodhi backend task worker that performs the mashing, and so the API frontend servers don't have access to the information about the state of the mashing process.

To solve this, we are eliminating these lock files and are instead storing the state in the database in a new object we are calling a Compose. A Compose models a set of updates that are destined for the same repository, such as the Fedora 26 RPM updates-testing repository, or the Fedora 27 Modular Server updates repository.

We will now demonstrate a patch I've been working on that implements these ideas. There are three panes visible. The left pane is running watch on a new server-side CLI tool called bodhi-monitor-composes. This tool will display the total number of locked updates, and will display any running or failed Composes. The upper right pane shows the possible states that Composes are allowed to be in.

In the lower right pane I will run a modified version of bodhi-push, the tool that Release Engineers use to send out Fedora's daily updates. This version of the tool will run the masher synchronously, and will tail the masher's fairly verbose logs in the window. The masher itself has also been modified for this demo. Instead of running pungi, we will run /bin/true for time's sake. I have also inserted some code that will cause the fedora 27 updates-testing repository to fail so we can see what that looks like.

Thanks for reading, and happy hacking!