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