Project

General

Profile

Actions

Bug #23232

closed

Foreman should validate host associations are in the host's taxonomies

Added by Chris Duryee about 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
Normal
Category:
Organizations and Locations
Target version:
Difficulty:
Triaged:
Fixed in Releases:
Found in Releases:

Description

If you register a brand-new client to a new capsule on a new katello using bootstrap.py without https://github.com/Katello/katello-client-bootstrap/issues/248, you will get this error:

Validation failed: Name must not include periods

repro steps:

  • vagrant up centos7-katello-3.6
  • vagrant up centos7-foreman-proxy-3.6
  • vagrant up centos7 for use as test client

on katello server:

hammer ping
hammer -u admin -p changeme activation-key create --name MYAK --organization-id 1
hammer -u admin -p changeme hostgroup create --name MYHG

on client:

yum install subscription-manager (bootstrap will need it)
  1. ensure you are using a bootstrap.py without https://github.com/Katello/katello-client-bootstrap/issues/248
    curl http://centos7-foreman-proxy-3-6.dhcp129-144.example.com/pub/bootstrap.py > ./bootstrap.py
    python bootstrap.py -s centos7-foreman-proxy-3-6.dhcp129-144.example.com -g MYHG -a MYAK

(this will error that the HG needs an OS and location, we'll fix that)

back on katello server:

hammer -u admin -p changeme os list
hammer -u admin -p changeme location list
hammer -u admin -p changeme hostgroup list
hammer -u admin -p changeme hostgroup update --operatingsystem-id 1 --location-ids 2 --id 1

back on client again:

python bootstrap.py -s centos7-foreman-proxy-3-6.dhcp129-144.example.com -g MYHG -a MYAK --location "Default Location" --force

error!

Validation failed: Name must not include periods

production.log:

[app] [I] Started POST "/rhsm/consumers?owner=Default_Organization&activation_keys=MYAK" for 192.168.121.96 at 2018-04-11 16:10:34 +0000
[app] [I] Processing by Katello::Api::Rhsm::CandlepinProxiesController#consumer_activate as JSON
[app] [I] Parameters: {"facts"=>"[FILTERED]", "contentTags"=>[], "type"=>"system", "name"=>"client.dhcp129-144.example.com", "owner"=>"Default_Organization", "activation_keys"=>"MYAK"}
[app] [I] Current user: foreman_admin (administrator)
[app] [I] Current user: foreman_admin (administrator)
[katello/cp_proxy] [E] <Class> ActiveRecord::RecordInvalid
[katello/cp_proxy] [E] name: ["must not include periods"]
[app] [I] Completed 422 Unprocessable Entity in 808ms (Views: 0.1ms | ActiveRecord: 19.4ms)

It looks like the domain can't be found, which causes the shortname of the host to be its fqdn. Workaround:

hammer -u admin -p changeme domain update --id 1 --location-ids 2 --organization-ids 1

Note that this bug has a workaround in bootstrap.py. Ideally a more descriptive error message would be raised if the domain is not accessible in the org/location.

Actions

Also available in: Atom PDF