12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- From 90bece1faa1862465e97f7caf262c65cd84583ff Mon Sep 17 00:00:00 2001
- From: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
- Date: Fri, 11 Apr 2014 14:43:02 +0200
- Subject: [PATCH] Allow systemd units no provided by unit files to be handled.
- This allows querying status, start, stop, restart and list units that
- are not actually provided by unit files. Such units cannot be
- enabled/disabled and that's why those actions still prefer the
- "list-unit-files" output over "list-units".
- Units that couldn't be handled otherwise include for example mount
- units and sysvinit compatibility units such as those present on
- debian systems.
- The output of a "service.running ssh" state on a debian wheezy target
- is:
- ID: ssh
- Function: service.running
- Result: False
- Comment: The named service ssh is not available
- Changes:
- after this patch:
- ID: ssh
- Function: service.running
- Result: True
- Comment: The service ssh is already running
- Changes:
- ---
- salt/modules/systemd.py | 24 +++++++++++++++++++++++-
- 1 file changed, 23 insertions(+), 1 deletion(-)
- diff --git a/salt/modules/systemd.py b/salt/modules/systemd.py
- index 57b55f5..e2cfb1d 100644
- --- a/salt/modules/systemd.py
- +++ b/salt/modules/systemd.py
- @@ -72,6 +72,28 @@ def _systemctl_cmd(action, name):
- return 'systemctl {0} {1}'.format(action, _canonical_unit_name(name))
-
-
- +def _get_all_units():
- + '''
- + Get all units and their state. Units ending in .service
- + are normalized so that they can be referenced without a type suffix.
- + '''
- + rexp = re.compile(r'(?m)^(?P<name>.+)\.(?P<type>' +
- + '|'.join(VALID_UNIT_TYPES) +
- + r')\s+loaded\s+(?P<active>[^\s]+)')
- +
- + out = __salt__['cmd.run_stdout'](
- + 'systemctl --full list-units | col -b'
- + )
- +
- + ret = {}
- + for match in rexp.finditer(out):
- + name = match.group('name')
- + if match.group('type') != 'service':
- + name += '.' + match.group('type')
- + ret[name] = match.group('active')
- + return ret
- +
- +
- def _get_all_unit_files():
- '''
- Get all unit files and their state. Unit files ending in .service
- @@ -173,7 +195,7 @@ def get_all():
-
- salt '*' service.get_all
- '''
- - return sorted(_get_all_unit_files().keys())
- + return sorted(_get_all_units().keys())
-
-
- def available(name):
- --
- 1.9.3
|