Skip to content

Commit

Permalink
Fixes #37299 - Fix puppet class assignment
Browse files Browse the repository at this point in the history
In case the puppet facet does not exist
  • Loading branch information
adamruzicka authored and stejskalleos committed Apr 9, 2024
1 parent 23d6c46 commit 4eaf7cd
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
3 changes: 1 addition & 2 deletions app/models/concerns/foreman_puppet/extensions/host_common.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ def all_puppetclasses(env = environment)
end

def puppetclasses
return ForemanPuppet::Puppetclass.none unless puppet
puppet.puppetclasses
(puppet || build_puppet).puppetclasses
end
end
end
Expand Down
12 changes: 12 additions & 0 deletions test/models/foreman_puppet/host_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -325,5 +325,17 @@ class HostTest < ActiveSupport::TestCase
h.save!
assert_empty h.puppet.config_groups
end

test 'assign a puppet class to host without puppet facet' do
puppet_class = FactoryBot.create(:puppetclass)
host = FactoryBot.create(:host)
# This would raise the following exception
# NoMethodError: undefined method `<<' for #<ActiveRecord::Relation []>
host.puppetclasses << puppet_class

assert_not_nil host.puppet
assert_includes host.puppet.puppetclasses, puppet_class
assert_includes host.puppetclasses, puppet_class
end
end
end
12 changes: 12 additions & 0 deletions test/models/foreman_puppet/hostgroup_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,17 @@ class HostgroupTest < ActiveSupport::TestCase
assert_equal 1, hostgroups.count
assert_equal hostgroups.pluck(:id).sort, hostgroups.map(&:id).sort
end

test 'assign a puppet class to hostgroup without puppet facet' do
puppet_class = FactoryBot.create(:puppetclass)
hostgroup = FactoryBot.create(:hostgroup)
# This would raise the following exception
# NoMethodError: undefined method `<<' for #<ActiveRecord::Relation []>
hostgroup.puppetclasses << puppet_class

assert_not_nil hostgroup.puppet
assert_includes hostgroup.puppet.puppetclasses, puppet_class
assert_includes hostgroup.puppetclasses, puppet_class
end
end
end

0 comments on commit 4eaf7cd

Please sign in to comment.