Esempio n. 1
0
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
Esempio n. 2
0
    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,
        )