Fixes in CreateUpgradeReleaseHandler

* add deployment_tasks in clone release
* fix typo
* copy net_roles_metadata on src releases

Change-Id: Ia3b29f3f6d36442d5980e9fdff951bfcc3ad814f
Closes-bug: 1617247
This commit is contained in:
Sergey Abramov 2016-08-25 18:44:27 +03:00
parent 0ae07c813e
commit 8147718cf7
2 changed files with 26 additions and 7 deletions

View File

@ -14,6 +14,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import copy
import six
from nailgun.api.v1.handlers import base
@ -152,13 +153,14 @@ class CreateUpgradeReleaseHandler(base.BaseHandler):
Overwrite base default_mapping by orig default_maping values.
"""
base_nets = copy.deepcopy(base_nets)
orig_nets = copy.deepcopy(orig_nets)
orig_network_dict = {n['id']: n for n in orig_nets}
for base_net in base_nets:
orig_net = orig_network_dict.get(base_net['id'])
if orig_net is None:
orig_net = base_net
base_net['default_mapping'] = orig_net['default_mapping']
return base_net
if orig_net is not None:
base_net['default_mapping'] = orig_net['default_mapping']
return base_nets
@base.serialize
def POST(self, cluster_id, release_id):
@ -174,14 +176,15 @@ class CreateUpgradeReleaseHandler(base.BaseHandler):
base_release = self.get_object_or_404(objects.Release, release_id)
orig_cluster = self.get_object_or_404(objects.Cluster, cluster_id)
orig_release = orig_cluster.release
network_metadata = self.merge_network_roles(
base_release.network_roles_metadata,
orig_release.network_roles_metadata)
data = objects.Release.to_dict(base_release)
data = dict(base_release)
data['network_roles_metadata'] = network_metadata
data['name'] = '{0} Upgrade ({1})'.format(
base_release.name, orig_release.id)
deployment_tasks = objects.Release.get_deployment_tasks(base_release)
data['deployment_tasks'] = deployment_tasks
del data['id']
new_release = objects.Release.create(data)
return new_release.to_dict()
return objects.Release.to_dict(new_release)

View File

@ -247,3 +247,19 @@ class TestCopyVipsHandler(base.BaseIntegrationTest):
self.assertEqual(resp.status_code, 200)
self.assertTrue(copy_vips_mc.called)
class TestCreateUpgradeReleaseHandler(base.BaseIntegrationTest):
def test_clone_release(self):
new_cluster = self.env.create_cluster(api=False)
release = self.env.create_release(
operating_system=consts.RELEASE_OS.ubuntu, version="new_version")
uri = reverse(
'CreateUpgradeReleaseHandler',
kwargs={'cluster_id': new_cluster.id, 'release_id': release.id})
resp = self.app.post(uri, headers=self.default_headers)
self.assertEqual(resp.status_code, 200)
self.assertEqual(
'{0} Upgrade ({1})'.format(release.name, new_cluster.release.id),
resp.json_body['name'])