Bug 1670002 - wrong ordering of a smart variable matchers applied when a parameter is in a compound matcher and also standalone
Summary: wrong ordering of a smart variable matchers applied when a parameter is in a ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite 6
Classification: Red Hat
Component: Smart Variables
Version: 6.3.4
Hardware: x86_64
OS: Linux
unspecified
medium with 2 votes vote
Target Milestone: Released
Assignee: Tomer Brisker
QA Contact: Peter Ondrejka
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-01-28 10:40 UTC by Pavel Moravec
Modified: 2019-10-14 12:58 UTC (History)
7 users (show)

Fixed In Version: foreman-1.20.1.22-1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-05-14 12:39:54 UTC


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2019:1222 None None None 2019-05-14 12:40:02 UTC
Foreman Issue Tracker 16591 None None None 2019-01-28 10:44:06 UTC

Description Pavel Moravec 2019-01-28 10:40:08 UTC
Description of problem:
Having a smart variable with overriding rules like:

Prioritize attribute order:
atributeOne,attributeTwo
attributeTwo

then attributeTwo is taken with _higher_ priority than the compound one.

Thanks to tbrisker++, the cause is:

Sat6.3:
https://github.com/theforeman/foreman/blob/1.15-stable/app/services/classification/base.rb#L50

that is executed as:

[16] pry(main)> "domain,ip\r\ndomain,netmask\r\ndomain".index('domain')
=> 0

instead of proper code:

[17] pry(main)> "domain,ip\r\ndomain,netmask\r\ndomain".split.index('domain')
=> 2

Sat6.4 has the same bug in:
https://github.com/theforeman/foreman/blob/1.18-stable/app/services/classification/values_hash_query.rb#L64


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


How reproducible:
100%


Steps to Reproduce:
1. Have a Host with a puppet class applied (e.g. access_insights_client).
2. For the class, override a parameter by having:

Prioritize attribute order:
domain,netmask
domain,hostgroup
os
domain
hostgroup

Specify matchers:
domain,netmask = (insert values from the Host)   => Value1
domain,hostgroup = (insert values from the Host) => Value2
os = (insert value from the Host)                => Value3
domain = (insert value from the Host)            => Value4

3.
Check YAML/ENC of the Host and find the overriden smart parameter value


Actual results:
The parameter value will be Value4, and domain attribute matcher applied


Expected results:
Value1 to be applied, and domain,netmask attribute matcher applied.


Additional info:

Comment 3 Pavel Moravec 2019-01-28 10:41:48 UTC
Raising 6.[3,4].z due to that particular customer behind, and trivial fix available (add ".split" to one line).

Comment 4 Tomer Brisker 2019-01-28 10:44:05 UTC
Connecting redmine issue https://projects.theforeman.org/issues/16591 from this bug

Comment 5 Bryan Kearney 2019-01-28 13:02:57 UTC
Upstream bug assigned to tbrisker@redhat.com

Comment 6 Bryan Kearney 2019-01-28 13:02:59 UTC
Upstream bug assigned to tbrisker@redhat.com

Comment 7 Bryan Kearney 2019-01-29 13:03:10 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue https://projects.theforeman.org/issues/16591 has been resolved.

Comment 9 Peter Ondrejka 2019-03-22 19:53:33 UTC
Verified on Satellite 6.5 snap 20. overriding params in access_insights_clients + steps from problem description. Compound keys take priority if they come first in the list than separate matches.

Comment 12 errata-xmlrpc 2019-05-14 12:39:54 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-2019:1222


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