@ -75,7 +75,6 @@ def _find_binaries():
def _get_service_status(name):
def _get_service_status(name):
rc, status_stdout, status_stderr = _run("%s %s status" % (SERVICE, name))
rc, status_stdout, status_stderr = _run("%s %s status" % (SERVICE, name))
status = status_stdout + status_stderr
# set the running state to None because we don't know it yet
# set the running state to None because we don't know it yet
running = None
running = None
@ -99,16 +98,18 @@ def _get_service_status(name):
# if the job status is still not known check it by status output keywords
# if the job status is still not known check it by status output keywords
if running == None:
if running == None:
# first tranform the status output that could irritate keyword matching
# first tranform the status output that could irritate keyword matching
cleaned_status_std out = status_stdout.lower().replace(name.lower(),'')
cleanout = status_stdout.lower().replace(name.lower(), '')
if cleaned_status_stdout.find("stop") != -1 :
if "stop" in cleanout :
running = False
running = False
elif cleaned_status_stdout.find("run") != -1 and cleaned_status_stdout.find("not") != -1 :
elif "run" in cleanout and "not" in cleanout :
running = False
running = False
elif cleaned_status_stdout.find("run") != -1 and cleaned_status_stdout.find("not") == -1 :
elif "run" in cleanout and "not" not in cleanout :
running = True
running = True
elif cleaned_status_stdout.find("start") != -1 and cleaned_status_stdout.find("not") == -1 :
elif "start" in cleanout and "not" not in cleanout :
running = True
running = True
elif 'could not access pid file' in cleaned_status_stdout:
elif 'could not access pid file' in cleanout:
running = False
elif 'is dead and pid file exists' in cleanout:
running = False
running = False
# if the job status is still not known check it by special conditions
# if the job status is still not known check it by special conditions
@ -205,8 +206,9 @@ if state or enable:
print json.dumps({
print json.dumps({
"failed" : True,
"failed" : True,
"msg" : "failed determining the current service state => state stays unchanged",
"msg" : "failed determining the current service state => state stays unchanged",
"changed": False
})
})
print >> sys.stderr, out + err
sys.exit(1)
elif state:
elif state:
# a state change command has been requested
# a state change command has been requested
@ -244,10 +246,9 @@ if state or enable:
if rc != 0:
if rc != 0:
print json.dumps({
print json.dumps({
"failed" : 1 ,
"failed" : True ,
"rc" : rc,
"rc" : rc,
})
})
print >> sys.stderr, out + err
sys.exit(1)
sys.exit(1)
@ -260,20 +261,8 @@ if state or enable:
if list_items and list_items in [ 'status' ]:
if list_items and list_items in [ 'status' ]:
result['status'] = stdout
result['status'] = stdout
print json.dumps(result)
print json.dumps(result)
elif list_items is not None:
# solo list=status mode, don't change anything, just return
# suitable for /usr/bin/ansible usage or API, playbooks
# not so much
print json.dumps({
"status" : status
})
else:
else:
print json.dumps(dict(failed=True, msg="expected state or list parameters"))
print json.dumps(dict(failed=True, msg="expected state or list parameters"))