139: def evaluate_classes(classes, scope, lazy_evaluate = true)
140: raise Puppet::DevError, "No source for scope passed to evaluate_classes" unless scope.source
141: found = []
142: param_classes = nil
143:
144:
145: if classes.class == Hash
146: param_classes = classes
147: classes = classes.keys
148: end
149: classes.each do |name|
150:
151: if klass = scope.find_hostclass(name)
152:
153: if param_classes
154: resource = klass.ensure_in_catalog(scope, param_classes[name] || {})
155: else
156: found << name and next if scope.class_scope(klass)
157: resource = klass.ensure_in_catalog(scope)
158: end
159:
160:
161:
162: resource.evaluate unless lazy_evaluate
163: found << name
164: else
165: Puppet.info "Could not find class #{name} for #{node.name}"
166: @catalog.tag(name)
167: end
168: end
169: found
170: end