Revert "Add default tags"

This reverts commit 508dccf9b2.

Change-Id: I63a87f8ca4dbcbff3ce1da36078aa3fd9520566e
This commit is contained in:
Mikhail Zhnichkov 2016-11-08 07:28:41 +00:00
parent 4d31f764db
commit e032d4f6e8
13 changed files with 90 additions and 485 deletions

View File

@ -40,87 +40,6 @@
strategy: strategy:
type: parallel type: parallel
amount: 6 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 - id: cinder
type: group type: group
roles: [cinder] roles: [cinder]
@ -194,11 +113,7 @@
type: puppet type: puppet
groups: [primary-controller, controller, groups: [primary-controller, controller,
cinder, compute, ceph-osd, cinder, compute, ceph-osd,
primary-mongo, mongo, ironic, primary-mongo, mongo, ironic]
primary-database, database,
primary-keystone, keystone,
primary-neutron, neutron,
primary-rabbitmq, rabbitmq]
required_for: [deploy_end] required_for: [deploy_end]
requires: [deploy_start] requires: [deploy_start]
reexecute_on: [deploy_changes] reexecute_on: [deploy_changes]
@ -264,11 +179,7 @@
type: puppet type: puppet
groups: [primary-controller, controller, groups: [primary-controller, controller,
cinder, compute, ceph-osd, cinder, compute, ceph-osd,
primary-mongo, mongo, ironic, primary-mongo, mongo, ironic]
primary-database, database,
primary-keystone, keystone,
primary-neutron, neutron,
primary-rabbitmq, rabbitmq]
required_for: [deploy_end] required_for: [deploy_end]
requires: [deploy_start] requires: [deploy_start]
reexecute_on: [deploy_changes] reexecute_on: [deploy_changes]

View File

@ -29,10 +29,6 @@
message: "Neutron L3 HA requires at least 2 Controller nodes to function properly." message: "Neutron L3 HA requires at least 2 Controller nodes to function properly."
tags: tags:
- controller - controller
- rabbitmq
- database
- keystone
- neutron
compute: compute:
name: "Compute" name: "Compute"
description: "A Compute node creates, manages, and terminates virtual machine instances." description: "A Compute node creates, manages, and terminates virtual machine instances."
@ -192,6 +188,8 @@
tags_metadata: tags_metadata:
controller: controller:
has_primary: True has_primary: True
mysql:
has_primary: True
mongo: mongo:
has_primary: True has_primary: True
compute: compute:
@ -200,14 +198,6 @@
has_primary: False has_primary: False
cinder: cinder:
has_primary: False has_primary: False
rabbitmq:
has_primary: True
database:
has_primary: True
keystone:
has_primary: True
neutron:
has_primary: True
network_roles_metadata: network_roles_metadata:
- -

View File

@ -46,10 +46,7 @@ class DeploymentMultinodeSerializer(object):
neutron_network_serializer = \ neutron_network_serializer = \
neutron_serializers.NeutronNetworkDeploymentSerializer neutron_serializers.NeutronNetworkDeploymentSerializer
critical_roles = frozenset(('controller', 'ceph-osd', 'primary-mongo', critical_roles = frozenset(('controller', 'ceph-osd', 'primary-mongo'))
'primary-database', 'primary-rabbitmq',
'primary-keystone', 'primary-neutron',
'database', 'keystone', 'neutron', 'rabbitmq'))
def __init__(self, tasks_graph=None): def __init__(self, tasks_graph=None):
self.task_graph = tasks_graph self.task_graph = tasks_graph
@ -337,15 +334,7 @@ class DeploymentHASerializer(DeploymentMultinodeSerializer):
'primary-mongo', 'primary-mongo',
'primary-swift-proxy', 'primary-swift-proxy',
'ceph-osd', 'ceph-osd',
'controller', 'controller'
'primary-database',
'primary-rabbitmq',
'primary-keystone',
'primary-neutron',
'database',
'keystone',
'neutron',
'rabbitmq'
)) ))
def get_last_controller(self, nodes): def get_last_controller(self, nodes):

View File

@ -42,79 +42,6 @@ DEPLOYMENT_51_60 = """
strategy: strategy:
type: parallel type: parallel
amount: 6 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 - id: cinder
type: group type: group
role: [cinder] role: [cinder]
@ -202,79 +129,6 @@ DEPLOYMENT_50 = """
parameters: parameters:
strategy: strategy:
type: one_by_one 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 - id: cinder
type: group type: group
role: [cinder] role: [cinder]

View File

@ -34,9 +34,6 @@ from nailgun.utils import reverse
class TestHandlers(BaseIntegrationTest): class TestHandlers(BaseIntegrationTest):
primary_controller_tags = ['primary-controller', 'primary-database',
'primary-keystone', 'primary-neutron',
'primary-rabbitmq']
@mock_rpc(pass_mock=True) @mock_rpc(pass_mock=True)
def test_nova_deploy_cast_with_right_args(self, mocked_rpc): def test_nova_deploy_cast_with_right_args(self, mocked_rpc):
@ -116,7 +113,7 @@ class TestHandlers(BaseIntegrationTest):
for node in nodes_db: for node in nodes_db:
node_id = node.id node_id = node.id
admin_ip = admin_ips.pop() 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] = {}
assigned_ips[node_id]['internal'] = '192.168.0.%d' % (i + 2) assigned_ips[node_id]['internal'] = '192.168.0.%d' % (i + 2)
assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3) assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3)
@ -146,9 +143,7 @@ class TestHandlers(BaseIntegrationTest):
deepcopy(nodes_list)) deepcopy(nodes_list))
common_attrs['nodes'] = nodes_list common_attrs['nodes'] = nodes_list
for node, role in zip(common_attrs['nodes'], common_attrs['nodes'][0]['role'] = 'primary-controller'
self.primary_controller_tags):
node['role'] = role
common_attrs['last_controller'] = controller_nodes[-1]['name'] common_attrs['last_controller'] = controller_nodes[-1]['name']
common_attrs['storage']['pg_num'] = 128 common_attrs['storage']['pg_num'] = 128
@ -175,17 +170,13 @@ class TestHandlers(BaseIntegrationTest):
'primary-controller': True, 'primary-controller': True,
'controller': True, 'controller': True,
'cinder': False, 'cinder': False,
'compute': False, 'compute': False
'database': True,
'keystone': True,
'rabbitmq': True,
'neutron': True
} }
deployment_info = [] deployment_info = []
for node in nodes_db: for node in nodes_db:
ips = assigned_ips[node.id] ips = assigned_ips[node.id]
for role in sorted(node.tag_names): for role in sorted(node.roles):
is_critical = critical_mapping[role] is_critical = critical_mapping[role]
individual_atts = { individual_atts = {
@ -223,9 +214,11 @@ class TestHandlers(BaseIntegrationTest):
individual_atts.update(common_attrs) individual_atts.update(common_attrs)
deployment_info.append(deepcopy(individual_atts)) deployment_info.append(deepcopy(individual_atts))
for node, role in zip(deployment_info, self.primary_controller_tags): controller_nodes = filter(
node['role'] = role lambda node: node['role'] == 'controller',
node['fail_if_error'] = True deployment_info)
controller_nodes[0]['role'] = 'primary-controller'
controller_nodes[0]['fail_if_error'] = True
supertask = self.env.launch_deployment() supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks deploy_task_uuid = [x.uuid for x in supertask.subtasks
@ -537,7 +530,7 @@ class TestHandlers(BaseIntegrationTest):
for node in nodes_db: for node in nodes_db:
node_id = node.id node_id = node.id
admin_ip = admin_ips.pop() 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] = {}
assigned_ips[node_id]['management'] = '192.168.0.%d' % (i + 2) assigned_ips[node_id]['management'] = '192.168.0.%d' % (i + 2)
assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3) assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3)
@ -567,9 +560,8 @@ class TestHandlers(BaseIntegrationTest):
deepcopy(nodes_list)) deepcopy(nodes_list))
common_attrs['nodes'] = nodes_list common_attrs['nodes'] = nodes_list
for node, role in zip(common_attrs['nodes'], common_attrs['nodes'][0]['role'] = 'primary-controller'
self.primary_controller_tags):
node['role'] = role
common_attrs['last_controller'] = controller_nodes[-1]['name'] common_attrs['last_controller'] = controller_nodes[-1]['name']
common_attrs['storage']['pg_num'] = 128 common_attrs['storage']['pg_num'] = 128
@ -595,17 +587,13 @@ class TestHandlers(BaseIntegrationTest):
'primary-controller': True, 'primary-controller': True,
'controller': True, 'controller': True,
'cinder': False, 'cinder': False,
'compute': False, 'compute': False
'database': True,
'keystone': True,
'rabbitmq': True,
'neutron': True
} }
deployment_info = [] deployment_info = []
for node in nodes_db: for node in nodes_db:
ips = assigned_ips[node.id] ips = assigned_ips[node.id]
for role in sorted(node.tag_names): for role in sorted(node.roles):
is_critical = critical_mapping[role] is_critical = critical_mapping[role]
individual_atts = { individual_atts = {
@ -694,9 +682,11 @@ class TestHandlers(BaseIntegrationTest):
individual_atts.update(common_attrs) individual_atts.update(common_attrs)
deployment_info.append(deepcopy(individual_atts)) deployment_info.append(deepcopy(individual_atts))
for node, role in zip(deployment_info, self.primary_controller_tags): controller_nodes = filter(
node['role'] = role lambda node: node['role'] == 'controller',
node['fail_if_error'] = True deployment_info)
controller_nodes[0]['role'] = 'primary-controller'
controller_nodes[0]['fail_if_error'] = True
supertask = self.env.launch_deployment() supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks deploy_task_uuid = [x.uuid for x in supertask.subtasks
@ -1028,7 +1018,7 @@ class TestHandlers(BaseIntegrationTest):
for node in nodes_db: for node in nodes_db:
node_id = node.id node_id = node.id
admin_ip = admin_ips.pop() 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] = {}
assigned_ips[node_id]['management'] = '192.168.0.%d' % (i + 2) assigned_ips[node_id]['management'] = '192.168.0.%d' % (i + 2)
assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3) assigned_ips[node_id]['public'] = '172.16.0.%d' % (i + 3)
@ -1058,9 +1048,7 @@ class TestHandlers(BaseIntegrationTest):
deepcopy(nodes_list)) deepcopy(nodes_list))
common_attrs['tasks'] = [] common_attrs['tasks'] = []
common_attrs['nodes'] = nodes_list common_attrs['nodes'] = nodes_list
for node, role in zip(common_attrs['nodes'], common_attrs['nodes'][0]['role'] = 'primary-controller'
self.primary_controller_tags):
node['role'] = role
common_attrs['last_controller'] = controller_nodes[-1]['name'] common_attrs['last_controller'] = controller_nodes[-1]['name']
common_attrs['storage']['pg_num'] = 128 common_attrs['storage']['pg_num'] = 128
@ -1087,20 +1075,17 @@ class TestHandlers(BaseIntegrationTest):
'primary-controller': True, 'primary-controller': True,
'controller': True, 'controller': True,
'cinder': False, 'cinder': False,
'compute': False, 'compute': False
'database': True,
'keystone': True,
'rabbitmq': True,
'neutron': True
} }
deployment_info = [] deployment_info = []
nm = objects.Cluster.get_network_manager(cluster_db) nm = objects.Cluster.get_network_manager(node.cluster)
for node in nodes_db: for node in nodes_db:
ips = assigned_ips[node.id] ips = assigned_ips[node.id]
other_nets = nm.get_networks_not_on_node(node) 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] is_critical = critical_mapping[role]
individual_atts = { individual_atts = {
@ -1205,9 +1190,11 @@ class TestHandlers(BaseIntegrationTest):
individual_atts.update(common_attrs) individual_atts.update(common_attrs)
deployment_info.append(deepcopy(individual_atts)) deployment_info.append(deepcopy(individual_atts))
for node, role in zip(deployment_info, self.primary_controller_tags): controller_nodes = filter(
node['role'] = role lambda node: node['role'] == 'controller',
node['fail_if_error'] = True deployment_info)
controller_nodes[0]['role'] = 'primary-controller'
controller_nodes[0]['fail_if_error'] = True
supertask = self.env.launch_deployment() supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks deploy_task_uuid = [x.uuid for x in supertask.subtasks
@ -1425,7 +1412,7 @@ class TestHandlers(BaseIntegrationTest):
# deploy method call [1][0][1][1] # deploy method call [1][0][1][1]
n_rpc_deploy = mocked_rpc.call_args_list[ n_rpc_deploy = mocked_rpc.call_args_list[
1][0][1][1]['args']['deployment_info'] 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)) self.assertEqual(n_rpc_deploy[0]['uid'], str(self.env.nodes[0].id))
@mock_rpc(pass_mock=True) @mock_rpc(pass_mock=True)
@ -1457,20 +1444,18 @@ class TestHandlers(BaseIntegrationTest):
self.assertEqual(len(args[1]), 2) self.assertEqual(len(args[1]), 2)
n_rpc_deploy = args[1][1]['args']['deployment_info'] 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', 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'] '172.16.0.20', '172.16.0.21', '172.16.0.22']
for n in n_rpc_deploy: for n in n_rpc_deploy:
self.assertIn('management_vrouter_vip', n) self.assertIn('management_vrouter_vip', n)
self.assertIn('public_vrouter_vip', n) self.assertIn('public_vrouter_vip', n)
used_ips = []
old_nodes = n_rpc_deploy[0]['nodes'] for n_common_args in n['nodes']:
used_ips = [] self.assertIn(n_common_args['public_address'], pub_ips)
for n in {v['uid']: v for v in old_nodes}.values(): self.assertNotIn(n_common_args['public_address'], used_ips)
self.assertIn(n['public_address'], pub_ips) used_ips.append(n_common_args['public_address'])
self.assertNotIn(n['public_address'], used_ips) self.assertIn('management_vrouter_vip', n)
used_ips.append(n['public_address'])
@mock_rpc(pass_mock=True) @mock_rpc(pass_mock=True)
def test_deploy_ha_neutron_gre_w_custom_public_ranges(self, mocked_rpc): 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) self.assertEqual(len(args[1]), 2)
n_rpc_deploy = args[1][1]['args']['deployment_info'] 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', 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'] '172.16.0.20', '172.16.0.21', '172.16.0.22']
for n in n_rpc_deploy: for n in n_rpc_deploy:
self.assertEqual(n['public_vip'], '172.16.0.10') self.assertEqual(n['public_vip'], '172.16.0.10')
used_ips = []
old_nodes = n_rpc_deploy[0]['nodes'] for n_common_args in n['nodes']:
used_ips = [] self.assertIn(n_common_args['public_address'], pub_ips)
for n in {v['uid']: v for v in old_nodes}.values(): self.assertNotIn(n_common_args['public_address'], used_ips)
self.assertIn(n['public_address'], pub_ips) used_ips.append(n_common_args['public_address'])
self.assertNotIn(n['public_address'], used_ips)
used_ips.append(n['public_address'])
@mock_rpc(pass_mock=True) @mock_rpc(pass_mock=True)
def test_deploy_neutron_gre_w_changed_public_cidr(self, mocked_rpc): 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) self.assertEqual(len(args[1]), 2)
n_rpc_deploy = args[1][1]['args']['deployment_info'] 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'] pub_ips = ['172.16.10.11', '172.16.10.12', '172.16.10.13']
for n in n_rpc_deploy: for n in n_rpc_deploy:
for n_common_args in n['nodes']: for n_common_args in n['nodes']:
@ -1890,8 +1873,8 @@ class TestHandlers(BaseIntegrationTest):
deployment_info = args[1][0]['args']['deployment_info'] deployment_info = args[1][0]['args']['deployment_info']
self.assertItemsEqual( self.assertItemsEqual(
set([node.uid for node in self.env.nodes]), [node.uid for node in self.env.nodes],
set([node['uid'] for node in deployment_info]) [node['uid'] for node in deployment_info]
) )
def _test_run(self, mcast, mode='dry_run'): def _test_run(self, mcast, mode='dry_run'):
@ -2163,86 +2146,6 @@ class TestGranularDeployment(BaseIntegrationTest):
'required_for': ['post_deployment_end'], 'required_for': ['post_deployment_end'],
'reexecute_on': ['deploy_changes'], '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( n1 = self.env.create_node(

View File

@ -625,7 +625,7 @@ class TestReleasePluginsGraphHandler(BaseGraphTasksTests,
headers=self.default_headers, headers=self.default_headers,
) )
self.assertEqual(resp.status_code, 200) 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): def test_get_existing_custom_deployment_tasks(self):
resp = self.app.get( resp = self.app.get(

View File

@ -163,7 +163,7 @@ class TestDefaultOrchestratorInfoHandlers(BaseIntegrationTest):
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
actual_uids = [node['uid'] for node in resp.json_body] actual_uids = [node['uid'] for node in resp.json_body]
node_ids.append('common') node_ids.append('common')
self.assertItemsEqual(set(actual_uids), node_ids) self.assertItemsEqual(actual_uids, node_ids)
def test_cluster_provisioning_customization(self): def test_cluster_provisioning_customization(self):
facts = {'engine': {'1': '2'}} facts = {'engine': {'1': '2'}}
@ -241,8 +241,8 @@ class BaseSelectedNodesTest(BaseIntegrationTest):
else: else:
deployed_uids = [n['uid'] for n in deployed_uids = [n['uid'] for n in
args[1]['args']['deployment_info']] args[1]['args']['deployment_info']]
self.assertEqual(len(nodes_uids), len(set(deployed_uids))) self.assertEqual(len(nodes_uids), len(deployed_uids))
self.assertItemsEqual(nodes_uids, set(deployed_uids)) self.assertItemsEqual(nodes_uids, deployed_uids)
def check_resp_declined(self, resp): def check_resp_declined(self, resp):
self.assertEqual(resp.status_code, 400) self.assertEqual(resp.status_code, 400)
@ -627,7 +627,7 @@ class TestDeploymentHandlerSkipTasks(BaseSelectedNodesTest):
args, kwargs = mcast.call_args args, kwargs = mcast.call_args
deployed_uids = [n['uid'] for n in args[1]['args']['deployment_info']] deployed_uids = [n['uid'] for n in args[1]['args']['deployment_info']]
deployment_data = args[1]['args']['deployment_info'][0] 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) self.assertEqual(len(deployment_data['tasks']), 1)
def test_deployment_is_forbidden(self): def test_deployment_is_forbidden(self):

View File

@ -209,12 +209,8 @@ class TestNovaOrchestratorSerializer(OrchestratorSerializerTestBase):
return cluster_db return cluster_db
def assert_roles_flattened(self, nodes): 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, '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, 'compute', 2)
self.assert_nodes_with_role(nodes, 'cinder', 3) self.assert_nodes_with_role(nodes, 'cinder', 3)
self.assert_nodes_with_role(nodes, 'mongo', 1) 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': False, 'role': 'compute'}, {'fail_if_error': False, 'role': 'compute'},
{'fail_if_error': True, 'role': 'primary-mongo'}, {'fail_if_error': True, 'role': 'primary-mongo'},
{'fail_if_error': False, 'role': 'cinder'}, {'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'}
] ]
self.assertItemsEqual( self.assertItemsEqual(
@ -1328,19 +1320,7 @@ class TestNovaOrchestratorHASerializer(OrchestratorSerializerTestBase):
{'fail_if_error': False, 'role': 'compute'}, {'fail_if_error': False, 'role': 'compute'},
{'fail_if_error': False, 'role': 'compute'}, {'fail_if_error': False, 'role': 'compute'},
{'fail_if_error': True, 'role': 'primary-mongo'}, {'fail_if_error': True, 'role': 'primary-mongo'},
{'fail_if_error': False, 'role': 'cinder'}, {'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'}
] ]
self.assertItemsEqual( self.assertItemsEqual(
@ -1509,12 +1489,8 @@ class TestNeutronOrchestratorSerializer(OrchestratorSerializerTestBase):
return serializer.serialize(cluster, cluster.nodes) return serializer.serialize(cluster, cluster.nodes)
def assert_roles_flattened(self, 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, '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, 'compute', 2)
self.assert_nodes_with_role(nodes, 'cinder', 3) self.assert_nodes_with_role(nodes, 'cinder', 3)
@ -1662,7 +1638,7 @@ class TestNeutronOrchestratorSerializer(OrchestratorSerializerTestBase):
# We have 6 roles on 4 nodes summarily. # We have 6 roles on 4 nodes summarily.
# Only 1 node w 2 roles (controller+cinder) will have public # Only 1 node w 2 roles (controller+cinder) will have public
# when 'assign_to_all_nodes' option is switched off # 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 # Check uncommon attrs
node_uids = sorted(set([int(n['uid']) for n in node_list])) node_uids = sorted(set([int(n['uid']) for n in node_list]))

View File

@ -734,30 +734,6 @@ class TestPluginDeploymentTasksInjection70(base.BaseIntegrationTest):
'requires': ['deploy_start'], 'requires': ['deploy_start'],
'role': ['primary-controller'], 'role': ['primary-controller'],
'type': 'group'}, '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', {'id': 'first-fake-depl-task',
'required_for': ['deploy_end'], 'required_for': ['deploy_end'],
'requires': ['deploy_start'], 'requires': ['deploy_start'],
@ -1342,8 +1318,8 @@ class TestNetworkTemplateSerializer70(BaseDeploymentSerializer,
serialized_for_astute = deployment_info_to_legacy( serialized_for_astute = deployment_info_to_legacy(
serialized_for_astute) serialized_for_astute)
# 15 node roles on 5 nodes # 7 node roles on 5 nodes
self.assertEqual(len(serialized_for_astute), 15) self.assertEqual(len(serialized_for_astute), 7)
for node_data in serialized_for_astute: for node_data in serialized_for_astute:
node = objects.Node.get_by_uid(node_data['uid']) node = objects.Node.get_by_uid(node_data['uid'])
for node_roles, net_names in node_roles_vs_net_names: for node_roles, net_names in node_roles_vs_net_names:

View File

@ -765,7 +765,7 @@ class TestDeploymentHASerializer90(
def test_serialize_with_customized(self): def test_serialize_with_customized(self):
cluster = self.env.clusters[0] cluster = self.env.clusters[0]
serializer = deployment_serializers.DeploymentLCMSerializer() serializer = self.create_serializer(cluster)
objects.Cluster.prepare_for_deployment(cluster) objects.Cluster.prepare_for_deployment(cluster)
serialized = serializer.serialize(cluster, cluster.nodes) serialized = serializer.serialize(cluster, cluster.nodes)

View File

@ -893,7 +893,7 @@ class TestTaskManagers(BaseIntegrationTest):
deployment_info = args[1][0]['args']['deployment_info'] deployment_info = args[1][0]['args']['deployment_info']
self.assertItemsEqual( self.assertItemsEqual(
[node.uid for node in self.env.nodes], [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() @fake_tasks()

View File

@ -789,14 +789,11 @@ class TestNodeObject(BaseIntegrationTest):
cluster_kwargs={'api': False}, cluster_kwargs={'api': False},
nodes_kwargs=[{'role': 'controller'}]) nodes_kwargs=[{'role': 'controller'}])
node = self.env.nodes[0] node = self.env.nodes[0]
node_tags = ['controller', 'database', 'keystone', 'neutron', self.assertEqual(['controller'], objects.Node.all_tags(node))
'rabbitmq']
self.assertEqual(node_tags, objects.Node.all_tags(node))
objects.Node.update_roles(node, ['controller', 'cinder']) objects.Node.update_roles(node, ['controller', 'cinder'])
node_tags.append('cinder')
self.assertItemsEqual( self.assertItemsEqual(
node_tags, objects.Node.all_tags(node) ['controller', 'cinder'], objects.Node.all_tags(node)
) )
t = objects.Tag.create({ t = objects.Tag.create({
@ -809,9 +806,8 @@ class TestNodeObject(BaseIntegrationTest):
node.tags.append(node_tag) node.tags.append(node_tag)
self.db.add(node_tag) self.db.add(node_tag)
self.db.flush() self.db.flush()
node_tags.append('test')
self.assertItemsEqual( self.assertItemsEqual(
node_tags, objects.Node.all_tags(node) ['controller', 'cinder', 'test'], objects.Node.all_tags(node)
) )
objects.Node.update_roles(node, []) objects.Node.update_roles(node, [])

View File

@ -52,8 +52,10 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase):
objects.Cluster.set_primary_tags(cluster, cluster.nodes) objects.Cluster.set_primary_tags(cluster, cluster.nodes)
nodes = sorted(cluster.nodes, key=lambda node: node.id) nodes = sorted(cluster.nodes, key=lambda node: node.id)
# with lowest uid is assigned as primary # with lowest uid is assigned as primary
self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[0])) self.assertEqual(
self.assertIn(self.role_name, objects.Node.all_tags(nodes[1])) 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): def test_primary_controller_assigned_for_ready_node(self):
cluster = self.env.create( cluster = self.env.create(
@ -73,8 +75,10 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase):
ready_node = next(n for n in cluster.nodes ready_node = next(n for n in cluster.nodes
if n.status == consts.NODE_STATUSES.ready) if n.status == consts.NODE_STATUSES.ready)
self.assertEqual(nodes[1], ready_node) self.assertEqual(nodes[1], ready_node)
self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[1])) self.assertEqual(
self.assertIn(self.role_name, objects.Node.all_tags(nodes[0])) 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): def test_primary_assignment_multinode(self):
"""Primary should not be assigned in multinode env.""" """Primary should not be assigned in multinode env."""
@ -92,8 +96,10 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase):
'status': consts.NODE_STATUSES.ready, 'status': consts.NODE_STATUSES.ready,
'pending_addition': True}]) 'pending_addition': True}])
objects.Cluster.set_primary_tags(cluster, cluster.nodes) objects.Cluster.set_primary_tags(cluster, cluster.nodes)
self.assertIn(self.role_name, objects.Node.all_tags(cluster.nodes[0])) self.assertEqual(
self.assertIn(self.role_name, objects.Node.all_tags(cluster.nodes[1])) 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): def test_primary_not_assigned_to_pending_deletion(self):
cluster = self.env.create( cluster = self.env.create(
@ -105,7 +111,8 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase):
'status': consts.NODE_STATUSES.ready, 'status': consts.NODE_STATUSES.ready,
'pending_deletion': True}]) 'pending_deletion': True}])
objects.Cluster.set_primary_tags(cluster, cluster.nodes) 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 @contextmanager
def assert_node_reassigned(self): def assert_node_reassigned(self):
@ -122,11 +129,14 @@ class BasePrimaryRolesAssignmentTestCase(base.BaseTestCase):
'pending_addition': True}]) 'pending_addition': True}])
objects.Cluster.set_primary_tags(cluster, cluster.nodes) objects.Cluster.set_primary_tags(cluster, cluster.nodes)
nodes = sorted(cluster.nodes, key=lambda node: node.id) nodes = sorted(cluster.nodes, key=lambda node: node.id)
self.assertIn(self.primary_role_name, objects.Node.all_tags(nodes[1])) self.assertEqual(
self.assertIn(self.role_name, objects.Node.all_tags(nodes[0])) objects.Node.all_tags(nodes[1]), [self.primary_role_name])
self.assertEqual(
objects.Node.all_tags(nodes[0]), [self.role_name])
yield nodes[1] yield nodes[1]
objects.Cluster.set_primary_tags(cluster, cluster.nodes) 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): def test_primary_assign_after_reset_to_discovery(self):
"""Removing primary roles after resetting node to discovery""" """Removing primary roles after resetting node to discovery"""