Correct processing of customized nodes

Since node can be customized with LCM
deployment info, it's not needed to
convert old serialization style to
new.

Change-Id: I4822745849925076cbcedbd028c9e37d91d1aa1c
Closes-Bug: #1572965
This commit is contained in:
Artur Svechnikov 2016-04-21 17:48:16 +03:00
parent 1ce23a0f22
commit 8ed32e49c1
2 changed files with 38 additions and 2 deletions

View File

@ -667,9 +667,14 @@ class DeploymentLCMSerializer(DeploymentHASerializer90):
data = {}
roles = []
for role_data in node.replaced_deployment_info:
roles.append(role_data.pop('role'))
if 'role' in role_data:
# if replaced_deployment_info consists
# of old serialized info, the old info
# have serialized data per role
roles.append(role_data.pop('role'))
data = utils.dict_merge(data, role_data)
data['roles'] = roles
if roles:
data['roles'] = roles
yield data
def serialize_nodes(self, nodes):

View File

@ -584,6 +584,22 @@ class TestDeploymentLCMSerialization90(
self.assertIn('plugins', node)
self.datadiff(plugins_data, node['plugins'], compare_sorted=True)
def test_serialize_with_customized(self):
objects.Cluster.prepare_for_deployment(self.cluster_db)
serialized = self.serializer.serialize(self.cluster_db, [self.node])
objects.Cluster.replace_deployment_info(self.cluster_db, serialized)
objects.Cluster.prepare_for_deployment(self.cluster_db)
cust_serialized = self.serializer.serialize(
self.cluster_db, [self.node])
for item in serialized:
if item['uid'] != consts.MASTER_NODE_UID:
self.assertIn(item, cust_serialized)
else:
item['cluster']['is_customized'] = True
self.assertIn(item, cust_serialized)
class TestDeploymentHASerializer90(
TestSerializer90Mixin,
@ -602,6 +618,21 @@ class TestDeploymentHASerializer90(
for ceph_key in expected_keys:
self.assertIn(ceph_key, storage_attrs)
def test_serialize_with_customized(self):
cluster = self.env.clusters[0]
serializer = self.create_serializer(cluster)
objects.Cluster.prepare_for_deployment(cluster)
serialized = serializer.serialize(cluster, cluster.nodes)
objects.Cluster.replace_deployment_info(cluster, serialized)
objects.Cluster.prepare_for_deployment(cluster)
cust_serialized = serializer.serialize(
cluster, cluster.nodes)
for item in serialized:
self.assertIn(item, cust_serialized)
class TestDeploymentTasksSerialization90(
TestSerializer90Mixin,