Foreman Community Demo #105

Every few weeks we host a Community Demo to showcase new & interesting developments from the Foreman community. We encourage participation from any member of the community (although you do need a Google account), so if you’ve been working on something cool, please do come show it off.

This post is a wiki, so if you have something to show, add yourself to this table!

Expected In

We’ve added a new column to indicate the release in which community members might expect the feature that is being demoed to appear. This column should be taken as a guide rather than gospel. Unforeseen circumstances might drag a feature out a release or two. The best way to know for sure what is in a release is to check out the release announcement! :slight_smile:

If you have any feedback about the change to the format, feel free to comment here :slight_smile:

Depending on where it would be a better fit, please add yourself to one of the following tables:

Foreman user-focused demos

Foreman developer-focused demos

Speaker Time Topic Redmine issue Expected in version
@Ron_Lavi 5 min BREAKING CHANGE, new PF4 Pagination #34185 3.2

We return next week to demos.
Please sign up <3

Demo this Thursday!
Please sign up!

Demo is tomorrow!
Please join us!

Here’s a link to our YouTube livestream.

It’s not too late to sign up to demo !

Demo starts in just over half an hour!


Here is a summary of last week’s community demo.

As usual, I am setting this as a wiki. I would appreciate if you could edit anything that could be clarified.

Host details page - today and beyond

@rlavi gave a summary of the changes to the host details page in Foreman 3.1 and what changes are making their way into the Foreman nightly build.

Katello 4.3 - what’s the story?

@cintrix84 gave a status update on the Katello 4.3 release process, as well as a run-down of some of the headline features you can look forward to as part of Katello 4.3.

Template helpers truthy? and falsy?

@lstejska demoed two new template helpers.
These new methods check if the value passed in is true or false, regardless of the type of value.
This is helpful because in ruby (and other languages too) you can have several kinds of values: Integer, String, boolean, etc.

And comparing values can cause a lot of problems, for example:
true (boolean) is not the same as “true” (string), so this statement:
true == “true” would result in false, because boolean value is not the same as the string value.

But with these new methods, you can declare it as follows:
truthy?(“true”) => true

With these methods you don’t have to care about the type of value.

Also, you can do it with Integer values, where 1 is true and 0 is false.
truthy?(1) => true

Modularized Documentation

Our champion of community documentation @maximilian came outlined all of the work he has undertaken in the last few weeks in the area of modularizing the documentation, increasing the consistency, and hopefully making it easier for the wider community to make incremental contributions to.

@lzap added some documentation updates about improvements to the navigation bar for our page.

FDI EL8 build 4.0

@lzap demoed the first discovery release images that is based on EL7 - Centos 8 Stream

The build process is a completely different tool.
It is now live media creator - Fedora uses this.
It’s slightly bigger - it’s around 500mb.
The amount of Kernel code has increased substantially so this was unavoidable.
Ruby, smart proxy and puppet might be candidates for removal, if necessary.
Lzap then demoed how host discovery works, as well as suggesting some areas for future improvement around editing hosts.

Please try out the new Foreman Discovery Image and let us know what you think.

New report format update

@lzap demoed a very early preview of a new reports plugin.
There are changes to the way reporting is handled in Foreman core.
The motivation behind this change is to improve performance.

There is filtering functionality that you can use keywords and search logic to refine the list of reports. Keywords are implemented in a way that they include the Puppet resource or the Ansible modules that failed.

These changes keep the flexibility of searching for reports but we also gain huge improvements in speed.

New reports UX design

@MariSvirik joined us to ask for feedback relating to the usefulness of the icons in the new reports page.

She started with the host details page > Puppet tab and talked us through the Reports tab.

Marie talked through the different options of

  • Failed
  • Changed
  • Unchanged

With a particular look at the use case for Changed

Changed here indicates that something has happened.

She called for folks to take a look at the Changed mockup and if you have any better ideas of how that could be labeled to better capture this scenario. After a discussion on Discourse, a final design was decided upon: Puppet tab in Host details page - Proposal - #28 by MariSvirik

She also guided us through the Reports details page that you can access by clicking on a report. described the Last Configuration Status.

From that page you can see the host name and also have a link to all reports associated with that host.

There is potential to add more details there.

New Repo Mirroring policy

Centos 7 doesn’t keep every kernel around.
When they remove the older versions if mirror on sync is true, then they get removed.
Even if it was set to true, Content Views would still retain those old versions.

With the move to Pulp 3.14, Pulp has added a feature that also mirrors the metadata from the upstream repositories.
Now you have content and metadata on your local system from the remote repositories.

The Pulp team did not necessarily foresee is that the metadata mirroring could not be used in a lot of scenarios such as Directory nesting or on a sub-path or other locations caused problems for mirror on sync. The reality is that most repositories don’t support metadata mirroring.

Setting it to false is a workaround but then you also cannot mirror content precisely.

The Pulp team have added a new option for repositories for syncing. In Katello, this is called Mirroring Policy

@Justin_Sherrill talked through the three new options you can set as a mirroring policy:

Additive - similar to mirror on sync false
Mirror Content Only - Mirror on sync = true
Mirror Complete - This is Mirror on Sync with Metadata - this is only available for Yum usage.

This gives more fine-grain control for the user to let them pick the options they want.

Create a repository > Yum and in that page, you have a new Mirroring Policy where you can select the option that is best for you.

If you select a different type, this option isn’t available as it is only supported for Yum.

For backwards compatibility, the old functionality still exists in Hammer and API

On Demand Repository Cleaning

@iballou demoed a range of new options for cleaning up disk space from all cached content units Synchronized to your storage via the on demand method that you might no longer require.

Ian issued one cautionary note related to using the on demand cleanup:
If you manage custom repositories and you do not save older versions of the RPMs, it might not be a good idea to do cleanup because if it is no longer in the upstream repo, you will not be able to retrieve it.

If you are looking at a particular repository in Foreman, you can now click Select Action and click the Reclaim Space button.

From the main repositories page within Foreman, you can also carry out a bulk clean up action.
If you select some or all of the repositories, you can then use the new Reclaim Space button to perform a bulk cleanup.

An even more global option is to navigate to a Smart Proxy. From a smart proxy details page, you can use the Reclaim Space button to perform a clean up of all content on that Smart Proxy.

Ian then finished out with a demo of reclaiming space.

New Inter-Server Sync UI

@jturel demoed a brand new Katello feature coming in Katello 4.3.

Synching content from one Katello Instance to another.

This differs from Import Export scenario, whose main use case there is when there is no network.

There is a network connection and a secondary Foreman server is receiving content from a parent.

At the moment, this feature works only for Red Hat content.

@jturel demoed the workflow for this process:

In the Foreman web UI, navigate to Content > Subscriptions.
From there, click Manage Manifest.
In this modal, there’s a new button CDN Configuration.

In the URL field, you can update that URL to point to another Foreman server. You can add the user credentials and establish a network connection to access that content.

The content credential corresponds to the default CA certificate.

@jturel demoed the process of enabling, creating a repo, and synching content from a parent Foreman to a child instance. If the repositories are not enabled on the parent, they will not be available to the child servers.

You can also view the upstream source for the repositories if you click into the repository in question.

There are also corresponding Hammer commands that are available but were not demoed.

This feature is very new and there will be further demos with incremental updates to this.
If you’ve any feedback about it, please let us know.

Installable Errata overview card

@cintrix84 talked us through the new Installable Errata card. In a simple card, it provides a precise overview of the breakdown of security advisories, bugfixes and enhancements.
He demoed how the pie-chart is also interactive.

The card still links to the old Errata section because currently the search parameters are not available in the new Errata page. However, in time the new page will take in search parameters from Katello 4.4 onwards.

New CV UI Version Details page - Actions & Generic Content

Previous demos and deep dives have introduced the additions of the generic content page and also generic content types. In this demo, @adewar introduced the new Version Details page for generic content types.

You have the option to jump between the content types that are available to you.
As part of the demo, he showed Python Packages and OSTree refs.

As part of the Content View version, there is a Versions page where you can get an overview sorted by the different types and from that page, you can drill down to examine the packages.

If anyone wants to add other content options, the functionality is built to allow for future expansion.

There is now an option to promote a Content View from within the details view also.

Breaking changes with Patternfly 4 implementation

@rlavi talked about the implementation of Patternfly 4 pagination in all pages in Foreman.
We will use all of the arks that are passed to their components. We wrap it in Foreman in one place.

In each Foreman plugin, there was a different implementation of Patternfly.
Ron gives an example where he changes the plugin to consume the pagination from core.
Things might break after this change is added to core.
A few plugins already are basing themselves on one helper in core.


That is a brochure, not summary. Thank you! :slight_smile: