Bug 1759111

Summary: Puppet facts exclude filter star wildcard not working as expected
Product: Red Hat Satellite Reporter: Roman Bobek <rbobek>
Component: FactAssignee: Dominik Matoulek <dmatoule>
Status: CLOSED ERRATA QA Contact: Radek Mynar <rmynar>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.5.0CC: ahumbe, bbuckingham, mcorr, mhulan, ofalk, peter.vreman, tbrisker, zhunting
Target Milestone: 6.10.0Keywords: Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: foreman- Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 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:

Description Roman Bobek 2019-10-07 12:38:51 UTC
Description of problem:
When we set an exclude filter in Administer > Settings > Provisioning > 'Exclude pattern for facts stored in satellite' and use the star wildcard, the filter is not working as expected. For example filter set as:


will also exclude facts like:


i.e. facts where the string is included in the middle of the fact and not only on the beginning. I would expect that the filter to exclude docker in the middle of the string should be written like:


How reproducible:

Steps to Reproduce:
1. On a system create custom Puppet Fact called blah_docker_blah
2. Run 'puppet agent -t' on the client to propagate the fact to Satellite
3. Navigate to Hosts > All Hosts, choose the host and click the Facts button
4. Filter the facts for docker - no result will be shown
5. Check the exclude filter in Administer > Settings > Provisioning > 'Exclude pattern for facts stored in satellite'
6. The exclude filter docker* is present there by default

Actual results:
Facts with the docker string included in the middle are filtered out.

Expected results:
Facts with the docker string included in the middle will remain reported.

Comment 5 Peter Vreman 2019-10-28 10:51:05 UTC
Part of the root cause is the fuzzy documentation/explaination how the matching is really done.

In the list is also 'lo'. But my custom facts with _localdisk_ are not filtered.

This is all vague for my as an user why are the '_docker_' fitlered but '_localdisk_' not. There must be addiational logic behind the filtering that is not explained to the user.

Comment 7 Vladimír Sedmík 2019-11-01 21:40:01 UTC
Hello Peter,
the 'lo' seems to be without any wildcard (in my default case), so perhaps that's why _localdisk_ is not filtered. But you are right some improvement in documentation should be done, for example here: https://access.redhat.com/documentation/en-us/red_hat_satellite/6.6/html/administering_red_hat_satellite/satellite-settings_assembly

Opened new docs BZ here: https://bugzilla.redhat.com/show_bug.cgi?id=1766952

Comment 8 Melanie Corr 2019-11-07 12:32:57 UTC
hi all

I have updated the docs to reflect this bug:


I will monitor and update accordingly. 



Comment 16 Shira Maximov 2020-05-03 14:47:39 UTC
Created redmine issue https://projects.theforeman.org/issues/29681 from this bug

Comment 17 Brad Buckingham 2020-07-06 21:15:17 UTC
Clearing needinfo as bug 1766952 has provided modifications to the documentation to help address the observations.  That said, this bugzilla remains to provide improved behavior when wildcard characters are used.

Comment 19 Bryan Kearney 2021-05-28 10:18:30 UTC
Upstream bug assigned to dmatoule

Comment 20 Bryan Kearney 2021-05-28 10:18:33 UTC
Upstream bug assigned to dmatoule

Comment 21 Bryan Kearney 2021-07-30 12:03:14 UTC
Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/29681 has been resolved.

Comment 23 Radek Mynar 2021-09-27 14:11:25 UTC
I created following custom facts in /opt/puppetlabs/facter/facts.d/my_custom_facts.py

#!/usr/bin/env python
data = { "abc_def_ghi" : "abcdefghi", # !
         "aaa_def_ghi" : "aaadefghi", # 1
         "abc_aab_ghi" : "abcaabghi", # 2
         "aab_def_ghi" : "aabdefghi", # 2
         "abc_def_aab" : "abcdefaab", # 2
         "abc_def_aac" : "abcdefaac", # 3
         "aaa_aab_ghi" : "aaaaabghi", # 1+2
         "abc_aab_aac" : "abcaabaac", # 2+3
         "abc_aaa_ghi" : "abcaaaghi", # !1
         "aac_def_ghi" : "aacdefghi", # !3
#filter: 1: aaa* 2: *aab* 3: *aac
for k in data:
    print "%s=%s" % (k,data[k])

Exclude filters "aaa*,*aab*,*aac" were applied correctly.

VERIFIED with Satallite 6.10 SNAP 20.0

Comment 26 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.