1355: def self.defaultprovider
1356: unless @defaultprovider
1357: suitable = suitableprovider
1358:
1359:
1360: defaults = suitable.find_all { |provider| provider.default? }
1361:
1362:
1363: defaults = suitable if defaults.empty?
1364: max = defaults.collect { |provider| provider.specificity }.max
1365: defaults = defaults.find_all { |provider| provider.specificity == max }
1366:
1367: retval = nil
1368: if defaults.length > 1
1369: Puppet.warning(
1370: "Found multiple default providers for #{self.name}: #{defaults.collect { |i| i.name.to_s }.join(", ")}; using #{defaults[0].name}"
1371: )
1372: retval = defaults.shift
1373: elsif defaults.length == 1
1374: retval = defaults.shift
1375: else
1376: raise Puppet::DevError, "Could not find a default provider for #{self.name}"
1377: end
1378:
1379: @defaultprovider = retval
1380: end
1381:
1382: @defaultprovider
1383: end