summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorJesse Wolfe <jes5199@gmail.com>2010-06-24 15:27:14 -0700
committerJesse Wolfe <jes5199@gmail.com>2010-06-24 15:53:26 -0700
commit4bf695083839b61dc7107d8018e26ae991a52081 (patch)
treed740d2a2ad531e1a94d5b9cf639edc16e7aff563 /lib/puppet
parent51b70c05167399eb2274fc1add18b6b18d31429d (diff)
downloadpuppet-4bf695083839b61dc7107d8018e26ae991a52081.tar.gz
puppet-4bf695083839b61dc7107d8018e26ae991a52081.tar.xz
puppet-4bf695083839b61dc7107d8018e26ae991a52081.zip
[#3139] Make newattr idempotent
audit's munge was not idempotent because newattr was not idempotent. This patch simplifies newattr such that it becomes idempotent.
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/parameter.rb2
-rw-r--r--lib/puppet/type.rb18
2 files changed, 6 insertions, 14 deletions
diff --git a/lib/puppet/parameter.rb b/lib/puppet/parameter.rb
index 5642a75eb..abcd67dbc 100644
--- a/lib/puppet/parameter.rb
+++ b/lib/puppet/parameter.rb
@@ -283,7 +283,7 @@ class Puppet::Parameter
end
def value
- unmunge(@value)
+ unmunge(@value) if @value
end
# Store the value provided. All of the checking should possibly be
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 17d6b2a10..f6b0282c3 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -432,12 +432,8 @@ class Type
raise Puppet::Error.new("Got nil value for %s" % name)
end
- if obj = @parameters[name]
- obj.value = value
- return nil
- else
- self.newattr(name, :value => value)
- end
+ property = self.newattr(name)
+ property.value = value
nil
end
@@ -486,7 +482,7 @@ class Type
# Create the actual attribute instance. Requires either the attribute
# name or class as the first argument, then an optional hash of
# attributes to set during initialization.
- def newattr(name, options = {})
+ def newattr(name)
if name.is_a?(Class)
klass = name
name = klass.name
@@ -497,8 +493,7 @@ class Type
end
if @parameters.include?(name)
- raise Puppet::Error, "Parameter '%s' is already defined in %s" %
- [name, self.ref]
+ return @parameters[name]
end
if provider and ! provider.class.supports_parameter?(klass)
@@ -507,12 +502,9 @@ class Type
return nil
end
- # Add resource information at creation time, so it's available
- # during validation.
- options[:resource] = self
begin
# make sure the parameter doesn't have any errors
- return @parameters[name] = klass.new(options)
+ return @parameters[name] = klass.new(:resource => self)
rescue => detail
error = Puppet::Error.new("Parameter %s failed: %s" %
[name, detail])