Revision 709ad8d6
Added by Joseph Magen over 10 years ago
app/models/hostgroup.rb | ||
---|---|---|
before_save :remove_duplicated_nested_class
|
||
before_save :set_label, :on => [:create, :update, :destroy]
|
||
after_save :set_other_labels, :on => [:update, :destroy]
|
||
after_save :update_matchers , :on => :update, :if => Proc.new {|hg| hg.label_changed? }
|
||
|
||
alias_attribute :os, :operatingsystem
|
||
audited :except => [:label], :allow_mass_assignment => true
|
||
... | ... | |
self.puppetclasses -= ancestors.map(&:puppetclasses).flatten
|
||
end
|
||
|
||
def update_matchers
|
||
lookup_values = LookupValue.where(:match => "hostgroup=#{label_was}")
|
||
lookup_values.update_all(:match => "hostgroup=#{label}")
|
||
end
|
||
|
||
end
|
test/fixtures/lookup_values.yml | ||
---|---|---|
match: hostgroup=Common
|
||
lookup_key: two
|
||
value: 8443
|
||
|
||
five:
|
||
match: hostgroup=Parent
|
||
lookup_key: four
|
||
value: 8443
|
||
|
||
six:
|
||
match: hostgroup=Parent/inherited
|
||
lookup_key: four
|
||
value: 8443
|
test/functional/hostgroups_controller_test.rb | ||
---|---|---|
assert_equal one, Hostgroup.find_by_name("second").users.first
|
||
end
|
||
|
||
test "hostgroup rename changes matcher" do
|
||
hostgroup = hostgroups(:common)
|
||
put :update, {:id => hostgroup.id, :hostgroup => {:name => 'new_common'}}, set_session_user
|
||
assert_equal 'hostgroup=new_common', lookup_values(:hostgroupcommon).match
|
||
assert_equal 'hostgroup=new_common', lookup_values(:four).match
|
||
end
|
||
|
||
test "hostgroup rename changes matcher" do
|
||
hostgroup = hostgroups(:common)
|
||
put :update, {:id => hostgroup.id, :hostgroup => {:name => 'new_common'}}, set_session_user
|
||
assert_equal 'hostgroup=new_common', lookup_values(:hostgroupcommon).match
|
||
assert_equal 'hostgroup=new_common', lookup_values(:four).match
|
||
end
|
||
|
||
test "hostgroup rename of parent changes matcher of parent and child hostgroup" do
|
||
hostgroup = hostgroups(:parent)
|
||
put :update, {:id => hostgroup.id, :hostgroup => {:name => 'new_parent'}}, set_session_user
|
||
assert_equal 'hostgroup=new_parent', lookup_values(:five).match
|
||
assert_equal 'hostgroup=new_parent/inherited', lookup_values(:six).match
|
||
end
|
||
|
||
test "hostgroup rename of child only changes matcher of child hostgroup" do
|
||
hostgroup = hostgroups(:inherited)
|
||
put :update, {:id => hostgroup.id, :hostgroup => {:name => 'new_child'}}, set_session_user
|
||
assert_equal 'hostgroup=Parent/new_child', lookup_values(:six).match
|
||
end
|
||
|
||
|
||
end
|
test/unit/hostgroup_test.rb | ||
---|---|---|
lv = lookup_values(:four)
|
||
lv.match = "hostgroup=#{hostgroup.name}"
|
||
lv.save!
|
||
assert_equal [lookup_values(:four)], hostgroup.lookup_values
|
||
assert_equal [lookup_values(:hostgroupcommon), lookup_values(:four)], hostgroup.lookup_values.sort
|
||
end
|
||
|
||
end
|
Also available in: Unified diff
fixes #2866 - Changing a hostgroup name doesn't update associated Smart Variable matchers