Skip to content

Commit

Permalink
Refs #37696 - Don't run sub facet fact parser on non registered hosts
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
chris1984 committed Aug 15, 2024
1 parent 4bd1489 commit 4a41739
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
3 changes: 2 additions & 1 deletion app/models/katello/host/subscription_facet.rb
Original file line number Diff line number Diff line change
Expand Up @@ -298,11 +298,12 @@ def backend_update_needed?
end

def self.populate_fields_from_facts(host, parser, _type, _source_proxy)
return unless host.subscription_facet # skip method if the host is not a registered host
has_convert2rhel = parser.facts.key?('conversions.env.CONVERT2RHEL_THROUGH_FOREMAN')
# Add in custom convert2rhel fact if system was converted using convert2rhel through Katello
# We want the value nil unless the custom fact is present otherwise we get a 0 in the database which if debugging
# might make you think it was converted2rhel but not with satellite, that is why I have the tenary below.
facet = host.subscription_facet || host.build_subscription_facet
facet = host.subscription_facet
facet.attributes = {
convert2rhel_through_foreman: has_convert2rhel ? ::Foreman::Cast.to_bool(parser.facts['conversions.env.CONVERT2RHEL_THROUGH_FOREMAN']) : nil
}.compact
Expand Down
9 changes: 9 additions & 0 deletions db/migrate/20240815215102_change_convert2_rhel_to_boolean.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class ChangeConvert2RhelToBoolean < ActiveRecord::Migration[6.1]
def up
change_column :katello_subscription_facets, :convert2rhel_through_foreman, :boolean, using: 'convert2rhel_through_foreman::boolean'
end

def down
change_column :katello_subscription_facets, :convert2rhel_through_foreman, :integer, using: 'convert2rhel_through_foreman::integer'
end
end
2 changes: 1 addition & 1 deletion test/models/host/subscription_facet_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def test_search_role

def test_convert2rhel_through_foreman_on_host
subscription_facet.update(convert2rhel_through_foreman: 1)
assert_equal 1, host.subscription_facet.convert2rhel_through_foreman
assert true, host.subscription_facet.convert2rhel_through_foreman
assert_includes ::Host.search_for("convert2rhel_through_foreman = 1"), host
end

Expand Down

0 comments on commit 4a41739

Please sign in to comment.