diff --git a/nailgun/nailgun/fixtures/deployment_tasks.yaml b/nailgun/nailgun/fixtures/deployment_tasks.yaml index c35905e2d4..0d7a5cda26 100644 --- a/nailgun/nailgun/fixtures/deployment_tasks.yaml +++ b/nailgun/nailgun/fixtures/deployment_tasks.yaml @@ -40,87 +40,6 @@ strategy: type: parallel amount: 6 - -- id: primary-database - type: group - roles: [primary-database] - requires: [deploy_start] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: database - type: group - fault_tolerance: 0 - roles: [database] - requires: [primary-database] - required_for: [deploy_end] - parameters: - strategy: - type: parallel - amount: 6 - -- id: primary-keystone - type: group - roles: [primary-keystone] - requires: [deploy_start, primary-database] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: keystone - type: group - fault_tolerance: 0 - roles: [keystone] - requires: [primary-keystone] - required_for: [deploy_end] - parameters: - strategy: - type: parallel - amount: 6 - -- id: primary-neutron - type: group - roles: [primary-neutron] - requires: [deploy_start] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: neutron - type: group - fault_tolerance: 0 - roles: [neutron] - requires: [primary-neutron] - required_for: [deploy_end] - parameters: - strategy: - type: parallel - amount: 6 - -- id: primary-rabbitmq - type: group - roles: [primary-rabbitmq] - requires: [deploy_start] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: rabbitmq - type: group - fault_tolerance: 0 - roles: [rabbitmq] - requires: [primary-rabbitmq] - required_for: [deploy_end] - parameters: - strategy: - type: parallel - amount: 6 - - id: cinder type: group roles: [cinder] @@ -194,11 +113,7 @@ type: puppet groups: [primary-controller, controller, cinder, compute, ceph-osd, - primary-mongo, mongo, ironic, - primary-database, database, - primary-keystone, keystone, - primary-neutron, neutron, - primary-rabbitmq, rabbitmq] + primary-mongo, mongo, ironic] required_for: [deploy_end] requires: [deploy_start] reexecute_on: [deploy_changes] @@ -264,11 +179,7 @@ type: puppet groups: [primary-controller, controller, cinder, compute, ceph-osd, - primary-mongo, mongo, ironic, - primary-database, database, - primary-keystone, keystone, - primary-neutron, neutron, - primary-rabbitmq, rabbitmq] + primary-mongo, mongo, ironic] required_for: [deploy_end] requires: [deploy_start] reexecute_on: [deploy_changes] diff --git a/nailgun/nailgun/fixtures/openstack.yaml b/nailgun/nailgun/fixtures/openstack.yaml index 617218272e..d2b22263ff 100644 --- a/nailgun/nailgun/fixtures/openstack.yaml +++ b/nailgun/nailgun/fixtures/openstack.yaml @@ -29,10 +29,6 @@ message: "Neutron L3 HA requires at least 2 Controller nodes to function properly." tags: - controller - - rabbitmq - - database - - keystone - - neutron compute: name: "Compute" description: "A Compute node creates, manages, and terminates virtual machine instances." @@ -192,6 +188,8 @@ tags_metadata: controller: has_primary: True + mysql: + has_primary: True mongo: has_primary: True compute: @@ -200,14 +198,6 @@ has_primary: False cinder: has_primary: False - rabbitmq: - has_primary: True - database: - has_primary: True - keystone: - has_primary: True - neutron: - has_primary: True network_roles_metadata: - diff --git a/nailgun/nailgun/orchestrator/deployment_serializers.py b/nailgun/nailgun/orchestrator/deployment_serializers.py index 20808736b1..ed237a4146 100644 --- a/nailgun/nailgun/orchestrator/deployment_serializers.py +++ b/nailgun/nailgun/orchestrator/deployment_serializers.py @@ -46,10 +46,7 @@ class DeploymentMultinodeSerializer(object): neutron_network_serializer = \ neutron_serializers.NeutronNetworkDeploymentSerializer - critical_roles = frozenset(('controller', 'ceph-osd', 'primary-mongo', - 'primary-database', 'primary-rabbitmq', - 'primary-keystone', 'primary-neutron', - 'database', 'keystone', 'neutron', 'rabbitmq')) + critical_roles = frozenset(('controller', 'ceph-osd', 'primary-mongo')) def __init__(self, tasks_graph=None): self.task_graph = tasks_graph @@ -337,15 +334,7 @@ class DeploymentHASerializer(DeploymentMultinodeSerializer): 'primary-mongo', 'primary-swift-proxy', 'ceph-osd', - 'controller', - 'primary-database', - 'primary-rabbitmq', - 'primary-keystone', - 'primary-neutron', - 'database', - 'keystone', - 'neutron', - 'rabbitmq' + 'controller' )) def get_last_controller(self, nodes): diff --git a/nailgun/nailgun/orchestrator/graph_configuration.py b/nailgun/nailgun/orchestrator/graph_configuration.py index 79d8f39d97..aefb0e9f9e 100644 --- a/nailgun/nailgun/orchestrator/graph_configuration.py +++ b/nailgun/nailgun/orchestrator/graph_configuration.py @@ -42,79 +42,6 @@ DEPLOYMENT_51_60 = """ strategy: type: parallel amount: 6 - -- id: primary-database - type: group - role: [primary-database] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: database - type: group - role: [database] - requires: [primary-database] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: primary-keystone - type: group - role: [primary-keystone] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: keystone - type: group - role: [keystone] - requires: [primary-keystone] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: primary-rabbitmq - type: group - role: [primary-rabbitmq] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: rabbitmq - type: group - role: [rabbitmq] - requires: [primary-rabbitmq] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: primary-neutron - type: group - role: [primary-neutron] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: neutron - type: group - role: [neutron] - requires: [primary-neutron] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - - id: cinder type: group role: [cinder] @@ -202,79 +129,6 @@ DEPLOYMENT_50 = """ parameters: strategy: type: one_by_one - -- id: primary-database - type: group - role: [primary-database] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: database - type: group - role: [database] - requires: [primary-database] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: primary-keystone - type: group - role: [primary-keystone] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: keystone - type: group - role: [keystone] - requires: [primary-keystone] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: primary-rabbitmq - type: group - role: [primary-rabbitmq] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: rabbitmq - type: group - role: [rabbitmq] - requires: [primary-rabbitmq] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - -- id: primary-neutron - type: group - role: [primary-neutron] - required_for: [deploy_end] - requires: [deploy_start] - parameters: - strategy: - type: one_by_one - -- id: neutron - type: group - role: [neutron] - requires: [primary-neutron] - required_for: [deploy_end] - parameters: - strategy: - type: one_by_one - - id: cinder type: group role: [cinder] diff --git a/nailgun/nailgun/test/integration/test_cluster_changes_handler.py b/nailgun/nailgun/test/integration/test_cluster_changes_handler.py index caae91cf8e..d7e964e5bb 100644 --- a/nailgun/nailgun/test/integration/test_cluster_changes_handler.py +++ b/nailgun/nailgun/test/integration/test_cluster_changes_handler.py @@ -34,9 +34,6 @@ from nailgun.utils import reverse class TestHandlers(BaseIntegrationTest): - primary_controller_tags = ['primary-controller', 'primary-database', - 'primary-keystone', 'primary-neutron', - 'primary-rabbitmq'] @mock_rpc(pass_mock=True) def test_nova_deploy_cast_with_right_args(self, mocked_rpc): @@ -116,7 +113,7 @@ class TestHandlers(BaseIntegrationTest): for node in nodes_db: node_id = node.id admin_ip = admin_ips.pop() - for role in sorted(node.tag_names): + for role in sorted(node.roles + node.pending_roles): assigned_ips[node_id] = {} assigned_ips[node_id]['internal'] = '192.168.0.%d' % (i + 2) assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3) @@ -146,9 +143,7 @@ class TestHandlers(BaseIntegrationTest): deepcopy(nodes_list)) common_attrs['nodes'] = nodes_list - for node, role in zip(common_attrs['nodes'], - self.primary_controller_tags): - node['role'] = role + common_attrs['nodes'][0]['role'] = 'primary-controller' common_attrs['last_controller'] = controller_nodes[-1]['name'] common_attrs['storage']['pg_num'] = 128 @@ -175,17 +170,13 @@ class TestHandlers(BaseIntegrationTest): 'primary-controller': True, 'controller': True, 'cinder': False, - 'compute': False, - 'database': True, - 'keystone': True, - 'rabbitmq': True, - 'neutron': True + 'compute': False } deployment_info = [] for node in nodes_db: ips = assigned_ips[node.id] - for role in sorted(node.tag_names): + for role in sorted(node.roles): is_critical = critical_mapping[role] individual_atts = { @@ -223,9 +214,11 @@ class TestHandlers(BaseIntegrationTest): individual_atts.update(common_attrs) deployment_info.append(deepcopy(individual_atts)) - for node, role in zip(deployment_info, self.primary_controller_tags): - node['role'] = role - node['fail_if_error'] = True + controller_nodes = filter( + lambda node: node['role'] == 'controller', + deployment_info) + controller_nodes[0]['role'] = 'primary-controller' + controller_nodes[0]['fail_if_error'] = True supertask = self.env.launch_deployment() deploy_task_uuid = [x.uuid for x in supertask.subtasks @@ -537,7 +530,7 @@ class TestHandlers(BaseIntegrationTest): for node in nodes_db: node_id = node.id admin_ip = admin_ips.pop() - for role in sorted(node.tag_names): + for role in sorted(node.roles + node.pending_roles): assigned_ips[node_id] = {} assigned_ips[node_id]['management'] = '192.168.0.%d' % (i + 2) assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3) @@ -567,9 +560,8 @@ class TestHandlers(BaseIntegrationTest): deepcopy(nodes_list)) common_attrs['nodes'] = nodes_list - for node, role in zip(common_attrs['nodes'], - self.primary_controller_tags): - node['role'] = role + common_attrs['nodes'][0]['role'] = 'primary-controller' + common_attrs['last_controller'] = controller_nodes[-1]['name'] common_attrs['storage']['pg_num'] = 128 @@ -595,17 +587,13 @@ class TestHandlers(BaseIntegrationTest): 'primary-controller': True, 'controller': True, 'cinder': False, - 'compute': False, - 'database': True, - 'keystone': True, - 'rabbitmq': True, - 'neutron': True + 'compute': False } deployment_info = [] for node in nodes_db: ips = assigned_ips[node.id] - for role in sorted(node.tag_names): + for role in sorted(node.roles): is_critical = critical_mapping[role] individual_atts = { @@ -694,9 +682,11 @@ class TestHandlers(BaseIntegrationTest): individual_atts.update(common_attrs) deployment_info.append(deepcopy(individual_atts)) - for node, role in zip(deployment_info, self.primary_controller_tags): - node['role'] = role - node['fail_if_error'] = True + controller_nodes = filter( + lambda node: node['role'] == 'controller', + deployment_info) + controller_nodes[0]['role'] = 'primary-controller' + controller_nodes[0]['fail_if_error'] = True supertask = self.env.launch_deployment() deploy_task_uuid = [x.uuid for x in supertask.subtasks @@ -1028,7 +1018,7 @@ class TestHandlers(BaseIntegrationTest): for node in nodes_db: node_id = node.id admin_ip = admin_ips.pop() - for role in sorted(node.tag_names): + for role in sorted(node.roles + node.pending_roles): assigned_ips[node_id] = {} assigned_ips[node_id]['management'] = '192.168.0.%d' % (i + 2) assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3) @@ -1058,9 +1048,7 @@ class TestHandlers(BaseIntegrationTest): deepcopy(nodes_list)) common_attrs['tasks'] = [] common_attrs['nodes'] = nodes_list - for node, role in zip(common_attrs['nodes'], - self.primary_controller_tags): - node['role'] = role + common_attrs['nodes'][0]['role'] = 'primary-controller' common_attrs['last_controller'] = controller_nodes[-1]['name'] common_attrs['storage']['pg_num'] = 128 @@ -1087,20 +1075,17 @@ class TestHandlers(BaseIntegrationTest): 'primary-controller': True, 'controller': True, 'cinder': False, - 'compute': False, - 'database': True, - 'keystone': True, - 'rabbitmq': True, - 'neutron': True + 'compute': False } deployment_info = [] - nm = objects.Cluster.get_network_manager(cluster_db) + nm = objects.Cluster.get_network_manager(node.cluster) for node in nodes_db: ips = assigned_ips[node.id] other_nets = nm.get_networks_not_on_node(node) - for role in sorted(node.tag_names): + + for role in sorted(node.roles): is_critical = critical_mapping[role] individual_atts = { @@ -1205,9 +1190,11 @@ class TestHandlers(BaseIntegrationTest): individual_atts.update(common_attrs) deployment_info.append(deepcopy(individual_atts)) - for node, role in zip(deployment_info, self.primary_controller_tags): - node['role'] = role - node['fail_if_error'] = True + controller_nodes = filter( + lambda node: node['role'] == 'controller', + deployment_info) + controller_nodes[0]['role'] = 'primary-controller' + controller_nodes[0]['fail_if_error'] = True supertask = self.env.launch_deployment() deploy_task_uuid = [x.uuid for x in supertask.subtasks @@ -1425,7 +1412,7 @@ class TestHandlers(BaseIntegrationTest): # deploy method call [1][0][1][1] n_rpc_deploy = mocked_rpc.call_args_list[ 1][0][1][1]['args']['deployment_info'] - self.assertEqual(len(n_rpc_deploy), 5) + self.assertEqual(len(n_rpc_deploy), 1) self.assertEqual(n_rpc_deploy[0]['uid'], str(self.env.nodes[0].id)) @mock_rpc(pass_mock=True) @@ -1457,20 +1444,18 @@ class TestHandlers(BaseIntegrationTest): self.assertEqual(len(args[1]), 2) n_rpc_deploy = args[1][1]['args']['deployment_info'] - self.assertEqual(len(n_rpc_deploy), 25) + self.assertEqual(len(n_rpc_deploy), 5) pub_ips = ['172.16.0.11', '172.16.0.12', '172.16.0.13', '172.16.0.20', '172.16.0.21', '172.16.0.22'] - for n in n_rpc_deploy: self.assertIn('management_vrouter_vip', n) self.assertIn('public_vrouter_vip', n) - - old_nodes = n_rpc_deploy[0]['nodes'] - used_ips = [] - for n in {v['uid']: v for v in old_nodes}.values(): - self.assertIn(n['public_address'], pub_ips) - self.assertNotIn(n['public_address'], used_ips) - used_ips.append(n['public_address']) + used_ips = [] + for n_common_args in n['nodes']: + self.assertIn(n_common_args['public_address'], pub_ips) + self.assertNotIn(n_common_args['public_address'], used_ips) + used_ips.append(n_common_args['public_address']) + self.assertIn('management_vrouter_vip', n) @mock_rpc(pass_mock=True) def test_deploy_ha_neutron_gre_w_custom_public_ranges(self, mocked_rpc): @@ -1501,18 +1486,16 @@ class TestHandlers(BaseIntegrationTest): self.assertEqual(len(args[1]), 2) n_rpc_deploy = args[1][1]['args']['deployment_info'] - self.assertEqual(len(n_rpc_deploy), 25) + self.assertEqual(len(n_rpc_deploy), 5) pub_ips = ['172.16.0.11', '172.16.0.12', '172.16.0.13', '172.16.0.20', '172.16.0.21', '172.16.0.22'] for n in n_rpc_deploy: self.assertEqual(n['public_vip'], '172.16.0.10') - - old_nodes = n_rpc_deploy[0]['nodes'] - used_ips = [] - for n in {v['uid']: v for v in old_nodes}.values(): - self.assertIn(n['public_address'], pub_ips) - self.assertNotIn(n['public_address'], used_ips) - used_ips.append(n['public_address']) + used_ips = [] + for n_common_args in n['nodes']: + self.assertIn(n_common_args['public_address'], pub_ips) + self.assertNotIn(n_common_args['public_address'], used_ips) + used_ips.append(n_common_args['public_address']) @mock_rpc(pass_mock=True) def test_deploy_neutron_gre_w_changed_public_cidr(self, mocked_rpc): @@ -1542,7 +1525,7 @@ class TestHandlers(BaseIntegrationTest): self.assertEqual(len(args[1]), 2) n_rpc_deploy = args[1][1]['args']['deployment_info'] - self.assertEqual(len(n_rpc_deploy), 10) + self.assertEqual(len(n_rpc_deploy), 2) pub_ips = ['172.16.10.11', '172.16.10.12', '172.16.10.13'] for n in n_rpc_deploy: for n_common_args in n['nodes']: @@ -1890,8 +1873,8 @@ class TestHandlers(BaseIntegrationTest): deployment_info = args[1][0]['args']['deployment_info'] self.assertItemsEqual( - set([node.uid for node in self.env.nodes]), - set([node['uid'] for node in deployment_info]) + [node.uid for node in self.env.nodes], + [node['uid'] for node in deployment_info] ) def _test_run(self, mcast, mode='dry_run'): @@ -2163,86 +2146,6 @@ class TestGranularDeployment(BaseIntegrationTest): 'required_for': ['post_deployment_end'], 'reexecute_on': ['deploy_changes'], }, - { - 'fault_tolerance': 0, - 'id': 'primary-database', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'roles': ['primary-database'], - 'role': 'primary-database', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'primary-keystone', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'roles': ['primary-keystone'], - 'role': 'primary-keystone', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'primary-rabbitmq', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'roles': ['primary-rabbitmq'], - 'role': 'primary-rabbitmq', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'primary-neutron', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'roles': ['primary-neutron'], - 'role': 'primary-neutron', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'database', - 'parameters': {'strategy': {'amount': 6, 'type': 'parallel'}}, - 'required_for': ['deploy_end'], - 'requires': ['primary-database'], - 'roles': ['database'], - 'role': 'database', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'keystone', - 'parameters': {'strategy': {'amount': 6, 'type': 'parallel'}}, - 'required_for': ['deploy_end'], - 'requires': ['primary-keystone'], - 'roles': ['keystone'], - 'role': 'keystone', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'rabbitmq', - 'parameters': {'strategy': {'amount': 6, 'type': 'parallel'}}, - 'required_for': ['deploy_end'], - 'requires': ['primary-rabbitmq'], - 'roles': ['rabbitmq'], - 'role': 'rabbitmq', - 'type': 'group' - }, - { - 'fault_tolerance': 0, - 'id': 'neutron', - 'parameters': {'strategy': {'amount': 6, 'type': 'parallel'}}, - 'required_for': ['deploy_end'], - 'requires': ['primary-neutron'], - 'roles': ['neutron'], - 'role': 'neutron', - 'type': 'group' - }, ] n1 = self.env.create_node( diff --git a/nailgun/nailgun/test/integration/test_graph_related_handlers.py b/nailgun/nailgun/test/integration/test_graph_related_handlers.py index a8fce8e8d1..deac9b4e37 100644 --- a/nailgun/nailgun/test/integration/test_graph_related_handlers.py +++ b/nailgun/nailgun/test/integration/test_graph_related_handlers.py @@ -625,7 +625,7 @@ class TestReleasePluginsGraphHandler(BaseGraphTasksTests, headers=self.default_headers, ) self.assertEqual(resp.status_code, 200) - self.assertEqual(len(resp.json), 32) # default release tasks + self.assertEqual(len(resp.json), 24) # default release tasks def test_get_existing_custom_deployment_tasks(self): resp = self.app.get( diff --git a/nailgun/nailgun/test/integration/test_orchestrator_handlers.py b/nailgun/nailgun/test/integration/test_orchestrator_handlers.py index 416eb0a621..c10aa94521 100644 --- a/nailgun/nailgun/test/integration/test_orchestrator_handlers.py +++ b/nailgun/nailgun/test/integration/test_orchestrator_handlers.py @@ -163,7 +163,7 @@ class TestDefaultOrchestratorInfoHandlers(BaseIntegrationTest): self.assertEqual(resp.status_code, 200) actual_uids = [node['uid'] for node in resp.json_body] node_ids.append('common') - self.assertItemsEqual(set(actual_uids), node_ids) + self.assertItemsEqual(actual_uids, node_ids) def test_cluster_provisioning_customization(self): facts = {'engine': {'1': '2'}} @@ -241,8 +241,8 @@ class BaseSelectedNodesTest(BaseIntegrationTest): else: deployed_uids = [n['uid'] for n in args[1]['args']['deployment_info']] - self.assertEqual(len(nodes_uids), len(set(deployed_uids))) - self.assertItemsEqual(nodes_uids, set(deployed_uids)) + self.assertEqual(len(nodes_uids), len(deployed_uids)) + self.assertItemsEqual(nodes_uids, deployed_uids) def check_resp_declined(self, resp): self.assertEqual(resp.status_code, 400) @@ -627,7 +627,7 @@ class TestDeploymentHandlerSkipTasks(BaseSelectedNodesTest): args, kwargs = mcast.call_args deployed_uids = [n['uid'] for n in args[1]['args']['deployment_info']] deployment_data = args[1]['args']['deployment_info'][0] - self.assertItemsEqual(set(deployed_uids), self.node_uids) + self.assertItemsEqual(deployed_uids, self.node_uids) self.assertEqual(len(deployment_data['tasks']), 1) def test_deployment_is_forbidden(self): diff --git a/nailgun/nailgun/test/integration/test_orchestrator_serializer.py b/nailgun/nailgun/test/integration/test_orchestrator_serializer.py index f494fdf8d2..e16eebfbc6 100644 --- a/nailgun/nailgun/test/integration/test_orchestrator_serializer.py +++ b/nailgun/nailgun/test/integration/test_orchestrator_serializer.py @@ -209,12 +209,8 @@ class TestNovaOrchestratorSerializer(OrchestratorSerializerTestBase): return cluster_db def assert_roles_flattened(self, nodes): - self.assertEqual(len(nodes), 11) + self.assertEqual(len(nodes), 7) self.assert_nodes_with_role(nodes, 'controller', 1) - self.assert_nodes_with_role(nodes, 'database', 1) - self.assert_nodes_with_role(nodes, 'keystone', 1) - self.assert_nodes_with_role(nodes, 'neutron', 1) - self.assert_nodes_with_role(nodes, 'rabbitmq', 1) self.assert_nodes_with_role(nodes, 'compute', 2) self.assert_nodes_with_role(nodes, 'cinder', 3) self.assert_nodes_with_role(nodes, 'mongo', 1) @@ -451,11 +447,7 @@ class TestNovaOrchestratorSerializer(OrchestratorSerializerTestBase): {'fail_if_error': False, 'role': 'compute'}, {'fail_if_error': False, 'role': 'compute'}, {'fail_if_error': True, 'role': 'primary-mongo'}, - {'fail_if_error': False, 'role': 'cinder'}, - {'fail_if_error': True, 'role': 'primary-database'}, - {'fail_if_error': True, 'role': 'primary-keystone'}, - {'fail_if_error': True, 'role': 'primary-neutron'}, - {'fail_if_error': True, 'role': 'primary-rabbitmq'} + {'fail_if_error': False, 'role': 'cinder'} ] self.assertItemsEqual( @@ -1328,19 +1320,7 @@ class TestNovaOrchestratorHASerializer(OrchestratorSerializerTestBase): {'fail_if_error': False, 'role': 'compute'}, {'fail_if_error': False, 'role': 'compute'}, {'fail_if_error': True, 'role': 'primary-mongo'}, - {'fail_if_error': False, 'role': 'cinder'}, - {'fail_if_error': True, 'role': 'primary-database'}, - {'fail_if_error': True, 'role': 'primary-keystone'}, - {'fail_if_error': True, 'role': 'primary-neutron'}, - {'fail_if_error': True, 'role': 'primary-rabbitmq'}, - {'fail_if_error': True, 'role': u'database'}, - {'fail_if_error': True, 'role': u'database'}, - {'fail_if_error': True, 'role': u'keystone'}, - {'fail_if_error': True, 'role': u'keystone'}, - {'fail_if_error': True, 'role': u'neutron'}, - {'fail_if_error': True, 'role': u'neutron'}, - {'fail_if_error': True, 'role': u'rabbitmq'}, - {'fail_if_error': True, 'role': u'rabbitmq'} + {'fail_if_error': False, 'role': 'cinder'} ] self.assertItemsEqual( @@ -1509,12 +1489,8 @@ class TestNeutronOrchestratorSerializer(OrchestratorSerializerTestBase): return serializer.serialize(cluster, cluster.nodes) def assert_roles_flattened(self, nodes): - self.assertEqual(len(nodes), 10) + self.assertEqual(len(nodes), 6) self.assert_nodes_with_role(nodes, 'controller', 1) - self.assert_nodes_with_role(nodes, 'database', 1) - self.assert_nodes_with_role(nodes, 'keystone', 1) - self.assert_nodes_with_role(nodes, 'neutron', 1) - self.assert_nodes_with_role(nodes, 'rabbitmq', 1) self.assert_nodes_with_role(nodes, 'compute', 2) self.assert_nodes_with_role(nodes, 'cinder', 3) @@ -1662,7 +1638,7 @@ class TestNeutronOrchestratorSerializer(OrchestratorSerializerTestBase): # We have 6 roles on 4 nodes summarily. # Only 1 node w 2 roles (controller+cinder) will have public # when 'assign_to_all_nodes' option is switched off - self.assertEqual(roles_w_public_count, 10 if assign else 6) + self.assertEqual(roles_w_public_count, 6 if assign else 2) # Check uncommon attrs node_uids = sorted(set([int(n['uid']) for n in node_list])) diff --git a/nailgun/nailgun/test/integration/test_orchestrator_serializer_70.py b/nailgun/nailgun/test/integration/test_orchestrator_serializer_70.py index 6926576fc6..a3d5cd6143 100644 --- a/nailgun/nailgun/test/integration/test_orchestrator_serializer_70.py +++ b/nailgun/nailgun/test/integration/test_orchestrator_serializer_70.py @@ -734,30 +734,6 @@ class TestPluginDeploymentTasksInjection70(base.BaseIntegrationTest): 'requires': ['deploy_start'], 'role': ['primary-controller'], 'type': 'group'}, - {'id': 'primary-database', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'role': ['primary-database'], - 'type': 'group'}, - {'id': 'primary-keystone', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'role': ['primary-keystone'], - 'type': 'group'}, - {'id': 'primary-neutron', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'role': ['primary-neutron'], - 'type': 'group'}, - {'id': 'primary-rabbitmq', - 'parameters': {'strategy': {'type': 'one_by_one'}}, - 'required_for': ['deploy_end'], - 'requires': ['deploy_start'], - 'role': ['primary-rabbitmq'], - 'type': 'group'}, {'id': 'first-fake-depl-task', 'required_for': ['deploy_end'], 'requires': ['deploy_start'], @@ -1342,8 +1318,8 @@ class TestNetworkTemplateSerializer70(BaseDeploymentSerializer, serialized_for_astute = deployment_info_to_legacy( serialized_for_astute) - # 15 node roles on 5 nodes - self.assertEqual(len(serialized_for_astute), 15) + # 7 node roles on 5 nodes + self.assertEqual(len(serialized_for_astute), 7) for node_data in serialized_for_astute: node = objects.Node.get_by_uid(node_data['uid']) for node_roles, net_names in node_roles_vs_net_names: diff --git a/nailgun/nailgun/test/integration/test_orchestrator_serializer_90.py b/nailgun/nailgun/test/integration/test_orchestrator_serializer_90.py index fe835d0106..43df4b6e98 100644 --- a/nailgun/nailgun/test/integration/test_orchestrator_serializer_90.py +++ b/nailgun/nailgun/test/integration/test_orchestrator_serializer_90.py @@ -765,7 +765,7 @@ class TestDeploymentHASerializer90( def test_serialize_with_customized(self): cluster = self.env.clusters[0] - serializer = deployment_serializers.DeploymentLCMSerializer() + serializer = self.create_serializer(cluster) objects.Cluster.prepare_for_deployment(cluster) serialized = serializer.serialize(cluster, cluster.nodes) diff --git a/nailgun/nailgun/test/integration/test_task_managers.py b/nailgun/nailgun/test/integration/test_task_managers.py index 1cca107b07..2a7598beea 100644 --- a/nailgun/nailgun/test/integration/test_task_managers.py +++ b/nailgun/nailgun/test/integration/test_task_managers.py @@ -893,7 +893,7 @@ class TestTaskManagers(BaseIntegrationTest): deployment_info = args[1][0]['args']['deployment_info'] self.assertItemsEqual( [node.uid for node in self.env.nodes], - set([node['uid'] for node in deployment_info]) + [node['uid'] for node in deployment_info] ) @fake_tasks() diff --git a/nailgun/nailgun/test/unit/test_objects.py b/nailgun/nailgun/test/unit/test_objects.py index 89e1114617..9c9c8dc69d 100644 --- a/nailgun/nailgun/test/unit/test_objects.py +++ b/nailgun/nailgun/test/unit/test_objects.py @@ -789,14 +789,11 @@ class TestNodeObject(BaseIntegrationTest): cluster_kwargs={'api': False}, nodes_kwargs=[{'role': 'controller'}]) node = self.env.nodes[0] - node_tags = ['controller', 'database', 'keystone', 'neutron', - 'rabbitmq'] - self.assertEqual(node_tags, objects.Node.all_tags(node)) + self.assertEqual(['controller'], objects.Node.all_tags(node)) objects.Node.update_roles(node, ['controller', 'cinder']) - node_tags.append('cinder') self.assertItemsEqual( - node_tags, objects.Node.all_tags(node) + ['controller', 'cinder'], objects.Node.all_tags(node) ) t = objects.Tag.create({ @@ -809,9 +806,8 @@ class TestNodeObject(BaseIntegrationTest): node.tags.append(node_tag) self.db.add(node_tag) self.db.flush() - node_tags.append('test') self.assertItemsEqual( - node_tags, objects.Node.all_tags(node) + ['controller', 'cinder', 'test'], objects.Node.all_tags(node) ) objects.Node.update_roles(node, []) diff --git a/nailgun/nailgun/test/unit/test_primary_tags_assignment.py b/nailgun/nailgun/test/unit/test_primary_tags_assignment.py index 1120b4e020..14ec345058 100644 --- a/nailgun/nailgun/test/unit/test_primary_tags_assignment.py +++ b/nailgun/nailgun/test/unit/test_primary_tags_assignment.py @@ -52,8 +52,10 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase): objects.Cluster.set_primary_tags(cluster, cluster.nodes) nodes = sorted(cluster.nodes, key=lambda node: node.id) # with lowest uid is assigned as primary - self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[0])) - self.assertIn(self.role_name, objects.Node.all_tags(nodes[1])) + self.assertEqual( + objects.Node.all_tags(nodes[0]), [self.primary_role_name]) + self.assertEqual( + objects.Node.all_tags(nodes[1]), [self.role_name]) def test_primary_controller_assigned_for_ready_node(self): cluster = self.env.create( @@ -73,8 +75,10 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase): ready_node = next(n for n in cluster.nodes if n.status == consts.NODE_STATUSES.ready) self.assertEqual(nodes[1], ready_node) - self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[1])) - self.assertIn(self.role_name, objects.Node.all_tags(nodes[0])) + self.assertEqual( + objects.Node.all_tags(nodes[1]), [self.primary_role_name]) + self.assertEqual( + objects.Node.all_tags(nodes[0]), [self.role_name]) def test_primary_assignment_multinode(self): """Primary should not be assigned in multinode env.""" @@ -92,8 +96,10 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase): 'status': consts.NODE_STATUSES.ready, 'pending_addition': True}]) objects.Cluster.set_primary_tags(cluster, cluster.nodes) - self.assertIn(self.role_name, objects.Node.all_tags(cluster.nodes[0])) - self.assertIn(self.role_name, objects.Node.all_tags(cluster.nodes[1])) + self.assertEqual( + objects.Node.all_tags(cluster.nodes[0]), [self.role_name]) + self.assertEqual( + objects.Node.all_tags(cluster.nodes[1]), [self.role_name]) def test_primary_not_assigned_to_pending_deletion(self): cluster = self.env.create( @@ -105,7 +111,8 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase): 'status': consts.NODE_STATUSES.ready, 'pending_deletion': True}]) objects.Cluster.set_primary_tags(cluster, cluster.nodes) - self.assertIn(self.role_name, objects.Node.all_tags(cluster.nodes[0])) + self.assertEqual( + objects.Node.all_tags(cluster.nodes[0]), [self.role_name]) @contextmanager def assert_node_reassigned(self): @@ -122,11 +129,14 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase): 'pending_addition': True}]) objects.Cluster.set_primary_tags(cluster, cluster.nodes) nodes = sorted(cluster.nodes, key=lambda node: node.id) - self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[1])) - self.assertIn(self.role_name, objects.Node.all_tags(nodes[0])) + self.assertEqual( + objects.Node.all_tags(nodes[1]), [self.primary_role_name]) + self.assertEqual( + objects.Node.all_tags(nodes[0]), [self.role_name]) yield nodes[1] objects.Cluster.set_primary_tags(cluster, cluster.nodes) - self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[0])) + self.assertEqual( + objects.Node.all_tags(nodes[0]), [self.primary_role_name]) def test_primary_assign_after_reset_to_discovery(self): """Removing primary roles after resetting node to discovery"""