Skip to content

Commit 4a41739

Browse files
committed
Refs #37696 - Don't run sub facet fact parser on non registered hosts
* Changed the int4 column on convert2rhel_through_foreman from init4 to boolean * Return out of the fact parser method for hosts that are not registered such as foreman/satellite instance, so we don't error when those systems upload facts * Got rid of build_subscription_facet because the hosts that come from convert2rhel already are registered and have a subscription facet, so no need to build one which also breaks hosts that are not registered through subscription-manager If for some reason we hit an edge case where we don't get the convert2rhel fact the first time during registration , we will get it when the client checks in again ~ 4 hours. Talking with Shim and Jeremy this seems like a fine approach since the systems rhsmcertd will send us the filtered fact again, which is more than enough time before rh_cloud would send off it's report to console.redhat.com
1 parent 4bd1489 commit 4a41739

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

app/models/katello/host/subscription_facet.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,11 +298,12 @@ def backend_update_needed?
298298
end
299299

300300
def self.populate_fields_from_facts(host, parser, _type, _source_proxy)
301+
return unless host.subscription_facet # skip method if the host is not a registered host
301302
has_convert2rhel = parser.facts.key?('conversions.env.CONVERT2RHEL_THROUGH_FOREMAN')
302303
# Add in custom convert2rhel fact if system was converted using convert2rhel through Katello
303304
# We want the value nil unless the custom fact is present otherwise we get a 0 in the database which if debugging
304305
# might make you think it was converted2rhel but not with satellite, that is why I have the tenary below.
305-
facet = host.subscription_facet || host.build_subscription_facet
306+
facet = host.subscription_facet
306307
facet.attributes = {
307308
convert2rhel_through_foreman: has_convert2rhel ? ::Foreman::Cast.to_bool(parser.facts['conversions.env.CONVERT2RHEL_THROUGH_FOREMAN']) : nil
308309
}.compact
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class ChangeConvert2RhelToBoolean < ActiveRecord::Migration[6.1]
2+
def up
3+
change_column :katello_subscription_facets, :convert2rhel_through_foreman, :boolean, using: 'convert2rhel_through_foreman::boolean'
4+
end
5+
6+
def down
7+
change_column :katello_subscription_facets, :convert2rhel_through_foreman, :integer, using: 'convert2rhel_through_foreman::integer'
8+
end
9+
end

test/models/host/subscription_facet_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_search_role
4343

4444
def test_convert2rhel_through_foreman_on_host
4545
subscription_facet.update(convert2rhel_through_foreman: 1)
46-
assert_equal 1, host.subscription_facet.convert2rhel_through_foreman
46+
assert true, host.subscription_facet.convert2rhel_through_foreman
4747
assert_includes ::Host.search_for("convert2rhel_through_foreman = 1"), host
4848
end
4949

0 commit comments

Comments
 (0)