summaryrefslogtreecommitdiffstats
path: root/lib/puppet/transaction
diff options
context:
space:
mode:
authorPaul Berry <paul@puppetlabs.com>2011-01-07 15:39:52 -0800
committerPaul Berry <paul@puppetlabs.com>2011-01-07 15:46:33 -0800
commit8f314f2bb14d61a2a26b67d002d90f84349b25b5 (patch)
tree5b5377e91a9188e68a52fc47525792a7ddc360b1 /lib/puppet/transaction
parente2700869a98ed769cea3d880a23e2f80330ea0fc (diff)
downloadpuppet-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.rb7
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