summaryrefslogtreecommitdiff
path: root/heat_cfntools/cfntools/cfn_helper.py
diff options
context:
space:
mode:
Diffstat (limited to 'heat_cfntools/cfntools/cfn_helper.py')
-rw-r--r--heat_cfntools/cfntools/cfn_helper.py60
1 files changed, 35 insertions, 25 deletions
diff --git a/heat_cfntools/cfntools/cfn_helper.py b/heat_cfntools/cfntools/cfn_helper.py
index b5dd5b4..4085a43 100644
--- a/heat_cfntools/cfntools/cfn_helper.py
+++ b/heat_cfntools/cfntools/cfn_helper.py
@@ -643,37 +643,47 @@ class ServicesHandler(object):
self.hooks = hooks
def _handle_sysv_command(self, service, command):
- service_exe = "/sbin/service"
- enable_exe = "/sbin/chkconfig"
- cmd = ""
- if "enable" == command:
- cmd = "%s %s on" % (enable_exe, service)
- elif "disable" == command:
- cmd = "%s %s off" % (enable_exe, service)
- elif "start" == command:
- cmd = "%s %s start" % (service_exe, service)
- elif "stop" == command:
- cmd = "%s %s stop" % (service_exe, service)
- elif "status" == command:
- cmd = "%s %s status" % (service_exe, service)
- command = CommandRunner(cmd)
- command.run()
- return command
+ if os.path.exists("/bin/systemctl"):
+ service_exe = "/bin/systemctl"
+ service = '%s.service' % service
+ service_start = '%s start %s'
+ service_status = '%s status %s'
+ service_stop = '%s stop %s'
+ elif os.path.exists("/sbin/service"):
+ service_exe = "/sbin/service"
+ service_start = '%s %s start'
+ service_status = '%s %s status'
+ service_stop = '%s %s stop'
+ else:
+ service_exe = "/usr/sbin/service"
+ service_start = '%s %s start'
+ service_status = '%s %s status'
+ service_stop = '%s %s stop'
+
+ if os.path.exists("/bin/systemctl"):
+ enable_exe = "/bin/systemctl"
+ enable_on = '%s enable %s'
+ enable_off = '%s disable %s'
+ elif os.path.exists("/sbin/chkconfig"):
+ enable_exe = "/sbin/chkconfig"
+ enable_on = '%s %s on'
+ enable_off = '%s %s off'
+ else:
+ enable_exe = "/usr/sbin/update-rc.d"
+ enable_on = '%s %s enable'
+ enable_off = '%s %s disable'
- def _handle_systemd_command(self, service, command):
- exe = "/bin/systemctl"
cmd = ""
- service = '%s.service' % service
if "enable" == command:
- cmd = "%s enable %s" % (exe, service)
+ cmd = enable_on % (enable_exe, service)
elif "disable" == command:
- cmd = "%s disable %s" % (exe, service)
+ cmd = enable_off % (enable_exe, service)
elif "start" == command:
- cmd = "%s start %s" % (exe, service)
+ cmd = service_start % (service_exe, service)
elif "stop" == command:
- cmd = "%s stop %s" % (exe, service)
+ cmd = service_stop % (service_exe, service)
elif "status" == command:
- cmd = "%s status %s" % (exe, service)
+ cmd = service_status % (service_exe, service)
command = CommandRunner(cmd)
command.run()
return command
@@ -725,7 +735,7 @@ class ServicesHandler(object):
# map of function pointers to various service handlers
_service_handlers = {
"sysvinit": _handle_sysv_command,
- "systemd": _handle_systemd_command
+ "systemd": _handle_sysv_command
}
def _service_handler(self, manager_name):