Bug 1729843

Summary: Insights Remediation playbook fails with error "Failed to create job. Ensure your systems are registered in Foreman" when system hostname has uppercase characters
Product: Red Hat Satellite Reporter: roarora
Component: Ansible - Configuration ManagementAssignee: Rex White <rexwhite>
Status: CLOSED ERRATA QA Contact: Peter Ondrejka <pondrejk>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.4CC: ahumbe, dmatoule, jjeffers, ktordeur, mmccune, osousa, rexwhite, susalvi, tbrisker, zhunting
Target Milestone: 6.10.0Keywords: Triaged
Target Release: Unused   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: tfm-rubygem-redhat_access-2.9.1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1962876 (view as bug list) Environment:
Last Closed: 2021-11-16 14:08:51 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description roarora 2019-07-15 06:03:24 UTC
Description of problem:

This bug is when system registered to satellite has Uppercase characters like CLIENT.example.com. Satellite converts the hostname in lower case before saving into database but insights registration accepts upper case characters. This causes a resolution issue in code : 

File :  /opt/theforeman/tfm/root/usr/share/gems/gems/redhat_access-2.2.0/app/models/redhat_access/concerns/host_managed_extensions.rb
Line :  host_ids = Host::Managed.where(:name => hostname_rules_relation.keys).pluck(:id)

Abov search is case sensitive and remdeiation fials with error :
===========
2019-05-07T09:38:31 [E|bac|59729] PG::SyntaxError: ERROR:  syntax error at or near ")"
LINE 1: ... "hosts"."organization_id" = 4 AND (( hosts.id IN())) ORDER ...
                                                             ^
: SELECT "hosts"."id" FROM "hosts" WHERE "hosts"."type" IN ('Host::Managed') AND "hosts"."organization_id" = 4 AND (( hosts.id IN())) ORDER BY "hos
ts"."name" ASC (ActiveRecord::StatementInvalid)
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:616:in `async_exec'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:616:in `block (2 levels) in exec_no_cache'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.6/lib/active_support/dependencies/interlock.rb:46:in `block in permit_concurrent_loads'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.6/lib/active_support/concurrency/share_lock.rb:185:in `yield_shares'
===========


Version-Release number of selected component (if applicable):
6.4
6.5

How reproducible:
Always

Steps to Reproduce:
1. Register a system with satellite which has uppercase characters in hostname. Also register the same to insights
2. Run a remeditaion playbook and it will fail


Additional info:

A workaround is to re register the system with insights with lowercase characters
# insights-client --force-reregister --display-name $(hostname -f | tr [A-Z] [a-z])

Comment 6 Rex White 2020-06-29 19:01:07 UTC
This is fixed in redhat_access-2.2.15.gem.  This gem is valid for satellite 6.5, 6.6, 6.7 and 6.8

Comment 11 Peter Ondrejka 2021-03-19 12:31:24 UTC
Still reproducible in Satellite 6.9 snap 17 tfm-rubygem-redhat_access-2.2.19

Steps:

- on host, modify hostname so that it contains uppercase characters 
- register host to satellite using global registration dialog with insights setting enabled
- after successful registration, observe the hostname appears upcased in the insights overview, but downcased in the hosts list
- create a remediation playbook and plan for the host

When clicking Run Playbook in the Plans detail view, a popup appears: 

Failed to create job. Ensure your systems are registered in Foreman

If using Customized Playbook run, and submitting the rex job, the result is red screen with:

Oops, we're sorry but something went wrong PG::SyntaxError: ERROR: syntax error at or near "vms" LINE 1: ...location_id" = $3 AND (( hosts.name IN(<hostname>... ^

Prodlog excrept in attachment.

Confiming the changes from associated github pr landed with tfm-rubygem-redhat_access-2.2.19

Comment 13 Mike McCune 2021-03-19 21:25:34 UTC
Going to move this out of 6.9 to 6.10 where we are fully removing the old legacy access plugin and will have this solved when remediations are handled by the new cloud plugin.

Comment 14 Tomer Brisker 2021-05-02 13:45:21 UTC
The error in comment #11 was fixed by https://github.com/redhataccess/foreman-plugin/pull/59 which is in version 2.2.20 of the gem. Moving to MODIFIED.

Comment 17 Peter Ondrejka 2021-10-20 11:55:39 UTC
Verified on Satellite 6.10 snap 23 using steps from the comment 11, registered host now appears with downcased hostname in the remediation list, remediation job is executed successfully

Comment 20 errata-xmlrpc 2021-11-16 14:08:51 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