146: def ensure_in_catalog(scope, parameters=nil)
147: type == :definition and raise ArgumentError, "Cannot create resources for defined resource types"
148: resource_type = type == :hostclass ? :class : :node
149:
150:
151:
152:
153:
154:
155:
156:
157: if resource = scope.catalog.resource(resource_type, name) and !parameters
158: return resource
159: end
160: resource = Puppet::Parser::Resource.new(resource_type, name, :scope => scope, :source => self)
161: if parameters
162: parameters.each do |k,v|
163: resource.set_parameter(k,v)
164: end
165: end
166: instantiate_resource(scope, resource)
167: scope.compiler.add_resource(scope, resource)
168: resource
169: end