Clear old nova services
After upgrade from 6.x to 8.0 nova services host was renamed from hostname to fqdn name. Add clean part to cleanup cmd. Closes-Bug: 1598240 Change-Id: Ie54c41cb3b8f6f9dcfb3a54bbeb75eb6a0eccb93
This commit is contained in:
parent
de88d4b888
commit
5af63290c1
|
@ -17,17 +17,31 @@ from fuelclient import objects
|
|||
|
||||
from octane.util import env as env_util
|
||||
from octane.util import node as node_util
|
||||
from octane.util import nova
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def clean_services_for_node(controller, node):
|
||||
services_stdout = nova.run_nova_cmd(
|
||||
["nova", "service-list", "--host", node.data['hostname']],
|
||||
controller)
|
||||
services = nova.nova_stdout_parser(services_stdout)
|
||||
for service in services:
|
||||
nova.run_nova_cmd(
|
||||
["nova", "service-delete", service['Id']], controller,
|
||||
output=False)
|
||||
|
||||
|
||||
def cleanup_environment(env_id):
|
||||
env = objects.Environment(env_id)
|
||||
controller = env_util.get_one_controller(env)
|
||||
|
||||
nodes = env_util.get_nodes(env, ['controller', 'compute'])
|
||||
for node in nodes:
|
||||
node_util.remove_compute_upgrade_levels(node)
|
||||
node_util.restart_nova_services(node)
|
||||
clean_services_for_node(controller, node)
|
||||
|
||||
|
||||
class CleanupCommand(cmd.Command):
|
||||
|
|
|
@ -20,9 +20,14 @@ from octane.commands import cleanup
|
|||
@pytest.mark.parametrize("node_count", [0, 1, 10])
|
||||
def test_cleanup_env(mocker, env_id, node_count):
|
||||
env = mock.Mock()
|
||||
controller = mock.Mock()
|
||||
get_env_mock = mocker.patch(
|
||||
"fuelclient.objects.Environment", return_value=env)
|
||||
nodes = [mock.MagicMock() for _ in range(node_count)]
|
||||
nodes = [mock.Mock() for idx in range(node_count)]
|
||||
get_controller = mocker.patch(
|
||||
"octane.util.env.get_one_controller", return_value=controller)
|
||||
clean_services_mock = mocker.patch(
|
||||
"octane.commands.cleanup.clean_services_for_node")
|
||||
get_nodes_mock = mocker.patch(
|
||||
"octane.util.env.get_nodes", return_value=nodes)
|
||||
remove_compute_mock = mocker.patch(
|
||||
|
@ -33,5 +38,33 @@ def test_cleanup_env(mocker, env_id, node_count):
|
|||
for node in nodes:
|
||||
remove_compute_mock.assert_any_call(node)
|
||||
restart_service_mock.assert_any_call(node)
|
||||
clean_services_mock.assert_any_call(controller, node)
|
||||
assert len(nodes) == clean_services_mock.call_count
|
||||
get_nodes_mock.assert_called_once_with(env, ["controller", "compute"])
|
||||
get_env_mock.assert_called_once_with(env_id)
|
||||
get_controller.assert_called_once_with(env)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("hostname", ["test_hostname"])
|
||||
@pytest.mark.parametrize("stdout,deleted_services", [(
|
||||
" +----+\n"
|
||||
" | Id |\n"
|
||||
" +----+\n"
|
||||
" | 1 |\n"
|
||||
" | 2 |\n"
|
||||
" | 3 |\n"
|
||||
" +----+\n",
|
||||
["1", "2", "3"]
|
||||
)])
|
||||
def test_clean_services_for_node(mocker, hostname, stdout, deleted_services):
|
||||
node = mock.MagicMock(data={"hostname": hostname})
|
||||
controller = mock.Mock()
|
||||
nova_run_mock = mocker.patch(
|
||||
"octane.util.nova.run_nova_cmd", return_value=stdout)
|
||||
cleanup.clean_services_for_node(controller, node)
|
||||
for service_id in deleted_services:
|
||||
nova_run_mock.assert_any_call(
|
||||
["nova", "service-delete", service_id], controller, output=False)
|
||||
get_service_call = mock.call(
|
||||
["nova", "service-list", "--host", hostname], controller)
|
||||
assert get_service_call == nova_run_mock.call_args_list[0]
|
||||
|
|
Loading…
Reference in New Issue