summaryrefslogtreecommitdiff
path: root/lib/chef/provider/service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/provider/service.rb')
-rw-r--r--lib/chef/provider/service.rb96
1 files changed, 45 insertions, 51 deletions
diff --git a/lib/chef/provider/service.rb b/lib/chef/provider/service.rb
index 8af04ec39f..1bdc22627e 100644
--- a/lib/chef/provider/service.rb
+++ b/lib/chef/provider/service.rb
@@ -23,6 +23,8 @@ class Chef
class Provider
class Service < Chef::Provider
+ provides :service
+
include Chef::Mixin::Command
def initialize(new_resource, run_context)
@@ -169,57 +171,49 @@ class Chef
!!@new_resource.send(method_name)
end
- #
- # Platform-specific versions
- #
-
- #
- # Linux
- #
-
- require 'chef/chef_class'
- require 'chef/provider/service/systemd'
- require 'chef/provider/service/insserv'
- require 'chef/provider/service/redhat'
- require 'chef/provider/service/arch'
- require 'chef/provider/service/gentoo'
- require 'chef/provider/service/upstart'
- require 'chef/provider/service/debian'
- require 'chef/provider/service/invokercd'
- require 'chef/provider/service/freebsd'
- require 'chef/provider/service/openbsd'
- require 'chef/provider/service/solaris'
- require 'chef/provider/service/macosx'
-
- # default block for linux O/Sen must come before platform_family exceptions
- # so that they take precedence
- Chef.set_provider_priority_array :service, [ Systemd, Insserv, Redhat ],
- os: "linux"
-
- Chef.set_provider_priority_array :service, [ Systemd, Arch ],
- platform_family: "arch"
- Chef.set_provider_priority_array :service, [ Systemd, Gentoo ],
- platform_family: "gentoo"
- # we can determine what systemd supports accurately
- # on debian-ish system if an upstart script exists that must win over sysv types
- Chef.set_provider_priority_array :service, [ Systemd, Upstart, Insserv, Debian, Invokercd ],
- platform_family: "debian"
- Chef.set_provider_priority_array :service, [ Systemd, Insserv, Redhat ],
- platform_family: %w(rhel fedora suse)
-
- # BSDen
- Chef.set_provider_priority_array :service, Freebsd,
- os: %w(freebsd netbsd)
- Chef.set_provider_priority_array :service, Openbsd,
- os: "openbsd"
-
- # Solaris-en
- Chef.set_provider_priority_array :service, Solaris,
- os: "solaris2"
-
- # Mac
- Chef.set_provider_priority_array :service, Macosx,
- os: "darwin"
+ module ServicePriorityInit
+
+ #
+ # Platform-specific versions
+ #
+
+ #
+ # Linux
+ #
+
+ require 'chef/chef_class'
+ require 'chef/provider/service/systemd'
+ require 'chef/provider/service/insserv'
+ require 'chef/provider/service/redhat'
+ require 'chef/provider/service/arch'
+ require 'chef/provider/service/gentoo'
+ require 'chef/provider/service/upstart'
+ require 'chef/provider/service/debian'
+ require 'chef/provider/service/invokercd'
+ require 'chef/provider/service/freebsd'
+ require 'chef/provider/service/openbsd'
+ require 'chef/provider/service/solaris'
+ require 'chef/provider/service/macosx'
+
+ def self.os(os, *providers)
+ Chef.set_provider_priority_array(:service, providers, os: os)
+ end
+ def self.platform_family(platform_family, *providers)
+ Chef.set_provider_priority_array(:service, providers, platform_family: platform_family)
+ end
+
+ os %w(freebsd netbsd), Freebsd
+ os %w(openbsd), Openbsd
+ os %w(solaris2), Solaris
+ os %w(darwin), Macosx
+ os %w(linux), Systemd, Insserv, Redhat
+
+ platform_family %w(arch), Systemd, Arch
+ platform_family %w(gentoo), Systemd, Gentoo
+ platform_family %w(debian), Systemd, Upstart, Insserv, Debian, Invokercd
+ platform_family %w(rhel fedora suse), Systemd, Insserv, Redhat
+
+ end
end
end
end