summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2005-09-07 21:29:16 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2005-09-07 21:29:16 +0000
commit221343060856fa27ace550b1a76e6da59c2df536 (patch)
tree9863af95b54d3f2a5859283d0c83d45f1fed478c /lib/puppet
parent923226e7ac5d931dc6b01f5ae1cee3beb24b2fee (diff)
downloadpuppet-221343060856fa27ace550b1a76e6da59c2df536.tar.gz
puppet-221343060856fa27ace550b1a76e6da59c2df536.tar.xz
puppet-221343060856fa27ace550b1a76e6da59c2df536.zip
making states capable of being the namevar
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@636 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/type.rb19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 4a1afd91d..ca3b83ed7 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -774,7 +774,24 @@ class Type < Puppet::Element
#---------------------------------------------------------------
# derive the instance name based on class.namevar
def name
- return self[self.class.namevar]
+ unless defined? @name and @name
+ namevar = self.class.namevar
+ if self.class.validparameter?(namevar)
+ @name = @parameters[namevar]
+ elsif self.class.validstate?(namevar)
+ @name = self.should(namevar)
+ else
+ raise Puppet::DevError, "Could not find namevar %s for %s" %
+ [namevar, self.class.name]
+ end
+ end
+
+ unless @name
+ raise Puppet::DevError, "Could not find name %s for %s" %
+ [namevar, self.class.name]
+ end
+
+ return @name
end
#---------------------------------------------------------------