diff options
| author | Paul Berry <paul@puppetlabs.com> | 2011-01-07 15:39:52 -0800 |
|---|---|---|
| committer | Paul Berry <paul@puppetlabs.com> | 2011-01-07 15:46:33 -0800 |
| commit | 8f314f2bb14d61a2a26b67d002d90f84349b25b5 (patch) | |
| tree | 5b5377e91a9188e68a52fc47525792a7ddc360b1 /lib/puppet/transaction | |
| parent | e2700869a98ed769cea3d880a23e2f80330ea0fc (diff) | |
| download | puppet-8f314f2bb14d61a2a26b67d002d90f84349b25b5.tar.gz puppet-8f314f2bb14d61a2a26b67d002d90f84349b25b5.tar.xz puppet-8f314f2bb14d61a2a26b67d002d90f84349b25b5.zip | |
(#5710) Removed unnecessary calls to insync?
In the resource harness, we were calling insync? on all properties of
a resource, even if those properties weren't being managed. This was
unsafe. Changed to only call insync? on properties that are mentioned
in the manifest.
In addition, we discovered that the resource harness's computation of
desired_values was incorrect, and was consulting the current system
state rather than the desired state. Since this hash was
(erroneously) only being consulted to see if it included :ensure, this
didn't cause any obvious bugs. However it is now fixed.
Paired-with: Jesse Wolfe <jesse@puppetlabs.com>
Diffstat (limited to 'lib/puppet/transaction')
| -rw-r--r-- | lib/puppet/transaction/resource_harness.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/puppet/transaction/resource_harness.rb b/lib/puppet/transaction/resource_harness.rb index c259d3e05..c1b980632 100644 --- a/lib/puppet/transaction/resource_harness.rb +++ b/lib/puppet/transaction/resource_harness.rb @@ -37,7 +37,10 @@ class Puppet::Transaction::ResourceHarness current_values = current.to_hash historical_values = Puppet::Util::Storage.cache(resource).dup - desired_values = resource.to_resource.to_hash + desired_values = {} + resource.properties.each do |property| + desired_values[property.name] = property.should + end audited_params = (resource[:audit] || []).map { |p| p.to_sym } synced_params = [] @@ -55,7 +58,7 @@ class Puppet::Transaction::ResourceHarness elsif current_values[:ensure] != :absent work_order = resource.properties # Note: only the resource knows what order to apply changes in work_order.each do |param| - if !param.insync?(current_values[param.name]) + if desired_values[param.name] && !param.insync?(current_values[param.name]) events << apply_parameter(param, current_values[param.name], audited_params.include?(param.name), historical_values[param.name]) synced_params << param.name end |
