1. Headline Features

1.1. New All Hosts page features

This release introduces an experimental new page that will eventually replace the All Hosts page. In its first iteration, it includes Host Create and Register buttons, bulk multi-page selection, host deletion, and faster links to each host. You can try out the new page via 'Show new host overview page' in Settings. After changing the setting, a full browser page reload is required. In future releases, more features will be added to the new page, and the old page will eventually be retired.

1.2. Redis is the default cache type

Default installations will now use Redis configured as the default cache type. Using Redis as the cache has proven to be better performant and does not result in file locking or cache misses.

2. Upgrade Warnings

2.1. Fedora/Red Hat Atomic is no longer supported

Red Hat Atomic went end of life in 2021 and Fedora Atomic even earlier. Starting with Foreman 3.9, these will be recognized as regular Fedora or Red Hat. The installation medium is no longer created, and provisioning templates have dropped support.

2.2. Short names of hosts in API calls are no longer supported

With host names stored as FQDN (Fully Qualified Domain Names) in Foreman, you can no longer use short names to retrieve the host resource in the Foreman API, such as https://foreman/api/hosts/:hostname. Use FQDN to identify the hosts.

3. Deprecations

There are no deprecations with Foreman 3.9.

4. Foreman 3.9.2

A full list of changes is available on Redmine

4.1. Foreman

4.1.1. JavaScript stack

  • EditorView snapshots change because of classnames update - #37026

4.1.2. Reporting

  • Getting "undefined method '#name' for NilClass::Jail (NilClass) (Safemode::NoMethodError)" error generating subscription report - #37016

4.1.3. Web Interface

  • Closing parent nav should also close child nav - #37067

  • Expanding a section should collapse other expanded sections - #37025

4.2. Packaging

4.2.1. RPMs

  • rubygem-ipmitool is missing ipmitool dependency - #37246

5. Foreman 3.9.1

A full list of changes is available on Redmine

5.1. Foreman

  • Broken link in Register Host documentation - #36966

5.1.1. Web Interface

  • Table index new button alignment in large screens - #36963

  • User dropdown shifted to the left when using foreman with plugins - #36896

6. Foreman 3.9.0

A full list of changes is available on Redmine

6.1. Foreman

  • Revert back 'Change Puppet CA' action - #36955

  • Global Registration - ignore output of some commands - #36938

  • Set up GHA with matrix to run test on Ruby 2.7 - #36913

  • Change foreman-hotproc.conf for new pulpcore 3.39 entrypoint - #36905

  • [Global Registration - After expiration of the token should we raise with token expiration message rather abstract message] - #36889

  • Include LookupValue permissions in fixtures - #36880

  • Hosts page should redirect to new hosts on new_hosts_page setting - #36869

  • Specific key breaks cache-method - #36842

  • Switch from Time.now to process gettime - #36841

  • Update sidekiq to 6.5+ - #36819

  • Redis cache can result in silent nil cache reads - #36815

  • Ship PCP hotproc configuration with foreman - #36805

  • Some events are not visible even being triggered - #36796

  • Reports parser fails for Salt reports - #36786

  • Add description search in the settings search bar - #36711

  • Valid error message should be display on page if expected entry not found in Administer -> Settings Search box - #36705

  • remote_execution_ssh_keys does not work as expected with external (kerberos) users - #36673

  • Inconsistent configuration for Redis as used by Dynflow - #36541

  • Allow gathering information on deleted records - #36466

  • Provisioning setup - #36427

  • Menu navigation - Search & go component - #35601

  • Ping API should expose an overall status that includes Redis - #31545

6.1.1. Compute resources - Rackspace

  • Drop last remain of the Rackspace CR - #36816

6.1.2. Facts

  • Host registration fails with error "Attached to can't be blank" when the VLAN name includes UPPERCASE letters - #36934

  • Use case statement in RHSM fact parser - #36763

6.1.3. Host creation

  • New All Hosts page - Add delete & create - #36867

  • Drop append domain names setting - #36160

6.1.4. Internationalization

  • Optimize apipie-dsl translate function - #36839

  • Foreman host column registration translates headers during initialization - #36575

6.1.5. JavaScript stack

  • Fix linter issue in DateTimePicker.js - #36933

  • Import buffer in globalIdHelpers.js - #36932

  • Remove workaround for fixing layout rendering - #36860

  • Add PF4 table - #32748

6.1.6. Plugin integration

  • Pass host results to REX in slot - #36892

6.1.7. Rails

  • Use runuser instead of su to run rake as the foreman user - #36767

6.1.8. Rake tasks

  • Count db:abort_if_pending_migrations as a setup rake task - #36774

6.1.9. Reporting

  • The Date and time options are overlapping in the "Generate at" option when generating the Errata report and Time is showing as the current time - #36915

  • Subscription entitlement report broken for SCA users - #36826

  • Reports origin icon not shown for Salt reports - #36799

6.1.10. Statistics

  • Report Template output generation can take hours to complete if the template is only about printing different host facts - #36715

6.1.11. Templates

  • Safemode doesn't allow to access 'katello_agent_enabled?' - #36717

  • {linux,initrd}efi commands not working with grubaa64.efi - #36658

  • kickstart_kernel_options snippet breaks UEFI VLAN tagged provisioning - #36361

6.1.12. Tests

  • Drop invalid test for YAML parsing - #36930

6.1.13. Unattended installations

  • Modify templates to allow for deployment with puppet 8 - #36939

  • Satellite 6.12 is still using katello-ca to register hosts during provisioning instead of Gloabl Registration Template - #36747

  • Drop Fedora/Red Hat Atomic related code - #36723

  • Kickstart in graphical mode runs chvt to the wrong terminal - #36134

6.1.14. Users, Roles and Permissions

  • PATs without expiration date cannot be created through webui - #36775

6.1.15. Web Interface

  • Clear navigation search doesn't clear results - #36949

  • Navigation Search doesnt show ansible roles - #36948

  • Navigation search menu should be less wide - #36923

  • Open bookmarks to the right side - #36864

  • Table index page design changes - #36858

  • Design the New All Hosts Index page - #36822

  • Allow new Table component to be used separately - #36821

  • Host details actions kebab can't be closed from plugins - #36793

  • Typo in variable name in form for taxonomies - #36791

  • Add additional condition for title in PageLayout - #36783

  • Register Host page has two titles - #36734

  • Documentation links and docs.theforeman.org - #32848

6.2. Installer

  • Make Redis the default cache type - #36801

6.2.1. Foreman modules

  • Support Pulpcore 3.39 installations - #36902

  • Use HTTP/2 on content proxies to connect to Foreman - #36854

  • Allow setting (fc)ct_location - #36812

  • Add support for container gateway sqlite timeout tuning - #36772

  • Support removal of REX cockpit plugin - #36090

6.2.2. foreman-installer script

  • Validate certificates as part of foreman-proxy-certs-generate - #36843

6.3. Packaging

6.3.1. RPMs

  • Automatically depend on the correct SELinux policy - #36868

6.4. Smart Proxy

  • Add Dependabot Configuration - #36899

  • Run foreman-proxy.service with PrivateTmp - #36890

  • Raise minimum Ruby version to 2.7 - #36779

6.4.1. Tests

  • Allow clearing the log buffer - #34163

7. Katello 4.11.1

A full list of changes is available on Redmine

7.1. Katello

7.1.1. Activation Key

  • The Activation Keys page asks user to register hosts using old deprecated method - #37040

7.1.2. Content Views

  • Race Condition during Incremental Update - #36871

7.1.3. Errata Management

  • When applying errata on host using "apply via custom remote execution" => "katello via ansible" method shows errata field blank - #37051

7.1.4. Foreman Proxy Content

  • PG::ProgramLimitExceeded error for Update content counts task on a big setup - #37080

  • After upgrade checking sync status/content info fails till next sync - #37023

7.1.5. Hammer

  • Fix ContentViewVersion undefined error in republish repositories test - #37046

  • hammer proxy content info fails when DB has no content counts - #37031

7.1.6. Hosts

  • Configuration rebuild failed for: Content_Host_Status and Refresh_Content_Host_Status. - #36996

  • When installing a new package, the job is labeled with a job ID and not the package. - #36846

7.1.7. Localization

  • Bad translation in french in webui - #36829

7.1.8. Repositories

  • Bump recommended repos for 6-15 - #36995

  • A re-sync should always recover from a previous syncs failed publication - #36859

7.1.9. Subscriptions

  • Message under "Simple content access" button on organization edit page can be improved and a hyperlink can be provided to reference the document. - #37117

7.1.10. Web UI

  • Field 'id' not recognized for searching! when trying to bulk override repository sets - #37018

8. Katello 4.11.0

A full list of changes is available on Redmine

8.1. Katello

  • Notification via email when repo sync fail - #17748

  • Rails 4 - Remove WebMock.allow_net_connect! - #11938

8.1.1. API

  • Remove deprecated docker_tags_whitelist - #36695

  • Remove katello-agent API endpoints - #36665

8.1.2. Activation Key

  • Add system purpose card to new Activation Key details page - #36610

8.1.3. Ansible Collections

  • Cannot sync ansible collections repositories to smart proxy - #35746

8.1.4. Container

  • Taxonomy filtration on Container Image Tags page does not work as expected - #36911

  • Cannot discovery container repositories on private registries or on registries that only support api v2 - #36861

  • Katello container registries set wrong token expiration field - #36827

8.1.5. Content Views

  • Katello showing the wrong date when using a filter when the 'end date' - #36883

  • Promoting a composite content view to environment with registry name as "<%= lifecycle_environment.label %>/<%= repository.name %>" fails with "'undefined method '#label' for NilClass::Jail (NilClass)'" - #36776

  • Better content view filtering representation for packages vs modular packages - #36683

  • Bring back duplicate content warning for composite CVs for non-docker repos - #36492

  • Allow searching for composite content views that contain a content view - #35901

8.1.6. Errata Management

  • Generate applicability tasks fails with error "ERROR: insert or update on table "katello_content_facet_errata" violates foreign key constraint "katello_content_facet_errata_ca_id" - #36914

  • errata's issued and updated times shouldn't be changed to local timezone on WebUI - #36882

  • Timeout for "hammer --no-headers erratum list --errata-restrict-applicable 1 --organization-id 1" - #36835

  • Applied Errata report download fails with undefined method `value' for nil:NilClass error - #36811

  • Recalculate button for Errata is not available on if no errata are present - #36790

8.1.7. Foreman Proxy Content

  • Registration can't find any smart proxies when their locations are not assigned to admin user - #36989

  • Smart proxy count UI doesn't render module stream count - #36962

  • Store all env_ids for smart_proxy complete sync in task input or output - #36873

  • Trigger smart proxy content count update action after Orphan cleanup - #36857

  • Last smart proxy sync date should have a way to query per environment - #36852

  • Properly translate rpm.modulemd to "module_stream" - #36820

  • As a user, I want to have a way to refresh the calculated counts on-demand on the UI - #36807

  • Delete orphan content task doesn't remove orphaned remotes in the smart proxy - #36787

  • As a user, I want to have package counts shown on smart proxy content page - #36758

  • Add content counts to API results and add aggregated CV version content counts to smart proxy content counts - #36750

  • Sync timeouts should be available for smart-proxy syn - #36737

  • Non-admin user cannot list an individual smart proxy but can list all smart proxies - #36726

  • Redesign smart proxy sync page to prepare for new enhancements on the page. - #36720

  • As a user, I want to have the package counts pre-calculated on smart proxy sync - #36702

  • Track reclaimspace task properly as an allowed action - #35556

8.1.8. Host Collections

  • Host collections errata broken - #36713

8.1.9. Hosts

  • Registering host through load balancer causes REX not to know what smart proxy to choose for 'registered_through' - #36928

  • katello:reimport fails with "TypeError: no implicit conversion of String into Integer" when there are product contents to move - #36920

  • Support Foreman API bulk host deletion - #36878

  • Slow generate applicability for Hosts with multiple modulestreams installed - #36850

  • When installing a new package, the job is labeled with a job ID and not the package. - #36846

  • Re-registering a host does not change content source - #36840

  • Preselect upgradable packages when clicking on installable packages on the hosts page - #36794

  • Recalculate errata uses out-of-date host package profile - #36789

  • As a web UI user, I can view RHEL client lifecycle alerts on the content host detail page - #36756

  • OraceLinux supports ModuleStreams, too - #36754

  • PG::UniqueViolation on index_cve_cp_id during registration - #36753

  • I have a new notification about how many RHEL clients are about to EOS - #36735

  • Add new searchable host_status column that tells me about RHEL life cycle support in host index page - #36732

  • RHEL lifecycle status depends on 'RedHat' operatingsystem name - #36731

  • Discovery Provisioning fails as the sync media is getting diminished from the host page even though it's synced - #36721

  • Add new host status for RHEL lifecycle alert - #36693

  • Redefine append domain names setting in Katello - #36328

  • In WebUI -> Hosts -> Register Host page >> Advanced Activation Keys should be auto selected in case of single Activation Key. - #36295

8.1.10. Inter Server Sync

  • Better error message when content-export fails due to unsynced repository - #36162

8.1.11. Localization

  • Make more strings translatable and extract strings for Katello 4.11 - #36884

8.1.12. Performance

  • [Improvement RefreshRepos step in smart proxy sync to refresh just repos to sync] - #36926

  • "Actions::Katello::Applicability::Hosts::BulkGenerate" tasks are processed in the default queue instead of hosts_queue causing congestion - #36921

8.1.13. Reporting

  • Add methods to safemode jail for new products report - #36828

8.1.14. Repositories

  • Add error handling in repo sync when trying to sync non-library repos - #36844

  • Deb package applicability should consider architecture - #36740

  • Change the color of the remove repository icon when repositories cannot be removed - #36733

  • Use pulp_deb 3.0.0 - #36728

  • 'Module Streams' hyperlink missing in 'Content --> Module Streams --> $stream' - #36708

  • Container images Repository Discovery ignores HTTP Link - #36678

  • File content count in Product > Repositories is not presented as a link - #36612

  • Removing manifest referenced by tag doesn't remove it from pulp but deletes it from katello - #36538

8.1.15. Subscriptions

  • Import\refresh of manifest fails with error undefined method `last' for # (NoMethodError) - #36975

  • Subscription Details Page has a broken page header - #36924

  • Prepare for SCA-Only: Deprecate API endpoints and params - #36797

  • Prepare for SCA-Only: Update Web UI - #36782

8.1.16. Sync Plans

  • Product without any repo is added to a Sync Plan regardless the error message - #36739

  • Unclear error message when disabling last repo of a product that is in a sync plan - #36690

8.1.17. Tests

  • Update Candlepin VCR's with new Candlepin 4.3.10 - #36901

  • Fix SIGKILL in test and nightly pipelines - #36853

8.1.18. Tooling

  • Upgrade to Pulpcore 3.39 - #36903

  • Events can be incorrectly marked as In Progress by the Event Queue - #36670

8.1.19. Upgrades

  • Getting '/usr/sbin/foreman-rake db:migrate' returned 1 instead of one of [0 ERROR during upgrade] - #36960

8.1.20. Web UI

  • Add aria-label to repo type icon and cv type icons for smart proxy page + Container manifest list - #36968

  • Consume selectAll and TableHooks from Foreman - #36866

  • Add the action for Change Content Sources - #36862

  • Host UI Details has storage unit set to bytes - #36766

  • Katello css overrides foreman - #36762

  • about page broken after katello-agent removal - #36722

  • React does not recognize the `ouiaId` prop on a DOM element - #36557

  • Update PermissionDenied snapshots - #36552

8.1.21. katello-tracer

  • katello-tracer-upload: command not found when executed via remote execution using effective user other than root. - #36808

Appendix A: Foreman Contributors

We’d like to thank the following people who contributed to the Foreman 3.9 release:

Adam Růžička, Alexey Masolov, Archana Kumari, Areyus, Bastian Schmidt, Dyrkon, Eric Helms, Evgeni Golov, Ewoud Kohl van Wijngaarden, Girija Soni, Griffin Sullivan, Ian Ballou, Jeremy Lenz, Joshua Hoblitt, Karolina Malyjurkova, Laura Hild, Leos Stejskal, Manisha Singhal, Marek Hulán, Maria Agaphontzev, Markus Bucher, Maximilian Kolb, Nikos Moumoulidis, Nofar Alfassi, Oleh Fedorenko, Partha Aji, Pat Riehecky, Patrick Creech, Romain Tartière, Ron Lavi, Samir Jha, Sebastian Bublitz, Shimon Shtein, Tim Meusel, Tony James, Trent Anderson, William Bradford Clark

As well as all users who helped test releases, report bugs and provide feedback on the project.