From 05c6732462593c9448afe69f823fd85a840aa48b Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Mon, 27 Jul 2015 12:50:48 -0400 Subject: [PATCH] Prefer non-zero rc's over text analyis in service status checks Fixes ansible/ansible#10441 --- lib/ansible/modules/system/service.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/ansible/modules/system/service.py b/lib/ansible/modules/system/service.py index 60d4838cf22..bfb9b6f0248 100644 --- a/lib/ansible/modules/system/service.py +++ b/lib/ansible/modules/system/service.py @@ -579,6 +579,11 @@ class LinuxService(Service): self.running = "started" in openrc_status_stdout self.crashed = "crashed" in openrc_status_stderr + # Prefer a non-zero return code. For reference, see: + # http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html + if self.running is None and rc in [1, 2, 3, 4, 69]: + self.running = False + # if the job status is still not known check it by status output keywords # Only check keywords if there's only one line of output (some init # scripts will output verbosely in case of error and those can emit @@ -603,14 +608,10 @@ class LinuxService(Service): elif 'dead but pid file exists' in cleanout: self.running = False - # if the job status is still not known check it by response code - # For reference, see: - # http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html - if self.running is None: - if rc in [1, 2, 3, 4, 69]: - self.running = False - elif rc == 0: - self.running = True + # if the job status is still not known and we got a zero for the + # return code, assume here that the service is running + if self.running is None and rc == 0: + self.running = True # if the job status is still not known check it by special conditions if self.running is None: