summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider.rb4
-rw-r--r--lib/puppet/type.rb4
2 files changed, 4 insertions, 4 deletions
diff --git a/lib/puppet/provider.rb b/lib/puppet/provider.rb
index 1f13538af..3cef0dd71 100644
--- a/lib/puppet/provider.rb
+++ b/lib/puppet/provider.rb
@@ -91,8 +91,8 @@ class Puppet::Provider
end
end
- def self.defaultnum
- @defaults.length
+ def self.specificity
+ (@defaults.length * 100) + ancestors.select { |a| a.is_a? Class }.length
end
def self.initvars
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 91f991814..098d83254 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -1465,8 +1465,8 @@ class Type
# If we don't have any default we use suitable providers
defaults = suitable if defaults.empty?
- max = defaults.collect { |provider| provider.defaultnum }.max
- defaults = defaults.find_all { |provider| provider.defaultnum == max }
+ max = defaults.collect { |provider| provider.specificity }.max
+ defaults = defaults.find_all { |provider| provider.specificity == max }
retval = nil
if defaults.length > 1