Uploaded image for project: 'Satellite'
  1. Satellite
  2. SAT-40641

Puppet fact parser can't create OS entry blocking Satellite leapp upgrades

XMLWordPrintable

    • Bug Fix
    • Hide
      Before this update, the Foreman created duplicate OS entries due to an unhandled title uniqueness constraint. This resulted in end users encountering duplicate OS creation, causing Satellite and Puppet issues. With this release, the fact parser now handles OS title uniqueness, preventing duplicate entries. As a result, Leapp and Puppet user experience is improved.
      Show
      Before this update, the Foreman created duplicate OS entries due to an unhandled title uniqueness constraint. This resulted in end users encountering duplicate OS creation, causing Satellite and Puppet issues. With this release, the fact parser now handles OS title uniqueness, preventing duplicate entries. As a result, Leapp and Puppet user experience is improved.
    • Proposed
    • Manual

      Description of problem:

      This is based on SAT-36540, but can occur in other cases too.

      Foreman will try to find the OS when Puppet facts are uploaded. If it doesn't exist then it creates an entry. https://github.com/theforeman/foreman/blob/49dd22221ed4ba4d7687e3e7406d8ae975a2ffa9/app/services/puppet_fact_parser.rb#L7-L27

      There are 2 unique constraints on OperatingSystem (https://github.com/theforeman/foreman/blob/49dd22221ed4ba4d7687e3e7406d8ae975a2ffa9/db/migrate/20150713143226_add_unique_to_operatingsystems_title.rb#L3-L5):

      • name, major, minor
      • title

      The fact parser only deals with the first, but can then fail on creating the OS when the title is already taken.

      How reproducible:

      Always

      Is this issue a regression from an earlier version:

      No, this has been a long standing problem

      Steps to Reproduce:

      This is from memory, exact steps may be a bit different.

      1. Create an OS with:

      • name: RedHat
      • major: 9 (or whatever matches your host OS)
      • minor: 7 (or whatever matches your host OS)
      • description: RHEL 9.7
        2. Ensure no OS exists with name RHEL & major 9 & minor 7
        3. Run the installer on a RHEL 9.7 Satellite server

      Actual behavior:

      It fails with (ActiveRecord::RecordInvalid): Validation failed: Title has already been taken

      Expected behavior:

      It picks up the existing OS with the same description.

      Business Impact / Additional info:

      Customers running Leapp to upgrade their Satellite often run into problems, but it can also surface for Puppet users.

      https://github.com/Katello/katello/blob/942b2ccff2af9cbf43a14e43afda8f8789cee5b0/app/models/katello/concerns/redhat_extensions.rb#L8 can also create the OS with name RedHat.

              rhn-engineering-sshtein Shimon Shtein
              ekohlvan@redhat.com Ewoud Kohl van Wijngaarden
              Leos Stejskal Leos Stejskal
              Jan Fiala Jan Fiala
              Leos Stejskal Leos Stejskal
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: