Red Hat Satellite engineering is moving the tracking of its product development work on Satellite to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "Satellite project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs will be migrated starting at the end of May. If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "Satellite project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/SAT-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1595161 - `hammer host create --puppet-class-ids=6 ...` creates a host without mentioned puppet class attached
Summary: `hammer host create --puppet-class-ids=6 ...` creates a host without mentione...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Hosts
Version: 6.4
Hardware: Unspecified
OS: Unspecified
unspecified
medium
Target Milestone: 6.4.0
Assignee: Ivan Necas
QA Contact: Jan Hutař
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-06-26 09:16 UTC by Jan Hutař
Modified: 2019-11-05 23:25 UTC (History)
5 users (show)

Fixed In Version: tfm-rubygem-katello-3.7.0.19-1,foreman-1.18.0.17-1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-10-16 19:09:33 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
organizations in the environment (103.58 KB, image/png)
2018-07-04 05:37 UTC, Jan Hutař
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Foreman Issue Tracker 24199 0 None None None 2018-07-09 11:01:25 UTC

Description Jan Hutař 2018-06-26 09:16:10 UTC
Description of problem:
`hammer host create --puppet-class-ids=6 ...` creates a host without mentioned puppet class attached


Version-Release number of selected component (if applicable):
satellite-6.4.0-9.beta.el7sat.noarch


How reproducible:
always


Steps to Reproduce:
1. # hammer -d -v -u admin -p changeme host create --architecture-id="1" --domain-id="4" --environment-id="6" --ip="186.107.94.90" --location-id="2" --mac="4c:f7:c4:84:e2:92" --medium-id="11" --name="jhutar$RANDOM" --operatingsystem-id="2" --organization-id="1" --partition-table-id="94" --puppet-class-ids="6" --root-password="..."
2. # hammer -v -u admin -p changeme host puppet-classes --host-id 6


Actual results:
# hammer -v -u admin -p changeme host puppet-classes --host-id 6
---|-----
ID | NAME
---|-----


Expected results:
# hammer -v -u admin -p changeme host puppet-classes --host-id 6
---|----------
ID | NAME     
---|----------
6  | generic_1
---|----------


Additional info:
Looks like param is correctly passed in at the request time, but is not returned in the response:


# hammer -d -v -u admin -p changeme host create --architecture-id="1" --domain-id="4" --environment-id="6" --ip="186.107.94.90" --location-id="2" --mac="4c:f7:c4:84:e2:92" --medium-id="11" --name="jhutar$RANDOM" --operatingsystem-id="2" --organization-id="1" --partition-table-id="94" --puppet-class-ids="6" --root-password="GKdvnWhu"
[ INFO 2018-06-26T05:05:22 Init] Initialization of Hammer CLI (0.13.0) has started...
[DEBUG 2018-06-26T05:05:22 Init] Running at ruby 2.4.3-p205
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli_config.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/csv.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_admin.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_admin_logging_core.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_admin_logging_katello.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_bootdisk.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_discovery.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_docker.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_openscap.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_remote_execution.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_tasks.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_templates.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_virt_who_configure.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /etc/hammer/cli.modules.d/katello.yml has been loaded
[ INFO 2018-06-26T05:05:22 Init] Configuration from the file /root/.hammer/cli.modules.d/foreman.yml has been loaded
[DEBUG 2018-06-26T05:05:22 SSLoptions] SSL options: {
    :ssl_ca_file => "/etc/pki/katello/certs/katello-server-ca.crt",
     :verify_ssl => true
}
[DEBUG 2018-06-26T05:05:22 API] Global headers: {
        :content_type => "application/json",
              :accept => "application/json;version=2",
    "Accept-Language" => "en"
}
[DEBUG 2018-06-26T05:05:22 API] Follow redirects: never
[DEBUG 2018-06-26T05:05:22 Connection] Registered: foreman
[ INFO 2018-06-26T05:05:22 Modules] Extension module hammer_cli_foreman (0.13.0) loaded.
[ INFO 2018-06-26T05:05:22 Modules] Extension module hammer_cli_foreman_admin (0.0.8) loaded.
[ INFO 2018-06-26T05:05:22 Modules] Extension module hammer_cli_foreman_bootdisk (0.1.3.3) loaded.
[ INFO 2018-06-26T05:05:22 Modules] Extension module hammer_cli_foreman_discovery (1.0.0) loaded.
[ INFO 2018-06-26T05:05:22 Modules] Extension module hammer_cli_foreman_openscap (0.1.6) loaded.
[ INFO 2018-06-26T05:05:23 Modules] Extension module hammer_cli_foreman_templates (0.1.0) loaded.
[ INFO 2018-06-26T05:05:23 HammerCLI::MainCommand] subcommand organization (HammerCLIForeman::Organization) was removed.
[ INFO 2018-06-26T05:05:23 HammerCLI::MainCommand] subcommand organization (HammerCLIKatello::Organization) was created.
[ INFO 2018-06-26T05:05:23 Modules] Extension module hammer_cli_katello (0.13.1) loaded.
[DEBUG 2018-06-26T05:05:23 Init] Using locale 'en'
[DEBUG 2018-06-26T05:05:23 Init] 'mo' files for locale domain 'hammer-cli' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.13.0/locale'
[DEBUG 2018-06-26T05:05:23 Init] 'mo' files for locale domain 'hammer-cli-foreman' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.13.0/locale'
[DEBUG 2018-06-26T05:05:23 Init] 'mo' files for locale domain 'hammer-cli-csv' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_csv-2.3.1/locale'
[DEBUG 2018-06-26T05:05:23 Init] 'mo' files for locale domain 'hammer_cli_foreman_docker' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman_docker-0.0.6/locale'
[DEBUG 2018-06-26T05:05:23 Init] 'mo' files for locale domain 'hammer-cli-foreman-virt-who-configure' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman_virt_who_configure-0.0.3/locale'
[DEBUG 2018-06-26T05:05:23 Init] 'mo' files for locale domain 'hammer-cli-katello' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_katello-0.13.1/locale'
[ INFO 2018-06-26T05:05:23 HammerCLI::MainCommand] Called with options: {"option_verbose"=>true, "option_debug"=>true, "option_username"=>"admin", "option_password"=>"***"}
[ INFO 2018-06-26T05:05:23 HammerCLIForeman::Host] Called with options: {}
[ INFO 2018-06-26T05:05:23 HammerCLIForeman::Host::CreateCommand] Called with options: {"option_root_password"=>"***", "option_puppetclass_ids"=>["6"], "option_managed"=>true, "option_build"=>true, "option_enabled"=>true, "option_overwrite"=>true, "option_volume_list"=>[], "option_interface_list"=>[], "option_location_id"=>2, "option_organization_id"=>1, "option_environment_id"=>6, "option_architecture_id"=>1, "option_domain_id"=>4, "option_operatingsystem_id"=>2, "option_medium_id"=>11, "option_ptable_id"=>94, "option_name"=>"jhutar17000", "option_ip"=>"186.107.94.90", "option_mac"=>"4c:f7:c4:84:e2:92"}
[ INFO 2018-06-26T05:05:23 API] Server: https://<fqdn>
[ INFO 2018-06-26T05:05:23 API] POST /api/hosts
[DEBUG 2018-06-26T05:05:23 API] Params: {
        "location_id" => 2,
    "organization_id" => 1,
               "host" => {
                                 "name" => "jhutar17000",
                          "location_id" => 2,
                      "organization_id" => 1,
                       "environment_id" => 6,
                                   "ip" => "186.107.94.90",
                                  "mac" => "4c:f7:c4:84:e2:92",
                      "architecture_id" => 1,
                            "domain_id" => 4,
                      "puppetclass_ids" => [
            [0] "6"
        ],
                   "operatingsystem_id" => 2,
                            "medium_id" => 11,
                            "ptable_id" => 94,
                                "build" => true,
                              "enabled" => true,
                              "managed" => true,
                   "compute_attributes" => {
            "volumes_attributes" => {}
        },
             "content_facet_attributes" => {},
        "subscription_facet_attributes" => {},
                            "overwrite" => true,
           "host_parameters_attributes" => [],
                "interfaces_attributes" => [],
                            "root_pass" => "GKdvnWhu"
    }
}
[DEBUG 2018-06-26T05:05:23 API] Headers: {}
[DEBUG 2018-06-26T05:05:23 API] Using authenticator: HammerCLIForeman::Api::InteractiveBasicAuth
[DEBUG 2018-06-26T05:05:23 API] Response: {
                       "ip" => "186.107.94.90",
                      "ip6" => nil,
           "environment_id" => 6,
         "environment_name" => nil,
              "last_report" => nil,
                      "mac" => "4c:f7:c4:84:e2:92",
                 "realm_id" => nil,
               "realm_name" => nil,
                   "sp_mac" => nil,
                    "sp_ip" => nil,
                  "sp_name" => nil,
                "domain_id" => 4,
              "domain_name" => "g4okrdnfrz",
          "architecture_id" => 1,
        "architecture_name" => "x86_64",
       "operatingsystem_id" => 2,
     "operatingsystem_name" => "RedHat 7.4",
                "subnet_id" => nil,
              "subnet_name" => nil,
               "subnet6_id" => nil,
             "subnet6_name" => nil,
             "sp_subnet_id" => nil,
                "ptable_id" => 94,
              "ptable_name" => "Kickstart default",
                "medium_id" => 11,
              "medium_name" => "QkHGAC",
               "pxe_loader" => "Grub2 UEFI",
                    "build" => true,
                  "comment" => nil,
                     "disk" => nil,
             "installed_at" => nil,
                 "model_id" => nil,
             "hostgroup_id" => nil,
                 "owner_id" => 4,
               "owner_name" => "Admin User",
               "owner_type" => "User",
                  "enabled" => true,
                  "managed" => true,
                "use_image" => nil,
               "image_file" => "",
                     "uuid" => nil,
      "compute_resource_id" => nil,
    "compute_resource_name" => nil,
       "compute_profile_id" => nil,
     "compute_profile_name" => nil,
             "capabilities" => [
        [0] "build"
    ],
         "provision_method" => "build",
                 "certname" => "jhutar17000.g4okrdnfrz",
                 "image_id" => nil,
               "image_name" => nil,
               "created_at" => "2018-06-26 09:05:23 UTC",
               "updated_at" => "2018-06-26 09:05:23 UTC",
             "last_compile" => nil,
            "global_status" => 0,
      "global_status_label" => "OK",
          "organization_id" => 1,
        "organization_name" => "Default Organization",
              "location_id" => 2,
            "location_name" => "Default Location",
            "puppet_status" => 0,
               "model_name" => nil,
             "build_status" => 1,
       "build_status_label" => "Pending installation",
                     "name" => "jhutar17000.g4okrdnfrz",
                       "id" => 6,
          "puppet_proxy_id" => nil,
        "puppet_proxy_name" => nil,
       "puppet_ca_proxy_id" => nil,
     "puppet_ca_proxy_name" => nil,
        "openscap_proxy_id" => nil,
      "openscap_proxy_name" => nil,
             "puppet_proxy" => nil,
          "puppet_ca_proxy" => nil,
           "openscap_proxy" => nil,
                    "token" => "efb44722-ee46-442f-9dc5-9056f33a2c88",
           "hostgroup_name" => nil,
          "hostgroup_title" => nil,
               "parameters" => [],
           "all_parameters" => [],
               "interfaces" => [
        [0] {
                    "id" => 10,
                  "name" => "jhutar17000.g4okrdnfrz",
                    "ip" => "186.107.94.90",
                   "ip6" => nil,
                   "mac" => "4c:f7:c4:84:e2:92",
                   "mtu" => nil,
                  "fqdn" => "jhutar17000.g4okrdnfrz",
            "identifier" => nil,
               "primary" => true,
             "provision" => true,
                  "type" => "interface"
        }
    ],
            "puppetclasses" => [],
            "config_groups" => [],
        "all_puppetclasses" => [],
              "permissions" => {
                             "view_hosts" => true,
                           "create_hosts" => true,
                             "edit_hosts" => true,
                          "destroy_hosts" => true,
                            "build_hosts" => true,
                            "power_hosts" => true,
                          "console_hosts" => true,
                        "ipmi_boot_hosts" => true,
                        "puppetrun_hosts" => true,
                     "play_roles_on_host" => true,
                  "view_discovered_hosts" => true,
                "submit_discovered_hosts" => true,
        "auto_provision_discovered_hosts" => true,
             "provision_discovered_hosts" => true,
                  "edit_discovered_hosts" => true,
               "destroy_discovered_hosts" => true
    }
}
[DEBUG 2018-06-26T05:05:23 API] Response headers: {
                                 :date => "Tue, 26 Jun 2018 09:05:23 GMT",
                               :server => "Apache/2.4.6 (Red Hat Enterprise Linux)",
                      :foreman_version => "1.18.0-RC1",
                  :foreman_api_version => "2",
                      :apipie_checksum => "852e93a6ac5deceb3d5b1fd20892055915485bbe",
                        :cache_control => "max-age=0, private, must-revalidate",
                         :x_request_id => "048b4fc4-997b-4600-915d-c1d4dc887de5",
                            :x_runtime => "0.266140",
              :content_security_policy => "default-src 'self'; child-src 'self'; connect-src 'self' ws: wss:; img-src 'self' data: *.gravatar.com; script-src 'unsafe-eval' 'unsafe-inline' 'self'; style-src 'unsafe-inline' 'self'",
            :strict_transport_security => "max-age=631139040; includeSubdomains",
               :x_content_type_options => "nosniff",
                   :x_download_options => "noopen",
                      :x_frame_options => "sameorigin",
    :x_permitted_cross_domain_policies => "none",
                     :x_xss_protection => "1; mode=block",
                         :x_powered_by => "Phusion Passenger 4.0.18",
                           :set_cookie => [
        [0] "request_method=POST; path=/; secure; HttpOnly; SameSite=Lax",
        [1] "_session_id=3e5b178495d31836691b1e288d2f90e5; path=/; secure; HttpOnly; SameSite=Lax"
    ],
                                 :etag => "W/\"6095775f92075c5b48d54c7704d642f7\"",
                               :status => "201 Created",
                    :transfer_encoding => "chunked",
                         :content_type => "application/json; charset=utf-8"
}
Host created.


production.log seems sane:


==> /var/log/foreman/production.log <==
2018-06-26T05:05:23 [I|app|] Started POST "/api/hosts" for 10.16.184.126 at 2018-06-26 05:05:23 -0400
2018-06-26T05:05:23 [I|app|048b4] Processing by Api::V2::HostsController#create as JSON
2018-06-26T05:05:23 [I|app|048b4]   Parameters: {"location_id"=>2, "organization_id"=>1, "host"=>{"name"=>"jhutar17000", "location_id"=>2, "organization_id"=>1, "environment_id"=>6, "ip"=>"186.107.94.90", "mac"=>"4c:f7:c4:84:e2:92", "architecture_id"=>1, "domain_id"=>4, "puppetclass_ids"=>["6"], "operatingsystem_id"=>2, "medium_id"=>11, "ptable_id"=>94, "build"=>true, "enabled"=>true, "managed"=>true, "compute_attributes"=>{"volumes_attributes"=>{}}, "content_facet_attributes"=>{}, "subscription_facet_attributes"=>{}, "overwrite"=>true, "host_parameters_attributes"=>[], "interfaces_attributes"=>[], "root_pass"=>"[FILTERED]"}, "apiv"=>"v2"}
2018-06-26T05:05:23 [I|app|048b4] Current user: foreman_admin (administrator)
2018-06-26T05:05:23 [I|app|048b4] Authorized user admin(Admin User)
2018-06-26T05:05:23 [I|app|048b4] Current user: admin (administrator)
2018-06-26T05:05:23 [I|aud|048b4] create event for Nic::Managed with id 10
2018-06-26T05:05:23 [I|aud|048b4] create event for Host::Base with id 6
2018-06-26T05:05:23 [I|app|048b4]   Rendering api/v2/hosts/create.json.rabl
2018-06-26T05:05:23 [I|app|048b4]   Rendered api/v2/hosts/create.json.rabl (42.0ms)
2018-06-26T05:05:23 [I|app|048b4] Completed 201 Created in 259ms (Views: 37.9ms | ActiveRecord: 33.2ms)


And you can fix it with `hammer host update...`:


# hammer -v -u admin -p changeme host puppet-classes --host-id 6
---|-----
ID | NAME
---|-----
# hammer -v -u admin -p changeme host update --id 6 --puppet-class-ids 6
Host updated.
# hammer -v -u admin -p changeme host puppet-classes --host-id 6
---|----------
ID | NAME     
---|----------
6  | generic_1
---|----------

Comment 3 Jan Hutař 2018-06-26 09:37:12 UTC
foreman-debug is in attachment 1454612 [details].

Comment 4 Brad Buckingham 2018-06-26 17:11:40 UTC
Hi Jan, do you know if this is a regression from 6.3?  I suspect it may be.

Comment 5 Jan Hutař 2018-06-26 22:20:11 UTC
Yes, you are right, this is a regression compared to 6.3. Thank you.

Comment 7 Ivan Necas 2018-07-03 21:13:10 UTC
@jan: I was able to reproduce this issue, when the puppet environment was not assigned to the org/loc of the host. Is it possible that this would also be your case?

Comment 9 Jan Hutař 2018-07-04 05:37:26 UTC
Created attachment 1456365 [details]
organizations in the environment

Soo, looks like it might be it. On the other hand, see scereenshot: Org 1 seems to be selected for that environment, but when I query env details via hammer:

[root@sat640snap10 ~]# hammer -u admin -p changeme environment info --name KT_pTfgsH_Library_TRRpefOPzv_5
Id:            6
Name:          KT_pTfgsH_Library_TRRpefOPzv_5
Puppetclasses: 
    access_insights_client
    foreman_scap_client
    foreman_scap_client::params
    generic_1
    stdlib
    stdlib::stages
Locations:     
    Default Location
Organizations: 
    pTfgsH
Created at:    2018/07/04 05:23:32
Updated at:    2018/07/04 05:23:32

Comment 10 Jan Hutař 2018-07-04 06:06:42 UTC
So you were right: when I imported the env into org 1 (it did not worked, I had to remove the the host with that class first), it now works.

It worked before this in the 6.3, but I agree it seems more deterministic now when thinking about it.

Does it make sense to create a bug for "I'm unable to import env if host supposedly consuming its class exists"?

Comment 12 Ivan Necas 2018-07-04 08:50:49 UTC
Have you actually try to save the environment in the state of the screenshot? From my testing, it actually saved the org/location assignment after that.

I think it makes sense to open a bug, that would visually indicate, that there are some inconsistencies in organizations/locations assigned to the taxable object and the hosts assigned to that object, and suggesting the user to save the resource to resolve those.

As part of this bug, I would try to fix that by explicitly checking, that the environment that one tries to assign the host to, is actually inside the org/location of that particular host, and failing with validation issue.

Comment 13 Jan Hutař 2018-07-04 10:56:52 UTC
Uch, I have not. Did not knew it works this way. Thank you.

Comment 15 Ivan Necas 2018-07-09 11:01:23 UTC
Created redmine issue https://projects.theforeman.org/issues/24199 from this bug

Comment 17 Satellite Program 2018-07-09 12:31:27 UTC
Upstream bug assigned to inecas

Comment 18 Satellite Program 2018-07-09 12:31:30 UTC
Upstream bug assigned to inecas

Comment 19 Satellite Program 2018-07-23 18:29:50 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue http://projects.theforeman.org/issues/24199 has been resolved.

Comment 25 Bryan Kearney 2018-10-16 19:09:33 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, 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-2018:2927


Note You need to log in before you can comment on or make changes to this bug.