summaryrefslogtreecommitdiff
path: root/lib/chef/platform
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2015-05-06 07:59:33 -0700
committerJohn Keiser <john@johnkeiser.com>2015-06-02 09:53:39 -0700
commit9028823f7b046c4c081b1cb1df005d61fbfa1db2 (patch)
tree74d1fa52adb202a6841148be3b82638a578b1b4e /lib/chef/platform
parent93f7b74349362d0c698a1080177b94e64248dac6 (diff)
downloadchef-9028823f7b046c4c081b1cb1df005d61fbfa1db2.tar.gz
Use the central priority map for `provides`
Diffstat (limited to 'lib/chef/platform')
-rw-r--r--lib/chef/platform/provider_priority_map.rb72
-rw-r--r--lib/chef/platform/resource_priority_map.rb19
2 files changed, 13 insertions, 78 deletions
diff --git a/lib/chef/platform/provider_priority_map.rb b/lib/chef/platform/provider_priority_map.rb
index 1539f61900..2d250b5006 100644
--- a/lib/chef/platform/provider_priority_map.rb
+++ b/lib/chef/platform/provider_priority_map.rb
@@ -1,88 +1,28 @@
+require 'singleton'
class Chef
class Platform
class ProviderPriorityMap
include Singleton
- def initialize
- load_default_map
- end
-
def get_priority_array(node, resource_name)
priority_map.get(node, resource_name.to_sym)
end
def set_priority_array(resource_name, priority_array, *filter)
- priority(resource_name.to_sym, priority_array.to_a, *filter)
+ priority(resource_name.to_sym, Array(priority_array), *filter)
end
def priority(*args)
priority_map.set(*args)
end
- private
-
- def load_default_map
- require 'chef/providers'
-
- #
- # Linux
- #
-
- # default block for linux O/Sen must come before platform_family exceptions
- priority :service, [
- Chef::Provider::Service::Systemd,
- Chef::Provider::Service::Insserv,
- Chef::Provider::Service::Redhat,
- ], os: "linux"
-
- priority :service, [
- Chef::Provider::Service::Systemd,
- Chef::Provider::Service::Arch,
- ], platform_family: "arch"
-
- priority :service, [
- Chef::Provider::Service::Systemd,
- Chef::Provider::Service::Gentoo,
- ], platform_family: "gentoo"
-
- priority :service, [
- # we can determine what systemd supports accurately
- Chef::Provider::Service::Systemd,
- # on debian-ish system if an upstart script exists that must win over sysv types
- Chef::Provider::Service::Upstart,
- Chef::Provider::Service::Insserv,
- Chef::Provider::Service::Debian,
- Chef::Provider::Service::Invokercd,
- ], platform_family: "debian"
-
- priority :service, [
- Chef::Provider::Service::Systemd,
- Chef::Provider::Service::Insserv,
- Chef::Provider::Service::Redhat,
- ], platform_family: [ "rhel", "fedora", "suse" ]
-
- #
- # BSDen
- #
-
- priority :service, Chef::Provider::Service::Freebsd, os: [ "freebsd", "netbsd" ]
- priority :service, Chef::Provider::Service::Openbsd, os: [ "openbsd" ]
-
- #
- # Solaris-en
- #
-
- priority :service, Chef::Provider::Service::Solaris, os: "solaris2"
-
- #
- # Mac
- #
-
- priority :service, Chef::Provider::Service::Macosx, os: "darwin"
- priority :package, Chef::Provider::Package::Homebrew, os: "darwin"
+ def list(node, resource_name)
+ priority_map.list(node, resource_name).flatten(1).uniq
end
+ private
+
def priority_map
require 'chef/node_map'
@priority_map ||= Chef::NodeMap.new
diff --git a/lib/chef/platform/resource_priority_map.rb b/lib/chef/platform/resource_priority_map.rb
index fc43b3e7db..e692cbb800 100644
--- a/lib/chef/platform/resource_priority_map.rb
+++ b/lib/chef/platform/resource_priority_map.rb
@@ -1,33 +1,28 @@
+require 'singleton'
+
class Chef
class Platform
class ResourcePriorityMap
include Singleton
- def initialize
- load_default_map
- end
-
def get_priority_array(node, resource_name)
priority_map.get(node, resource_name.to_sym)
end
def set_priority_array(resource_name, priority_array, *filter)
- priority resource_name.to_sym, priority_array.to_a, *filter
+ priority resource_name.to_sym, Array(priority_array), *filter
end
def priority(*args)
priority_map.set(*args)
end
- private
-
- def load_default_map
- require 'chef/resources'
-
- # MacOSX
- priority :package, Chef::Resource::HomebrewPackage, os: "darwin"
+ def list(*args)
+ priority_map.list(*args).flatten(1).uniq
end
+ private
+
def priority_map
require 'chef/node_map'
@priority_map ||= Chef::NodeMap.new