summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast/resourceref.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-07-19 19:23:56 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-07-19 19:23:56 +0000
commit501e8c85863de33ec98744510770dbe16ba85135 (patch)
tree1fd939adda9b9ca21d8ceaecad07a9734b8dc263 /lib/puppet/parser/ast/resourceref.rb
parentb9dd7ee7e2bf296a8551942c12d6b69624b4457f (diff)
downloadpuppet-501e8c85863de33ec98744510770dbe16ba85135.tar.gz
puppet-501e8c85863de33ec98744510770dbe16ba85135.tar.xz
puppet-501e8c85863de33ec98744510770dbe16ba85135.zip
Adding the ability to specify relationships to classes, using Class[name] resource references.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2715 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser/ast/resourceref.rb')
-rw-r--r--lib/puppet/parser/ast/resourceref.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/puppet/parser/ast/resourceref.rb b/lib/puppet/parser/ast/resourceref.rb
index e6d486902..e5bb69a46 100644
--- a/lib/puppet/parser/ast/resourceref.rb
+++ b/lib/puppet/parser/ast/resourceref.rb
@@ -19,17 +19,23 @@ class Puppet::Parser::AST
# We want a lower-case type.
objtype = @type.downcase
+ title = @title.safeevaluate(:scope => scope)
if scope.builtintype?(objtype)
# nothing
elsif dtype = scope.finddefine(objtype)
objtype = dtype.classname
+ elsif objtype == "class"
+ # Look up the full path to the class
+ if classobj = scope.findclass(title)
+ title = classobj.classname
+ else
+ raise Puppet::ParseError, "Could not find class %s" % title
+ end
else
- raise Puppet::ParseError, "Could not find type %s" % objtype
+ raise Puppet::ParseError, "Could not find resource type %s" % objtype
end
- title = @title.safeevaluate(:scope => scope)
-
return Puppet::Parser::Resource::Reference.new(
:type => objtype, :title => title
)