Merge branch master into stable/mitaka
Change-Id: Ie7b982cac3fa19a431f0368c933cd6dd0877e256
This commit is contained in:
commit
e4d4a0b4b4
|
@ -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
|
||||
|
@ -112,6 +113,7 @@ class CopyVIPsHandler(base.BaseHandler):
|
|||
|
||||
@base.handle_errors
|
||||
@base.validate
|
||||
@base.serialize
|
||||
def POST(self, cluster_id):
|
||||
"""Copy VIPs from original cluster to new one
|
||||
|
||||
|
@ -119,6 +121,7 @@ class CopyVIPsHandler(base.BaseHandler):
|
|||
clusters that is created on cluster clone operation
|
||||
|
||||
:param cluster_id: id of cluster that VIPs must be copied to
|
||||
:returns: Collection of JSON-serialised VIPs.
|
||||
|
||||
:http: * 200 (OK)
|
||||
* 400 (validation failed)
|
||||
|
@ -143,6 +146,9 @@ class CopyVIPsHandler(base.BaseHandler):
|
|||
|
||||
upgrade.UpgradeHelper.copy_vips(orig_cluster_adapter,
|
||||
seed_cluster_adapter)
|
||||
cluster_vips = objects.IPAddrCollection.get_vips_by_cluster_id(
|
||||
cluster.id)
|
||||
return objects.IPAddrCollection.to_list(cluster_vips)
|
||||
|
||||
|
||||
class CreateUpgradeReleaseHandler(base.BaseHandler):
|
||||
|
@ -152,13 +158,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 +181,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)
|
||||
|
|
|
@ -23,6 +23,7 @@ from nailgun.test import base
|
|||
from nailgun.utils import reverse
|
||||
|
||||
from . import base as tests_base
|
||||
from ..objects import adapters
|
||||
|
||||
|
||||
class TestClusterUpgradeCloneHandler(tests_base.BaseCloneClusterTest):
|
||||
|
@ -224,26 +225,44 @@ class TestNodeReassignHandler(base.BaseIntegrationTest):
|
|||
self.assertEqual(400, resp.status_code)
|
||||
|
||||
|
||||
class TestCopyVipsHandler(base.BaseIntegrationTest):
|
||||
class TestCopyVipsHandler(tests_base.BaseCloneClusterTest):
|
||||
def test_copy_vips(self):
|
||||
node_db = self.env.create_node(cluster_id=self.src_cluster.id,
|
||||
roles=["controller"])
|
||||
node = adapters.NailgunNodeAdapter(node_db)
|
||||
|
||||
def test_copy_vips_called(self):
|
||||
from ..objects import relations
|
||||
src_net_manager = self.src_cluster.get_network_manager()
|
||||
orig_vips = src_net_manager.assign_vips_for_net_groups()
|
||||
|
||||
orig_cluster = self.env.create_cluster(api=False)
|
||||
new_cluster = self.env.create_cluster(api=False)
|
||||
new_cluster = self.helper.clone_cluster(self.src_cluster, self.data)
|
||||
self.helper.assign_node_to_cluster(node, new_cluster, node.roles, [])
|
||||
|
||||
relations.UpgradeRelationObject.create_relation(
|
||||
orig_cluster.id, new_cluster.id)
|
||||
resp = self.app.post(
|
||||
reverse(
|
||||
'CopyVIPsHandler',
|
||||
kwargs={'cluster_id': new_cluster.id}
|
||||
),
|
||||
headers=self.default_headers,
|
||||
)
|
||||
|
||||
with mock.patch('cluster_upgrade.handlers'
|
||||
'.upgrade.UpgradeHelper.copy_vips') as copy_vips_mc:
|
||||
resp = self.app.post(
|
||||
reverse(
|
||||
'CopyVIPsHandler',
|
||||
kwargs={'cluster_id': new_cluster.id}
|
||||
),
|
||||
headers=self.default_headers,
|
||||
)
|
||||
orig_vips_addrs = set(orig_vips.values())
|
||||
new_vips_addrs = {vip["ip_addr"] for vip in resp.json_body}
|
||||
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertTrue(copy_vips_mc.called)
|
||||
self.assertEqual(orig_vips_addrs, new_vips_addrs)
|
||||
|
||||
|
||||
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'])
|
||||
|
|
Loading…
Reference in New Issue