Class: Chef::Platform::ServiceHelpers

Inherits:
Object
  • Object
show all
Defined in:
lib/chef/platform/service_helpers.rb

Class Method Summary collapse

Class Method Details

.config_for_service(service_name) ⇒ Object


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/chef/platform/service_helpers.rb', line 68

def config_for_service(service_name)
  configs = []

  if ::File.exist?(Chef.path_to("/etc/init.d/#{service_name}"))
    configs += [ :initd, :systemd ]
  end

  if ::File.exist?(Chef.path_to("/etc/init/#{service_name}.conf"))
    configs << :upstart
  end

  if ::File.exist?(Chef.path_to("/etc/xinetd.d/#{service_name}"))
    configs << :xinetd
  end

  if ::File.exist?(Chef.path_to("/etc/rc.d/#{service_name}"))
    configs << :etc_rcd
  end

  if ::File.exist?(Chef.path_to("/usr/local/etc/rc.d/#{service_name}"))
    configs << :usr_local_etc_rcd
  end

  if has_systemd_service_unit?(service_name) || has_systemd_unit?(service_name)
    configs << :systemd
  end

  configs
end

.service_resource_providersObject

This helper is mostly used to sort out the mess of different linux mechanisms that can be used to start services. It does not necessarily need to linux-specific, but currently all our other service providers are narrowly platform-specific with no alternatives.

NOTE: if a system has (for example) chkconfig installed then we should report that chkconfig is installed. The fact that a system may also have systemd installed does not mean that we do not report that systemd is also installed. This module is purely for discovery of all the alternatives, handling the priority of the different services is NOT a design concern of this module.


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/chef/platform/service_helpers.rb', line 38

def service_resource_providers
  providers = []

  if ::File.exist?(Chef.path_to("/usr/sbin/update-rc.d"))
    providers << :debian
  end

  if ::File.exist?(Chef.path_to("/usr/sbin/invoke-rc.d"))
    providers << :invokercd
  end

  if ::File.exist?(Chef.path_to("/sbin/initctl"))
    providers << :upstart
  end

  if ::File.exist?(Chef.path_to("/sbin/insserv"))
    providers << :insserv
  end

  if systemd_is_init?
    providers << :systemd
  end

  if ::File.exist?(Chef.path_to("/sbin/chkconfig"))
    providers << :redhat
  end

  providers
end