1464: def self.defaultprovider
1465: unless defined? @defaultprovider and @defaultprovider
1466: suitable = suitableprovider()
1467:
1468:
1469: defaults = suitable.find_all { |provider| provider.default? }
1470:
1471:
1472: defaults = suitable if defaults.empty?
1473: max = defaults.collect { |provider| provider.specificity }.max
1474: defaults = defaults.find_all { |provider| provider.specificity == max }
1475:
1476: retval = nil
1477: if defaults.length > 1
1478: Puppet.warning(
1479: "Found multiple default providers for %s: %s; using %s" %
1480: [self.name, defaults.collect { |i| i.name.to_s }.join(", "),
1481: defaults[0].name]
1482: )
1483: retval = defaults.shift
1484: elsif defaults.length == 1
1485: retval = defaults.shift
1486: else
1487: raise Puppet::DevError, "Could not find a default provider for %s" %
1488: self.name
1489: end
1490:
1491: @defaultprovider = retval
1492: end
1493:
1494: return @defaultprovider
1495: end