# File lib/puppet/resource/type.rb, line 146
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:     # Do nothing if the resource already exists; this makes sure we don't
151:     # get multiple copies of the class resource, which helps provide the
152:     # singleton nature of classes.
153:     # we should not do this for classes with parameters
154:     # if parameters are passed, we should still try to create the resource
155:     # even if it exists so that we can fail
156:     # this prevents us from being able to combine param classes with include
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