mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
systemctl show rc changes across versions
to avoid different errors across versions, ignore rc in favor of found/notfound fixes #5710
This commit is contained in:
parent
b264f8c1cd
commit
da9adccb02
1 changed files with 28 additions and 31 deletions
|
@ -272,44 +272,41 @@ def main():
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
module.fail_json(msg='failure %d during daemon-reload: %s' % (rc, err))
|
module.fail_json(msg='failure %d during daemon-reload: %s' % (rc, err))
|
||||||
|
|
||||||
# check service data
|
|
||||||
(rc, out, err) = module.run_command("%s show '%s'" % (systemctl, unit))
|
|
||||||
if rc != 0:
|
|
||||||
module.fail_json(msg='failure %d running systemctl show for %r: %s' % (rc, unit, err))
|
|
||||||
|
|
||||||
found = False
|
found = False
|
||||||
is_initd = sysv_exists(unit)
|
is_initd = sysv_exists(unit)
|
||||||
is_systemd = False
|
is_systemd = False
|
||||||
|
|
||||||
# load return of systemctl show into dictionary for easy access and return
|
# check service data, cannot error out on rc as it changes across versions, assume not found
|
||||||
multival = []
|
(rc, out, err) = module.run_command("%s show '%s'" % (systemctl, unit))
|
||||||
if out:
|
if rc == 0:
|
||||||
k = None
|
# load return of systemctl show into dictionary for easy access and return
|
||||||
for line in to_native(out).split('\n'): # systemd can have multiline values delimited with {}
|
multival = []
|
||||||
if line.strip():
|
if out:
|
||||||
if k is None:
|
k = None
|
||||||
if '=' in line:
|
for line in to_native(out).split('\n'): # systemd can have multiline values delimited with {}
|
||||||
k,v = line.split('=', 1)
|
if line.strip():
|
||||||
if v.lstrip().startswith('{'):
|
if k is None:
|
||||||
if not v.rstrip().endswith('}'):
|
if '=' in line:
|
||||||
multival.append(line)
|
k,v = line.split('=', 1)
|
||||||
continue
|
if v.lstrip().startswith('{'):
|
||||||
result['status'][k] = v.strip()
|
if not v.rstrip().endswith('}'):
|
||||||
k = None
|
multival.append(line)
|
||||||
else:
|
continue
|
||||||
if line.rstrip().endswith('}'):
|
result['status'][k] = v.strip()
|
||||||
result['status'][k] = '\n'.join(multival).strip()
|
k = None
|
||||||
multival = []
|
|
||||||
k = None
|
|
||||||
else:
|
else:
|
||||||
multival.append(line)
|
if line.rstrip().endswith('}'):
|
||||||
|
result['status'][k] = '\n'.join(multival).strip()
|
||||||
|
multival = []
|
||||||
|
k = None
|
||||||
|
else:
|
||||||
|
multival.append(line)
|
||||||
|
|
||||||
is_systemd = 'LoadState' in result['status'] and result['status']['LoadState'] != 'not-found'
|
is_systemd = 'LoadState' in result['status'] and result['status']['LoadState'] != 'not-found'
|
||||||
|
|
||||||
# Check for loading error
|
|
||||||
if is_systemd and 'LoadError' in result['status']:
|
|
||||||
module.fail_json(msg="Error loading unit file '%s': %s" % (unit, result['status']['LoadError']))
|
|
||||||
|
|
||||||
|
# Check for loading error
|
||||||
|
if is_systemd and 'LoadError' in result['status']:
|
||||||
|
module.fail_json(msg="Error loading unit file '%s': %s" % (unit, result['status']['LoadError']))
|
||||||
|
|
||||||
# Does service exist?
|
# Does service exist?
|
||||||
found = is_systemd or is_initd
|
found = is_systemd or is_initd
|
||||||
|
|
Loading…
Add table
Reference in a new issue