Bug 1962870

Summary: Inherited hostgroup values are not set when creating host
Product: Red Hat Satellite Reporter: James Jeffers <jjeffers>
Component: Host GroupAssignee: satellite6-bugs <satellite6-bugs>
Status: CLOSED ERRATA QA Contact: Omkar Khatavkar <okhatavk>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.9.0CC: ahumbe, avroy, egolov, inecas, jjeffers, kgaikwad, ldelouw, tbrisker, vijsingh
Target Milestone: 6.10.0Keywords: Patch, Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: tfm-rubygem-katello-4.1.0-0.1.rc2 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1955421 Environment:
Last Closed: 2021-11-16 14:11:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description James Jeffers 2021-05-20 17:04:32 UTC
+++ This bug was initially created as a clone of Bug #1955421 +++

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

--- Additional comment from  on 2021-05-09T16:21:21Z 

Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/32464 has been resolved.

Comment 4 errata-xmlrpc 2021-11-16 14:11:16 UTC
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 (Moderate: Satellite 6.10 Release), 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/RHSA-2021:4702