1. Headline Features

1.1. All Host index page improvements

The experimental new All Hosts index page gets some major improvements with this release. To use the new page by default, in Settings, set Show new host overview page to Yes. The legacy All Hosts page and the new All Hosts page now have links to each other, so you can switch between them easily regardless of the setting value.

Host bulk actions - You can now select one or more hosts and click the vertical ellipsis menu to perform the following actions: Build management, Change host group, and Delete

Single-host actions - Additionally, you can click the vertical ellipsis in the rightmost table column (without selecting the host) and perform actions on a single host: Edit, Clone, and Delete

Column selector - You can now click Manage Columns and customize columns displayed in the table. The column options are the same as those on the legacy All Hosts page. Any changes made here will also reflect on the legacy All Hosts page, and vice versa.

1.2. Puppet 8 support

Foreman 3.12 now fully supports Puppet 8. While Foreman 3.11 unofficially supported Puppet 8, Puppet’s official puppetserver RPMs are known to break on Java. The installer now handles this for users. For more information, see #37686[https://projects.theforeman.org/issues/37686]. Users are encouraged to upgrade since Puppet 7 is expected to go end of life in February 2025.

2. Upgrade Warnings

There are no upgrade warnings with Foreman 3.12.

3. Deprecations

3.1. Running Foreman on Enterprise Linux 8 removal in Foreman 3.13

Running on Enterprise Linux 8 is deprecated since Foreman 3.11. Foreman 3.13 will drop this support so users are encouraged to plan their upgrade.

Note this is for running Foreman itself. Clients will remain supported.

4. Foreman 3.12.0

A full list of changes is available on Redmine

4.1. Foreman

  • Bulk Packages wizard - Host search bleeds into package/errata search - #37768

  • User search filter for auth_source_type returns error code 500 - #37767

  • Fix audit message about removing records - #37734

  • Move telemetry allowed_labels to settings - #37647

4.1.1. API

  • Host Creation via GraphQL only as Admin - #37765

  • per_page=all doesn't work for parameters of subnets, domains, organizations.... - #37550

4.1.2. Compute resources - VMware

  • Feature Request: Support of NVMe controllers for VMware - #34839

4.1.3. Compute resources - libvirt

  • Drop CPU model for libvirt VM creation - #36999

4.1.4. Development tools

  • Fix Style/CaseLikeIf cop - #37458

  • Fix Style/ExplicitBlockArgument cop - #37428

  • Rubocop minitest rules fix - #37426

  • Fix Style/RedundantRegexpEscape cop - #37424

  • Fix Style/HashEachMethods cop violations - #37423

  • Fix Style/AccessorGrouping cop violations - #37420

4.1.5. Facts

  • Fix parsing of Ubuntu version in fact parsers - #36547

4.1.6. Host creation

  • Host create form - UI improvements - #37519

4.1.7. Host registration

  • Host remains in build mode during registration when setup_insights is set to true - #37720

  • Provide methods to find taxonomies in host registration for use in plugins - #37702

  • Curl command cannot be rendered during host registration due to Loc/Org mismatch - #37640

  • Unify sending built status in host_init_config - #37495

4.1.8. Inventory

  • Add button linking to new All Hosts UI - #37690

  • Change All Hosts kebab menu to match mockup - #37675

  • Invalid MAC address error message appears twice while editing interface - #37651

  • Append domain setting results in broken host details page with long hostnames or hosts without domain - #37584

  • use textarea in host comment edit - #37582

  • Content Columns can disappear from the Manage Columns widget on the redesigned All Hosts Page - #37553

  • As a web UI user, I can select multiple hosts and perform a bulk change of the hostgroup - #37551

  • HostsIndex page should gracefully handle when 'Any organization' is selected - #37548

  • New All Hosts page ignores pagination url params on first load - #37485

  • Add Power Status column to new All Hosts page - #37478

  • Extend TableIndexPage and TableHooks with new capabilities for All Hosts page - #37398

  • As a web UI user, I can select multiple hosts and perform build actions - #37395

4.1.9. JavaScript stack

  • not all webpack assets are properly invalidated on change - #37775

  • Drop coffee-rails dependency - #37583

  • Change I18n loading from import to require - #37300

4.1.10. Organizations and Locations

  • Property media is assigned twice in the same method - #37527

  • Smart Proxy forces association to all Locations unless Puppet is enabled on the proxy - #29450

4.1.11. Packaging

  • FFI 1.17.0+ requires Rubygems 3.3.22+ for installation, breaking Ruby 2.7 source installs - #37607

4.1.12. Plugin integration

  • Plugins are finalized before seeds are executed - #37503

4.1.13. Proxy gateway

  • Test Connection' button in 'New HTTP Proxy' returns success with invalid URL - #36919

4.1.14. Reporting

  • Add product host count to 'Subscription - General Report' - #37756

4.1.15. Settings

  • The description of a setting Instance color contains additional dot - #37597

  • Append domain name setting is not consistently applied everywhere - #37532

4.1.16. Templates

  • subscription_manager_setup.erb doesn't point to correct host - #37769

  • Create a way to refresh CA certificates on hosts that are managed by Katello - #37601

  • Track original template when cloning templates - #37059

4.1.17. Tests

  • intermittent host_js integeration test failure: test_0002_correctly override global params " Expected false to be truthy." - #37774

  • nic_managed factory can create an IP outside of its subnet - #37711

  • Report renderer tests fail depending on the libyaml version - #37613

  • with_temporary_settings test helper doesn't clean up properly - #37558

  • Possibility to use selenium remote driver - #36978

4.1.18. Unattended installations

  • Use SHA512 for root password hashing when no OS is set - #37614

  • HostCommon.crypt_passwords reencrypts Base64 based passwords for Grub, leading to errors - #37610

  • Monitor -> Host statusses shows "Pending Installation" instead of Installed - #37589

  • Provisioning Templates or RHEL 9 should have option timesource - #37581

  • Improved "EFI local chainloading" on SecureBoot enabled hosts not working for all distribution - #37562

  • RHEL registration template ignores host_parm subscription_manager_org - #37496

  • Improve "EFI local chainloading" on SecureBoot enabled hosts - #37345

  • Upload facts after host provisioning - #36886

  • Template render error when no PXELoader is selected - #36626

  • Extend Windows support in templates - #36495

4.1.19. Web Interface

  • Pagination doesn't re-render a table when switching pages - #37770

  • Show complete hostgroup name in host overview and table - #37648

  • Tab title missing in tableindexpage - #37645

  • Pagination doesnt always update between react pages - #37644

  • Template render error when host has .ics domain name - #37623

  • remove space between table buttons - #37578

  • Foreman Table columns sort is inconsistent - #37575

  • Cancel build shows notification with host id instead of hostname on the new UI of Red Hat Satellite - #37556

  • Help page should not link libera chat anymore after the migration to matrix - #37086

4.2. Installer

  • PostgreSQL 13 upgrade aborts when user locale doesn't match cluster locale - #37797

  • After an OS version upgrade, the GUI still shows the old/wrong Operating System version - #37726

  • Disable port 8443 by default on content proxies - #37701

4.2.1. External modules

  • Could not find template 'mosquitto/mosquitto.conf' when executing the installer in certain directories - #37799

4.2.2. Foreman modules

  • Custom certificates will override server CA with default CA on foreman-proxy-content scenario - #37817

  • CVE-2024-7923: Authentication bypass in Pulpcore - #37787

  • CVE-2024-7012: Authentication bypass in Foreman - #37786

  • Cockpit integration fails with AH: Unsafe URL with %3f URL rewritten without UnsafeAllow3F in foreman-ssl_error_ssl.log - #37761

  • Pasing --foreman-proxy-content-enable-docker false can leave smart_proxy_container_gateway in an inconsistent state - #37707

  • Correct docroot for Content Proxies's Apache vhost - #37620

  • DNS forwarders aren't validated - #37604

4.2.3. foreman-installer script

  • Add check for ipv6.disable=1 in /proc/cmdline because it's known to break installations - #37693

  • Installler doesn't handle Puppetserver 8 upgrade - #37686

  • Possibility to set puppet version in gitlab CI - #37568

4.3. Packaging

4.3.1. RPMs

  • Make foreman-installer-katello pull in foreman-maintain - #37663

4.4. SELinux

  • websockify doesn't work with SELinux enabled - #37791

4.4.1. Plugins

  • Boot disk based Provisioning fails to generate ISO image for instance client.example.com: ERF42-8093 [Foreman::Exception: ISO build failed] - #37497

4.5. Smart Proxy

4.5.1. BMC

  • Maximum sessions limit reached on iDRAC using Redfish as BMC provider - #37486

4.5.2. DHCP

  • invalid value for Integer(): “#Resolv::DNS::Resource::IN::A:0x00007fnnnnnnnnn” - #37621

4.5.3. Packaging

  • Pin FFI to < 1.17 on Ruby 2.x - #37624

4.5.4. Registration

  • Host registration with repositories fails because smart-proxy cannot convert arrays to string - #37631

Appendix A: Foreman Contributors

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

Adam Lazik, Adam Růžička, Aneta Šteflová Petrová, Archana Kumari, Beat Gaetzi, Bernhard Suttner, Chris Roberts, Cole Higgins, Dirk Götz, Eric Helms, Evgeni Golov, Ewoud Kohl van Wijngaarden, Girija Soni, Griffin-Sullivan, Jan Löser, Jason, Jeremy Lenz, Joniel Pasqualetto, Laurent Bigonville, Leos Stejskal, Manisha Singhal, Marek Hulán, Maria Agaphontzev, Markus Reisner, Martin Alfke, Maximilian Kolb, Mike Massonnet, Nadja Heitmann, Nofar Alfassi, Oleh Fedorenko, Partha Aji, Patrick Creech, Pavel Moravec, Quinn James, RhinoX, Richard Stempfl, Romuald Conty, Samir Jha, Sayan Das, Shimon Shtein, Tim Meusel, William Bradford Clark, dosas, gardar, kmalyjur, omahs

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