mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
Handle cases where retcode/output feature is backported
This will handle the case of RHEL 7.3, which maintains an older version of systemd with the retcode/output changes from "systemctl status" in systemd 231 backported.
This commit is contained in:
parent
b3364646ad
commit
d916c2b49c
@ -85,7 +85,13 @@ def _check_available(name):
|
||||
# See: https://github.com/systemd/systemd/pull/3385
|
||||
# Also: https://github.com/systemd/systemd/commit/3dced37
|
||||
return 0 <= _status['retcode'] < 4
|
||||
|
||||
out = _status['stdout'].lower()
|
||||
if 'could not be found' in out:
|
||||
# Catch cases where the systemd version is < 231 but the return code
|
||||
# and output changes have been backported (e.g. RHEL 7.3).
|
||||
return False
|
||||
|
||||
for line in salt.utils.itertools.split(out, '\n'):
|
||||
match = re.match(r'\s+loaded:\s+(\S+)', line)
|
||||
if match:
|
||||
|
@ -189,33 +189,53 @@ class SystemdTestCase(TestCase):
|
||||
Test to check that the given service is available
|
||||
'''
|
||||
mock = MagicMock(side_effect=lambda x: _SYSTEMCTL_STATUS[x])
|
||||
|
||||
# systemd < 231
|
||||
with patch.dict(systemd.__context__, {'salt.utils.systemd.version': 230}):
|
||||
with patch.object(systemd, '_systemctl_status', mock):
|
||||
self.assertTrue(systemd.available('sshd.service'))
|
||||
self.assertFalse(systemd.available('foo.service'))
|
||||
|
||||
# systemd >= 231
|
||||
with patch.dict(systemd.__context__, {'salt.utils.systemd.version': 231}):
|
||||
with patch.dict(_SYSTEMCTL_STATUS, _SYSTEMCTL_STATUS_GTE_231):
|
||||
with patch.object(systemd, '_systemctl_status', mock):
|
||||
self.assertTrue(systemd.available('sshd.service'))
|
||||
self.assertFalse(systemd.available('bar.service'))
|
||||
|
||||
# systemd < 231 with retcode/output changes backported (e.g. RHEL 7.3)
|
||||
with patch.dict(systemd.__context__, {'salt.utils.systemd.version': 219}):
|
||||
with patch.dict(_SYSTEMCTL_STATUS, _SYSTEMCTL_STATUS_GTE_231):
|
||||
with patch.object(systemd, '_systemctl_status', mock):
|
||||
self.assertTrue(systemd.available('sshd.service'))
|
||||
self.assertFalse(systemd.available('bar.service'))
|
||||
|
||||
def test_missing(self):
|
||||
'''
|
||||
Test to the inverse of service.available.
|
||||
'''
|
||||
mock = MagicMock(side_effect=lambda x: _SYSTEMCTL_STATUS[x])
|
||||
|
||||
# systemd < 231
|
||||
with patch.dict(systemd.__context__, {'salt.utils.systemd.version': 230}):
|
||||
with patch.object(systemd, '_systemctl_status', mock):
|
||||
self.assertFalse(systemd.missing('sshd.service'))
|
||||
self.assertTrue(systemd.missing('foo.service'))
|
||||
|
||||
# systemd >= 231
|
||||
with patch.dict(systemd.__context__, {'salt.utils.systemd.version': 231}):
|
||||
with patch.dict(_SYSTEMCTL_STATUS, _SYSTEMCTL_STATUS_GTE_231):
|
||||
with patch.object(systemd, '_systemctl_status', mock):
|
||||
self.assertFalse(systemd.missing('sshd.service'))
|
||||
self.assertTrue(systemd.missing('bar.service'))
|
||||
|
||||
# systemd < 231 with retcode/output changes backported (e.g. RHEL 7.3)
|
||||
with patch.dict(systemd.__context__, {'salt.utils.systemd.version': 219}):
|
||||
with patch.dict(_SYSTEMCTL_STATUS, _SYSTEMCTL_STATUS_GTE_231):
|
||||
with patch.object(systemd, '_systemctl_status', mock):
|
||||
self.assertFalse(systemd.missing('sshd.service'))
|
||||
self.assertTrue(systemd.missing('bar.service'))
|
||||
|
||||
def test_show(self):
|
||||
'''
|
||||
Test to show properties of one or more units/jobs or the manager
|
||||
|
Loading…
Reference in New Issue
Block a user