summaryrefslogtreecommitdiffstats
path: root/lib/puppet/node/configuration.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/node/configuration.rb')
-rw-r--r--lib/puppet/node/configuration.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/puppet/node/configuration.rb b/lib/puppet/node/configuration.rb
index 061e83f4b..e131839df 100644
--- a/lib/puppet/node/configuration.rb
+++ b/lib/puppet/node/configuration.rb
@@ -60,11 +60,22 @@ class Puppet::Node::Configuration < Puppet::PGraph
end
ref = resource.ref
+
if @resource_table.include?(ref)
raise ArgumentError, "Resource %s is already defined" % ref
else
@resource_table[ref] = resource
end
+
+ # If the name and title differ, set up an alias
+ if ! resource.is_a?(Puppet::Type::Component) and resource.respond_to?(:title) and resource.name != resource.title
+ if obj = resource(resource.class.name, resource.name)
+ raise Puppet::Error, "%s already exists with name %s" % [obj.title, self.name] if resource.class.isomorphic?
+ else
+ self.alias(resource, resource.name)
+ end
+ end
+
resource.configuration = self unless is_relationship_graph
add_vertex!(resource)
end
@@ -183,6 +194,11 @@ class Puppet::Node::Configuration < Puppet::PGraph
unless klass = Puppet::Type.type(type)
raise ArgumentError, "Unknown resource type %s" % type
end
+ if options.is_a?(Puppet::TransObject)
+ options.configuration = self
+ else
+ options[:configuration] = self
+ end
return unless resource = klass.create(options)
@transient_resources << resource if applying?