diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-02-27 23:09:53 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-02-27 23:09:53 +0000 |
commit | 56116c2aa64ccbbc6740d30b5901b2700bcae036 (patch) | |
tree | c03cac4bf2eb6ea372bd0476ae388317a0bb2e26 /lib/puppet/parser | |
parent | c894eb20ddf812056e897217fd55d31182dbc52f (diff) | |
download | puppet-56116c2aa64ccbbc6740d30b5901b2700bcae036.tar.gz puppet-56116c2aa64ccbbc6740d30b5901b2700bcae036.tar.xz puppet-56116c2aa64ccbbc6740d30b5901b2700bcae036.zip |
Fixing bug #73; node names now appear only once in the path
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@955 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r-- | lib/puppet/parser/ast/node.rb | 6 | ||||
-rw-r--r-- | lib/puppet/parser/ast/nodedef.rb | 6 | ||||
-rw-r--r-- | lib/puppet/parser/scope.rb | 14 |
3 files changed, 20 insertions, 6 deletions
diff --git a/lib/puppet/parser/ast/node.rb b/lib/puppet/parser/ast/node.rb index e8f4c5d87..97e8de06e 100644 --- a/lib/puppet/parser/ast/node.rb +++ b/lib/puppet/parser/ast/node.rb @@ -3,18 +3,18 @@ class Puppet::Parser::AST # other objects. That's just the way it is, at least for now. class Node < AST::HostClass @name = :node - attr_accessor :name, :args, :code, :parentclass + attr_accessor :type, :args, :code, :parentclass #def evaluate(scope, facts = {}) def evaluate(hash) scope = hash[:scope] facts = hash[:facts] || {} + #scope.info "name is %s, type is %s" % [self.name, self.type] # nodes are never instantiated like a normal object, # but we need the type to be the name users would use for # instantiation, otherwise tags don't work out scope = scope.newscope( - :type => @name, - :name => @name, + :type => self.type, :keyword => @keyword ) scope.context = self.object_id diff --git a/lib/puppet/parser/ast/nodedef.rb b/lib/puppet/parser/ast/nodedef.rb index d41eeecde..cc710329f 100644 --- a/lib/puppet/parser/ast/nodedef.rb +++ b/lib/puppet/parser/ast/nodedef.rb @@ -21,8 +21,12 @@ class Puppet::Parser::AST names.each { |name| #Puppet.debug("defining host '%s' in scope %s" % # [name, scope.object_id]) + # We use 'type' here instead of name, because every component + # type supports both 'type' and 'name', and 'type' is a more + # appropriate description of the syntactic role that this term + # plays. arghash = { - :name => name, + :type => name, :code => @code } diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index 344372327..e81664219 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -190,7 +190,12 @@ module Puppet # If they've passed classes in, then just generate from there. if classes - return self.gennode(names, facts, classes, parent) + return self.gennode( + :names => names, + :facts => facts, + :classes => classes, + :parent => parent + ) end scope = code = nil @@ -243,7 +248,12 @@ module Puppet # Pull in all of the appropriate classes and evaluate them. It'd # be nice if this didn't know quite so much about how AST::Node # operated internally. - def gennode(names, facts, classes, parent) + #def gennode(names, facts, classes, parent) + def gennode(hash) + names = hash[:names] + facts = hash[:facts] + classes = hash[:classes] + parent = hash[:parent] name = names.shift arghash = { :name => name, |