class Puppet::Parser::Compiler::CatalogValidator::RelationshipValidator
Validator that asserts relationship metaparameters refer to valid resources
Public Instance Methods
validate()
click to toggle source
# File lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb 4 def validate 5 catalog.resources.each do |resource| 6 next unless resource.is_a?(Puppet::Parser::Resource) 7 next if resource.virtual? 8 resource.eachparam do |param| 9 pclass = Puppet::Type.metaparamclass(param.name) 10 validate_relationship(param) if !pclass.nil? && pclass < Puppet::Type::RelationshipMetaparam 11 end 12 end 13 nil 14 end
Private Instance Methods
validate_relationship(param)
click to toggle source
# File lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb 18 def validate_relationship(param) 19 # the referenced resource must exist 20 refs = param.value.is_a?(Array) ? param.value.flatten : [param.value] 21 refs.each do |r| 22 next if r.nil? || r == :undef 23 res = r.to_s 24 begin 25 found = catalog.resource(res) 26 rescue ArgumentError => e 27 # Raise again but with file and line information 28 raise CatalogValidationError.new(e.message, param.file, param.line) 29 end 30 unless found 31 msg = _("Could not find resource '%{res}' in parameter '%{param}'") % { res: res, param: param.name.to_s } 32 raise CatalogValidationError.new(msg, param.file, param.line) 33 end 34 end 35 end