def migrate_server(context, server_id): server = context.src_cloud.nova.servers.get(server_id) server_id = server.id flavor_id = server.flavor["id"] flavor_retrieve = "flavor-{}-retrieve".format(flavor_id) resources = [] identity_flow = identity_tasks.migrate_server_identity(context, server.to_dict()) resources.append(identity_flow) tenant = context.src_cloud.keystone.tenants.get(server.tenant_id) server_secgroups = server.list_security_group() for secgroup in server_secgroups: secgroup_retrieve = "secgroup-{}-retrieve".format(secgroup.id) if secgroup_retrieve not in context.store: secgroup_flow = secgroup_tasks.migrate_secgroup(context, secgroup.id, tenant.id, server.user_id) resources.append(secgroup_flow) server_nics = "server-{}-nics".format(server_id) nics = [] for network_name, addresses in server.addresses.iteritems(): for address in addresses: flow, nic = network_tasks.migrate_nic(context, network_name, address, tenant.id) if flow is not None: resources.append(flow) if nic is not None: nics.append(nic) resources.append(task_utils.Gather(name=server_nics, provides=server_nics, rebind=nics)) if flavor_retrieve not in context.store: flavor_flow = flavor_tasks.migrate_flavor(context, flavor_id) resources.append(flavor_flow) add_resources, server_flow = server_tasks.reprovision_server(context, server, server_nics) resources += add_resources return resources, server_flow
def test_migrate_flavor(self, mock_flow, mock_retrieve_flavor, mock_ensure_flavor): flow = flavor.migrate_flavor( self.context, self.dummy_id, ) mock_flow.assert_called_once_with("migrate-flavor-%s" % self.dummy_id) self.assertEqual( mock_flow().add.call_args, call( mock_retrieve_flavor(), mock_ensure_flavor() ) ) self.assertEqual( {"flavor-%s-retrieve" % self.dummy_id: self.dummy_id}, self.context.store, )