Description of problem: Failed to create a host using a nested hostgroup because all values that inherited from the parent host group are not set, such has content_view_id, content_source_id, lifecycle_environment_id and kickstart_repository_id. Steps to Reproduce: 1. Create a parent hostgroup. Set the content source, content_view, lifecycle environment and the synced content. 2. Create a nested hostgroup that inherit the above values. 3. Create a host using the nested hostgroup. hammer host create --name "my-test-client1" --hostgroup-id <the nested hostgroup id> --location "Default Location" --organization "MYORG" --mac="xx:xx:xx:xx:xx:xx" --domain-id 1 --ask-root-password yes --subnet apac-mps --ip xxx.xxx.xxx.xxx Actual results: Could not create the host: Medium can't be blank Content view can't be blank Lifecycle environment can't be blank Expected results: host created successfully Additional info: The "inherited_#{attribute}" method returns an array so rails is unable to set the nested attribute. # foreman-rake console Satellite 6.8 output: Hostgroup.find(21).inherited_kickstart_repository_id => 707 <========== Correct Satellite 6.9 output: Hostgroup.find(21).inherited_kickstart_repository_id => [707] <========= Wrong Make the following change in "/opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.18.1.27/app/models/katello/concerns/hostgroup_extensions.rb" fixed the issue. @@ -126,7 +126,7 @@ facet_model = Facets.registered_facets[facet].hostgroup_configuration.model value = facet_model.where.not(attribute => nil).joins(:hostgroup).merge( ::Hostgroup.where(id: self.ancestor_ids).reorder(ancestry: :desc) - ).limit(1).pluck(attribute) + ).limit(1).pluck(attribute).first end value end
Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/32464 has been resolved.
Verified on 6.9.3 snap 1.0. 1. Enable and sync Red Hat Enterprise Linux 7 Server Kickstart x86_64 7.9 (rhel-7-server-kickstart). 2. Create a parent hostgroup, selecting content source, content view, lifecycle environment, and Operating System fields. 3. Create a nested hostgroup that inherits those values from the parent hostgroup. 4. Create a host using the nested hostgroup: # hammer host create --name test-host --hostgroup-id 2 --location-id 2 --organization-id 1 --mac '0e:05:fb:8f:22:d8' Host created.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Satellite 6.9.3 Async Bug Fix Update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2021:2636