From 36f3d95a471c231f2c1fafc9b2d74c7d24753899 Mon Sep 17 00:00:00 2001 From: Dmitry Nikishov Date: Wed, 7 Dec 2016 11:45:57 +0400 Subject: [PATCH] Set vip_namespace when migrating vips from 6.x Change-Id: I7d76f7984a1870c070126b0ccde160f320576cf3 --- cluster_upgrade/tests/test_transformations.py | 27 ++++++++++--------- cluster_upgrade/transformations/vip.py | 13 +++++++++ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/cluster_upgrade/tests/test_transformations.py b/cluster_upgrade/tests/test_transformations.py index ef0844f..22c4b09 100644 --- a/cluster_upgrade/tests/test_transformations.py +++ b/cluster_upgrade/tests/test_transformations.py @@ -252,33 +252,36 @@ class TestClusterTransformers(nailgun_test_base.BaseUnitTest): class TestVipTransformers(nailgun_test_base.BaseUnitTest): def setUp(self): - ip = '0.0.0.0' + vip_dict = {'ip_addr': '0.0.0.0'} self.data = { 1: { - 'haproxy': ip, - 'vrouter': ip, - 'test': ip, + 'haproxy': dict(vip_dict), + 'vrouter': dict(vip_dict), + 'test': dict(vip_dict), }, 2: { - 'haproxy': ip, - 'vrouter': ip, - 'test': ip, + 'haproxy': dict(vip_dict), + 'vrouter': dict(vip_dict), + 'test': dict(vip_dict), } } self.mapping = {1: 'management', 2: 'public'} def test_vip_transform(self): - ip = '0.0.0.0' + new_haproxy_vip_dict = {'ip_addr': '0.0.0.0', + 'vip_namespace': 'haproxy'} + new_vrouter_vip_dict = {'ip_addr': '0.0.0.0', + 'vip_namespace': 'vrouter'} data = vip.transform_vips((self.data, self.mapping)) self.assertEqual( data, ({ 1: { - 'management': ip, - 'vrouter': ip, + 'management': new_haproxy_vip_dict, + 'vrouter': new_vrouter_vip_dict, }, 2: { - 'public': ip, - 'vrouter_pub': ip, + 'public': new_haproxy_vip_dict, + 'vrouter_pub': new_vrouter_vip_dict, }}, {1: 'management', 2: 'public'}) ) diff --git a/cluster_upgrade/transformations/vip.py b/cluster_upgrade/transformations/vip.py index 350cc0a..485e771 100644 --- a/cluster_upgrade/transformations/vip.py +++ b/cluster_upgrade/transformations/vip.py @@ -41,6 +41,12 @@ def transform_vips(data): "vrouter": "vrouter_pub", }, } + vip_ns_rules = { + "vrouter": "vrouter", + "vrouter_pub": "vrouter", + "public": "haproxy", + "management": "haproxy", + } renamed_vips = collections.defaultdict(dict) vips, id_name_mapping = data for ng_id, vips_obj in vips.items(): @@ -50,6 +56,13 @@ def transform_vips(data): continue new_vip_name = ng_vip_rules[vip_name] + # When migrating from 6.x, vip_namespace key is not set for + # public/management vips + if not vip_addr.get('vip_namespace', None) and \ + new_vip_name in vip_ns_rules: + vip_ns = vip_ns_rules[new_vip_name] + vip_addr['vip_namespace'] = vip_ns + renamed_vips[ng_id][new_vip_name] = vip_addr return renamed_vips, id_name_mapping