Class: Chef::Platform::ServiceHelpers

Inherits:
Object
  • Object
show all
Extended by:
Mixin::ShellOut, Mixin::Which
Defined in:
lib/chef/platform/service_helpers.rb

Constant Summary

Constants included from Mixin::ShellOut

Mixin::ShellOut::DEPRECATED_OPTIONS

Class Method Summary collapse

Methods included from Mixin::Which

which

Methods included from Mixin::ShellOut

run_command_compatible_options, shell_out, shell_out!, shell_out_with_systems_locale, shell_out_with_systems_locale!

Class Method Details

.config_for_service(service_name) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/chef/platform/service_helpers.rb', line 75

def config_for_service(service_name)
  configs = []

  if ::File.exist?("/etc/init.d/#{service_name}")
    configs << :initd
  end

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

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

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

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

  if systemd_sanity_check? && platform_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.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/chef/platform/service_helpers.rb', line 44

def service_resource_providers
  service_resource_providers = []

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

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

  if ::File.exist?("/sbin/insserv")
    service_resource_providers << :insserv
  end

  # debian >= 6.0 has /etc/init but does not have upstart
  if ::File.exist?("/etc/init") && ::File.exist?("/sbin/start")
    service_resource_providers << :upstart
  end

  if ::File.exist?("/sbin/chkconfig")
    service_resource_providers << :redhat
  end

  if systemd_sanity_check?
    service_resource_providers << :systemd
  end

  service_resource_providers
end