diff options
Diffstat (limited to 'lib/chef/platform/provider_priority_map.rb')
-rw-r--r-- | lib/chef/platform/provider_priority_map.rb | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/lib/chef/platform/provider_priority_map.rb b/lib/chef/platform/provider_priority_map.rb new file mode 100644 index 0000000000..ccf6ef0bbe --- /dev/null +++ b/lib/chef/platform/provider_priority_map.rb @@ -0,0 +1,80 @@ + +require 'chef/providers' + +class Chef + class Platform + class ProviderPriorityMap + include Singleton + + def initialize + load_default_map + end + + def load_default_map + + # + # 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, [ + # on debian-ish system if an upstart script exists that always wins + Chef::Provider::Service::Upstart, + Chef::Provider::Service::Systemd, + 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" ] + + # + # Solaris-en + # + + priority :service, Chef::Provider::Service::Solaris, os: "solaris2" + + # + # Mac + # + + priority :service, Chef::Provider::Service::Macosx, os: "darwin" + end + + def priority_map + @priority_map ||= Chef::NodeMap.new + end + + def priority(*args) + priority_map.set(*args) + end + + end + end +end |