Move change_env_settings function from octane to cluster upgrade extension

* change_env_settings function was moved to cluster upgrade extention
* merge generated attributes code was written

Change-Id: I6d1e27b8b0c01f3251067bc88931cd2354feb5ce
Partial-Bug: #1602587
(cherry picked from commit dc2e3f9309)
This commit is contained in:
Anastasiya 2016-08-01 14:39:35 +03:00 committed by Ilya Kharin
parent da0e1d2cca
commit a78f4348f8
2 changed files with 43 additions and 3 deletions

View File

@ -97,8 +97,16 @@ class TestUpgradeHelperCloneCluster(base_tests.BaseCloneClusterTest):
self.helper.copy_attributes(self.src_cluster, new_cluster)
self.assertEqual(self.src_cluster.generated_attrs,
new_cluster.generated_attrs)
self.assertNotEqual(new_cluster.generated_attrs.get('provision'),
self.src_cluster.generated_attrs.get('provision'))
# We make image_data in src_cluster and in new_cluster the same
# to validate that all other generated attributes are equal
generated_attrs = copy.deepcopy(self.src_cluster.generated_attrs)
generated_attrs['provision']['image_data'] = \
new_cluster.generated_attrs['provision']['image_data']
self.assertEqual(generated_attrs, new_cluster.generated_attrs)
editable_attrs = self.src_cluster.editable_attrs
for section, params in six.iteritems(new_cluster.editable_attrs):
if section == "repo_setup":
@ -211,3 +219,22 @@ class TestUpgradeHelperCloneCluster(base_tests.BaseCloneClusterTest):
self.helper.copy_attributes(self.src_cluster, new_cluster)
self._check_dns_and_ntp_list_values(
new_cluster, ["4", "5", "6"], ["1", "2", "3"])
def test_change_env_settings(self):
new_cluster = self.helper.create_cluster_clone(self.src_cluster,
self.data)
self.helper.copy_attributes(self.src_cluster, new_cluster)
attrs = new_cluster.attributes
self.helper.change_env_settings(self.src_cluster, new_cluster)
self.assertEqual('image',
attrs['editable']['provision']['method']['value'])
def test_change_env_settings_no_editable_provision(self):
new_cluster = self.helper.create_cluster_clone(self.src_cluster,
self.data)
self.helper.copy_attributes(self.src_cluster, new_cluster)
attrs = new_cluster.attributes
attrs['editable']['provision']['method']['value'] = 'cobbler'
self.helper.change_env_settings(self.src_cluster, new_cluster)
self.assertEqual('image',
attrs['editable']['provision']['method']['value'])

View File

@ -53,6 +53,13 @@ def merge_attributes(a, b):
return attrs
def merge_generated_attrs(new_attrs, orig_attrs):
# skip attributes that should be generated for new cluster
attrs = copy.deepcopy(orig_attrs)
attrs.pop('provision', None)
return utils.dict_merge(new_attrs, attrs)
def merge_nets(a, b):
new_settings = copy.deepcopy(b)
source_networks = dict((n["name"], n) for n in a["networks"])
@ -90,6 +97,7 @@ class UpgradeHelper(object):
cls.copy_network_config(orig_cluster, new_cluster)
relations.UpgradeRelationObject.create_relation(orig_cluster.id,
new_cluster.id)
cls.change_env_settings(orig_cluster, new_cluster)
return new_cluster
@classmethod
@ -110,13 +118,18 @@ class UpgradeHelper(object):
# version to another. A set of this kind of steps
# should define an upgrade path of a particular
# cluster.
new_cluster.generated_attrs = utils.dict_merge(
new_cluster.generated_attrs = merge_generated_attrs(
new_cluster.generated_attrs,
orig_cluster.generated_attrs)
new_cluster.editable_attrs = merge_attributes(
orig_cluster.editable_attrs,
new_cluster.editable_attrs)
@classmethod
def change_env_settings(cls, orig_cluster, new_cluster):
attrs = new_cluster.attributes
attrs['editable']['provision']['method']['value'] = 'image'
@classmethod
def transform_vips_for_net_groups_70(cls, vips):
"""Rename or remove types of VIPs for 7.0 network groups.