'Indicate that resources are needed for a move to this host.
Move can be either a migrate/resize, live-migrate or an
evacuate/rebuild operation.
:param context: security context
:param instance: instance object to reserve resources for
:param new_instance_type: new instance_type being resized to
:param nodename: The Ironic nodename selected by the scheduler
:param image_meta: instance image metadata
:param move_type: move type - can be one of \'migration\', \'resize\',
\'live-migration\', \'evacuate\'
:param limits: Dict of oversubscription limits for memory, disk,
and CPUs
:param migration: A migration object if one was already created
elsewhere for this operation
:returns: A Claim ticket representing the reserved resources.  This
should be turned into finalize  a resource claim or free
resources after the compute operation is finished.'

def _move_claim(self, context, instance, new_instance_type, nodename, move_type=None, image_meta=None, limits=None, migration=None):

    image_meta = (image_meta or {})
    if migration:
        self._claim_existing_migration(migration, nodename)
    else:
        migration = self._create_migration(context, instance, new_instance_type, nodename, move_type)
    if self.disabled(nodename):
        return claims.NopClaim(migration=migration)
    overhead = self.driver.estimate_instance_overhead(new_instance_type)
    LOG.debug('Memory    overhead    for    %(flavor)d    MB    instance;    %(overhead)d    MB', {'flavor': new_instance_type.memory_mb, 'overhead': overhead['memory_mb']})
    LOG.debug('Disk    overhead    for    %(flavor)d    GB    instance;    %(overhead)d    GB', {'flavor': instance.flavor.root_gb, 'overhead': overhead.get('disk_gb', 0)})
    LOG.debug('CPU    overhead    for    %(flavor)d    vCPUs    instance;    %(overhead)d    vCPU(s)', {'flavor': instance.flavor.vcpus, 'overhead': overhead.get('vcpus', 0)})
    cn = self.compute_nodes[nodename]
    new_pci_requests = pci_request.get_pci_requests_from_flavor(new_instance_type)
    new_pci_requests.instance_uuid = instance.uuid
    if instance.pci_requests:
        for request in instance.pci_requests.requests:
            if (request.alias_name is None):
                new_pci_requests.requests.append(request)
    claim = claims.MoveClaim(context, instance, nodename, new_instance_type, image_meta, self, cn, new_pci_requests, overhead=overhead, limits=limits)
    claim.migration = migration
    claimed_pci_devices_objs = []
    if self.pci_tracker:
        claimed_pci_devices_objs = self.pci_tracker.claim_instance(context, new_pci_requests, claim.claimed_numa_topology)
    claimed_pci_devices = objects.PciDeviceList(objects=claimed_pci_devices_objs)
    mig_context = objects.MigrationContext(context=context, instance_uuid=instance.uuid, migration_id=migration.id, old_numa_topology=instance.numa_topology, new_numa_topology=claim.claimed_numa_topology, old_pci_devices=instance.pci_devices, new_pci_devices=claimed_pci_devices, old_pci_requests=instance.pci_requests, new_pci_requests=new_pci_requests)
    instance.migration_context = mig_context
    instance.save()
    self._update_usage_from_migration(context, instance, migration, nodename)
    elevated = context.elevated()
    self._update(elevated, cn)
    return claim
