Merge "Fix haproxy_check_script for delete listener"
This commit is contained in:
commit
afc8052ef7
|
@ -286,6 +286,13 @@ class Listener(object):
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Since this script should be deleted at LB delete time
|
||||||
|
# we can check for this path to see if VRRP is enabled
|
||||||
|
# on this amphora and not write the file if VRRP is not in use
|
||||||
|
if os.path.exists(util.keepalived_check_script_path()):
|
||||||
|
self.vrrp_check_script_update(
|
||||||
|
listener_id, action=consts.AMP_ACTION_STOP)
|
||||||
|
|
||||||
# delete the ssl files
|
# delete the ssl files
|
||||||
try:
|
try:
|
||||||
shutil.rmtree(self._cert_dir(listener_id))
|
shutil.rmtree(self._cert_dir(listener_id))
|
||||||
|
|
|
@ -424,14 +424,17 @@ class TestServerTestCase(base.TestCase):
|
||||||
|
|
||||||
@mock.patch('os.path.exists')
|
@mock.patch('os.path.exists')
|
||||||
@mock.patch('subprocess.check_output')
|
@mock.patch('subprocess.check_output')
|
||||||
|
@mock.patch('octavia.amphorae.backends.agent.api_server.listener.Listener.'
|
||||||
|
'vrrp_check_script_update')
|
||||||
@mock.patch('octavia.amphorae.backends.agent.api_server.util.' +
|
@mock.patch('octavia.amphorae.backends.agent.api_server.util.' +
|
||||||
'get_haproxy_pid')
|
'get_haproxy_pid')
|
||||||
@mock.patch('shutil.rmtree')
|
@mock.patch('shutil.rmtree')
|
||||||
@mock.patch('os.remove')
|
@mock.patch('os.remove')
|
||||||
def _test_delete_listener(self, init_system, distro, mock_init_system,
|
def _test_delete_listener(self, init_system, distro, mock_init_system,
|
||||||
mock_remove, mock_rmtree, mock_pid,
|
mock_remove, mock_rmtree, mock_pid, mock_vrrp,
|
||||||
mock_check_output, mock_exists):
|
mock_check_output, mock_exists):
|
||||||
self.assertIn(distro, [consts.UBUNTU, consts.CENTOS])
|
self.assertIn(distro, [consts.UBUNTU, consts.CENTOS])
|
||||||
|
# no listener
|
||||||
mock_exists.return_value = False
|
mock_exists.return_value = False
|
||||||
if distro == consts.UBUNTU:
|
if distro == consts.UBUNTU:
|
||||||
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
|
@ -446,8 +449,8 @@ class TestServerTestCase(base.TestCase):
|
||||||
json.loads(rv.data.decode('utf-8')))
|
json.loads(rv.data.decode('utf-8')))
|
||||||
mock_exists.assert_called_with('/var/lib/octavia/123/haproxy.cfg')
|
mock_exists.assert_called_with('/var/lib/octavia/123/haproxy.cfg')
|
||||||
|
|
||||||
# service is stopped + no upstart script
|
# service is stopped + no upstart script + no vrrp
|
||||||
mock_exists.side_effect = [True, False, False]
|
mock_exists.side_effect = [True, False, False, False]
|
||||||
if distro == consts.UBUNTU:
|
if distro == consts.UBUNTU:
|
||||||
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
'/listeners/123')
|
'/listeners/123')
|
||||||
|
@ -473,8 +476,35 @@ class TestServerTestCase(base.TestCase):
|
||||||
|
|
||||||
mock_exists.assert_any_call('/var/lib/octavia/123/123.pid')
|
mock_exists.assert_any_call('/var/lib/octavia/123/123.pid')
|
||||||
|
|
||||||
# service is stopped + upstart script
|
# service is stopped + no upstart script + vrrp
|
||||||
mock_exists.side_effect = [True, False, True]
|
mock_exists.side_effect = [True, False, True, False]
|
||||||
|
if distro == consts.UBUNTU:
|
||||||
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
|
'/listeners/123')
|
||||||
|
elif distro == consts.CENTOS:
|
||||||
|
rv = self.centos_app.delete('/' + api_server.VERSION +
|
||||||
|
'/listeners/123')
|
||||||
|
self.assertEqual(200, rv.status_code)
|
||||||
|
self.assertEqual({u'message': u'OK'},
|
||||||
|
json.loads(rv.data.decode('utf-8')))
|
||||||
|
mock_rmtree.assert_called_with('/var/lib/octavia/123')
|
||||||
|
|
||||||
|
if init_system == consts.INIT_SYSTEMD:
|
||||||
|
mock_exists.assert_called_with(consts.SYSTEMD_DIR +
|
||||||
|
'/haproxy-123.service')
|
||||||
|
elif init_system == consts.INIT_UPSTART:
|
||||||
|
mock_exists.assert_called_with(consts.UPSTART_DIR +
|
||||||
|
'/haproxy-123.conf')
|
||||||
|
elif init_system == consts.INIT_SYSVINIT:
|
||||||
|
mock_exists.assert_called_with(consts.SYSVINIT_DIR +
|
||||||
|
'/haproxy-123')
|
||||||
|
else:
|
||||||
|
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
||||||
|
|
||||||
|
mock_exists.assert_any_call('/var/lib/octavia/123/123.pid')
|
||||||
|
|
||||||
|
# service is stopped + upstart script + no vrrp
|
||||||
|
mock_exists.side_effect = [True, False, False, True]
|
||||||
if distro == consts.UBUNTU:
|
if distro == consts.UBUNTU:
|
||||||
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
'/listeners/123')
|
'/listeners/123')
|
||||||
|
@ -497,8 +527,32 @@ class TestServerTestCase(base.TestCase):
|
||||||
else:
|
else:
|
||||||
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
||||||
|
|
||||||
# service is running + upstart script
|
# service is stopped + upstart script + vrrp
|
||||||
mock_exists.side_effect = [True, True, True, True]
|
mock_exists.side_effect = [True, False, True, True]
|
||||||
|
if distro == consts.UBUNTU:
|
||||||
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
|
'/listeners/123')
|
||||||
|
elif distro == consts.CENTOS:
|
||||||
|
rv = self.centos_app.delete('/' + api_server.VERSION +
|
||||||
|
'/listeners/123')
|
||||||
|
self.assertEqual(200, rv.status_code)
|
||||||
|
self.assertEqual({u'message': u'OK'},
|
||||||
|
json.loads(rv.data.decode('utf-8')))
|
||||||
|
|
||||||
|
if init_system == consts.INIT_SYSTEMD:
|
||||||
|
mock_remove.assert_called_with(consts.SYSTEMD_DIR +
|
||||||
|
'/haproxy-123.service')
|
||||||
|
elif init_system == consts.INIT_UPSTART:
|
||||||
|
mock_remove.assert_called_with(consts.UPSTART_DIR +
|
||||||
|
'/haproxy-123.conf')
|
||||||
|
elif init_system == consts.INIT_SYSVINIT:
|
||||||
|
mock_remove.assert_called_with(consts.SYSVINIT_DIR +
|
||||||
|
'/haproxy-123')
|
||||||
|
else:
|
||||||
|
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
||||||
|
|
||||||
|
# service is running + upstart script + no vrrp
|
||||||
|
mock_exists.side_effect = [True, True, True, False, True]
|
||||||
mock_pid.return_value = '456'
|
mock_pid.return_value = '456'
|
||||||
if distro == consts.UBUNTU:
|
if distro == consts.UBUNTU:
|
||||||
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
|
@ -527,6 +581,36 @@ class TestServerTestCase(base.TestCase):
|
||||||
else:
|
else:
|
||||||
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
||||||
|
|
||||||
|
# service is running + upstart script + vrrp
|
||||||
|
mock_exists.side_effect = [True, True, True, True, True]
|
||||||
|
mock_pid.return_value = '456'
|
||||||
|
if distro == consts.UBUNTU:
|
||||||
|
rv = self.ubuntu_app.delete('/' + api_server.VERSION +
|
||||||
|
'/listeners/123')
|
||||||
|
elif distro == consts.CENTOS:
|
||||||
|
rv = self.centos_app.delete('/' + api_server.VERSION +
|
||||||
|
'/listeners/123')
|
||||||
|
self.assertEqual(200, rv.status_code)
|
||||||
|
self.assertEqual({u'message': u'OK'},
|
||||||
|
json.loads(rv.data.decode('utf-8')))
|
||||||
|
mock_pid.assert_called_with('123')
|
||||||
|
mock_check_output.assert_any_call(
|
||||||
|
['/usr/sbin/service', 'haproxy-123', 'stop'], stderr=-2)
|
||||||
|
|
||||||
|
if init_system == consts.INIT_SYSTEMD:
|
||||||
|
mock_check_output.assert_any_call(
|
||||||
|
"systemctl disable haproxy-123".split(),
|
||||||
|
stderr=subprocess.STDOUT)
|
||||||
|
elif init_system == consts.INIT_UPSTART:
|
||||||
|
mock_remove.assert_any_call(consts.UPSTART_DIR +
|
||||||
|
'/haproxy-123.conf')
|
||||||
|
elif init_system == consts.INIT_SYSVINIT:
|
||||||
|
mock_check_output.assert_any_call(
|
||||||
|
"insserv -r /etc/init.d/haproxy-123".split(),
|
||||||
|
stderr=subprocess.STDOUT)
|
||||||
|
else:
|
||||||
|
self.assertIn(init_system, consts.VALID_INIT_SYSTEMS)
|
||||||
|
|
||||||
# service is running + stopping fails
|
# service is running + stopping fails
|
||||||
mock_exists.side_effect = [True, True, True]
|
mock_exists.side_effect = [True, True, True]
|
||||||
mock_check_output.side_effect = subprocess.CalledProcessError(
|
mock_check_output.side_effect = subprocess.CalledProcessError(
|
||||||
|
|
Loading…
Reference in New Issue