Merge "Raise exception on systemd failures"
This commit is contained in:
commit
1782f73da5
|
@ -23,9 +23,9 @@ from paunch.utils import systemd
|
||||||
|
|
||||||
class TestUtilsSystemd(base.TestCase):
|
class TestUtilsSystemd(base.TestCase):
|
||||||
|
|
||||||
@mock.patch('subprocess.call', autospec=True)
|
@mock.patch('subprocess.check_call', autospec=True)
|
||||||
@mock.patch('os.chmod')
|
@mock.patch('os.chmod')
|
||||||
def test_service_create(self, mock_chmod, mock_subprocess_call):
|
def test_service_create(self, mock_chmod, mock_subprocess_check_call):
|
||||||
container = 'my_app'
|
container = 'my_app'
|
||||||
service = 'tripleo_' + container
|
service = 'tripleo_' + container
|
||||||
cconfig = {'depends_on': ['something'], 'restart': 'unless-stopped',
|
cconfig = {'depends_on': ['something'], 'restart': 'unless-stopped',
|
||||||
|
@ -40,7 +40,7 @@ class TestUtilsSystemd(base.TestCase):
|
||||||
self.assertIn('ExecStop=/usr/bin/podman stop -t 15 my_app', unit)
|
self.assertIn('ExecStop=/usr/bin/podman stop -t 15 my_app', unit)
|
||||||
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
||||||
|
|
||||||
mock_subprocess_call.assert_has_calls([
|
mock_subprocess_check_call.assert_has_calls([
|
||||||
mock.call(['systemctl', 'daemon-reload']),
|
mock.call(['systemctl', 'daemon-reload']),
|
||||||
mock.call(['systemctl', 'enable', '--now', service]),
|
mock.call(['systemctl', 'enable', '--now', service]),
|
||||||
])
|
])
|
||||||
|
@ -49,8 +49,9 @@ class TestUtilsSystemd(base.TestCase):
|
||||||
|
|
||||||
@mock.patch('os.remove', autospec=True)
|
@mock.patch('os.remove', autospec=True)
|
||||||
@mock.patch('os.path.isfile', autospec=True)
|
@mock.patch('os.path.isfile', autospec=True)
|
||||||
@mock.patch('subprocess.call', autospec=True)
|
@mock.patch('subprocess.check_call', autospec=True)
|
||||||
def test_service_delete(self, mock_subprocess_call, mock_isfile, mock_rm):
|
def test_service_delete(self, mock_subprocess_check_call, mock_isfile,
|
||||||
|
mock_rm):
|
||||||
mock_isfile.return_value = True
|
mock_isfile.return_value = True
|
||||||
container = 'my_app'
|
container = 'my_app'
|
||||||
service = 'tripleo_' + container
|
service = 'tripleo_' + container
|
||||||
|
@ -62,7 +63,7 @@ class TestUtilsSystemd(base.TestCase):
|
||||||
mock.call(tempdir + service + '_healthcheck.service'),
|
mock.call(tempdir + service + '_healthcheck.service'),
|
||||||
mock.call(tempdir + service + '_healthcheck.timer'),
|
mock.call(tempdir + service + '_healthcheck.timer'),
|
||||||
])
|
])
|
||||||
mock_subprocess_call.assert_has_calls([
|
mock_subprocess_check_call.assert_has_calls([
|
||||||
mock.call(['systemctl', 'stop', service + '.service']),
|
mock.call(['systemctl', 'stop', service + '.service']),
|
||||||
mock.call(['systemctl', 'disable', service + '.service']),
|
mock.call(['systemctl', 'disable', service + '.service']),
|
||||||
mock.call(['systemctl', 'daemon-reload']),
|
mock.call(['systemctl', 'daemon-reload']),
|
||||||
|
@ -92,9 +93,10 @@ class TestUtilsSystemd(base.TestCase):
|
||||||
'/openstack/healthcheck', unit)
|
'/openstack/healthcheck', unit)
|
||||||
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
||||||
|
|
||||||
@mock.patch('subprocess.call', autospec=True)
|
@mock.patch('subprocess.check_call', autospec=True)
|
||||||
@mock.patch('os.chmod')
|
@mock.patch('os.chmod')
|
||||||
def test_healthcheck_timer_create(self, mock_chmod, mock_subprocess_call):
|
def test_healthcheck_timer_create(self, mock_chmod,
|
||||||
|
mock_subprocess_check_call):
|
||||||
container = 'my_app'
|
container = 'my_app'
|
||||||
service = 'tripleo_' + container
|
service = 'tripleo_' + container
|
||||||
cconfig = {'check_interval': '15'}
|
cconfig = {'check_interval': '15'}
|
||||||
|
@ -108,7 +110,7 @@ class TestUtilsSystemd(base.TestCase):
|
||||||
self.assertIn('OnActiveSec=120', unit)
|
self.assertIn('OnActiveSec=120', unit)
|
||||||
self.assertIn('OnUnitActiveSec=15', unit)
|
self.assertIn('OnUnitActiveSec=15', unit)
|
||||||
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
||||||
mock_subprocess_call.assert_has_calls([
|
mock_subprocess_check_call.assert_has_calls([
|
||||||
mock.call(['systemctl', 'enable', '--now', healthcheck_timer]),
|
mock.call(['systemctl', 'enable', '--now', healthcheck_timer]),
|
||||||
mock.call(['systemctl', 'daemon-reload']),
|
mock.call(['systemctl', 'daemon-reload']),
|
||||||
])
|
])
|
||||||
|
|
|
@ -79,8 +79,12 @@ ExecStop=/usr/bin/podman stop -t %(stop_grace_period)s %(name)s
|
||||||
KillMode=process
|
KillMode=process
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target""" % s_config)
|
WantedBy=multi-user.target""" % s_config)
|
||||||
subprocess.call(['systemctl', 'daemon-reload'])
|
try:
|
||||||
subprocess.call(['systemctl', 'enable', '--now', service])
|
subprocess.check_call(['systemctl', 'daemon-reload'])
|
||||||
|
subprocess.check_call(['systemctl', 'enable', '--now', service])
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
log.exception("systemctl failed")
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
def service_delete(container, sysdir=constants.SYSTEMD_DIR, log=None):
|
def service_delete(container, sysdir=constants.SYSTEMD_DIR, log=None):
|
||||||
|
@ -106,11 +110,19 @@ def service_delete(container, sysdir=constants.SYSTEMD_DIR, log=None):
|
||||||
if os.path.isfile(sysdir + sysd_f):
|
if os.path.isfile(sysdir + sysd_f):
|
||||||
log.debug('Stopping and disabling systemd service for %s' %
|
log.debug('Stopping and disabling systemd service for %s' %
|
||||||
service)
|
service)
|
||||||
subprocess.call(['systemctl', 'stop', sysd_f])
|
try:
|
||||||
subprocess.call(['systemctl', 'disable', sysd_f])
|
subprocess.check_call(['systemctl', 'stop', sysd_f])
|
||||||
|
subprocess.check_call(['systemctl', 'disable', sysd_f])
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
log.exception("systemctl failed")
|
||||||
|
raise
|
||||||
log.debug('Removing systemd unit file %s' % sysd_f)
|
log.debug('Removing systemd unit file %s' % sysd_f)
|
||||||
os.remove(sysdir + sysd_f)
|
os.remove(sysdir + sysd_f)
|
||||||
subprocess.call(['systemctl', 'daemon-reload'])
|
try:
|
||||||
|
subprocess.check_call(['systemctl', 'daemon-reload'])
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
log.exception("systemctl failed")
|
||||||
|
raise
|
||||||
else:
|
else:
|
||||||
log.warning('No systemd unit file was found for %s' % sysd_f)
|
log.warning('No systemd unit file was found for %s' % sysd_f)
|
||||||
|
|
||||||
|
@ -191,5 +203,10 @@ OnActiveSec=120
|
||||||
OnUnitActiveSec=%(interval)s
|
OnUnitActiveSec=%(interval)s
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=timers.target""" % s_config)
|
WantedBy=timers.target""" % s_config)
|
||||||
subprocess.call(['systemctl', 'enable', '--now', healthcheck_timer])
|
try:
|
||||||
subprocess.call(['systemctl', 'daemon-reload'])
|
subprocess.check_call(['systemctl', 'enable', '--now',
|
||||||
|
healthcheck_timer])
|
||||||
|
subprocess.check_call(['systemctl', 'daemon-reload'])
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
log.exception("systemctl failed")
|
||||||
|
raise
|
||||||
|
|
Loading…
Reference in New Issue