def _claim(self, limits=None, overhead=None, **kwargs): instance_type = self._fake_instance_type(**kwargs) if overhead is None: overhead = {'memory_mb': 0} return claims.ResizeClaim(self.instance, instance_type, self.tracker, self.resources, overhead=overhead, limits=limits)
def resize_claim(self, context, instance, instance_type, image_meta=None, limits=None): """Indicate that resources are needed for a resize operation to this compute host. :param context: security context :param instance: instance object to reserve resources for :param instance_type: new instance_type being resized to :param limits: Dict of oversubscription limits for memory, disk, and CPUs :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. """ image_meta = image_meta or {} if self.disabled: # compute_driver doesn't support resource tracking, just # generate the migration record and continue the resize: migration = self._create_migration(context, instance, instance_type) return claims.NopClaim(migration=migration) # get memory overhead required to build this instance: overhead = self.driver.estimate_instance_overhead(instance_type) LOG.debug( "Memory overhead for %(flavor)d MB instance; %(overhead)d " "MB", { 'flavor': instance_type['memory_mb'], 'overhead': overhead['memory_mb'] }) instance_ref = obj_base.obj_to_primitive(instance) claim = claims.ResizeClaim(context, instance_ref, instance_type, image_meta, self, self.compute_node, overhead=overhead, limits=limits) migration = self._create_migration(context, instance_ref, instance_type) claim.migration = migration # Mark the resources in-use for the resize landing on this # compute host: self._update_usage_from_migration(context, instance_ref, image_meta, self.compute_node, migration) elevated = context.elevated() self._update(elevated, self.compute_node) return claim
def _claim(self, limits=None, overhead=None, **kwargs): instance_type = self._fake_instance_type(**kwargs) numa_constraint = kwargs.pop('numa_topology', None) if overhead is None: overhead = {'memory_mb': 0} with mock.patch.object( hardware.VirtNUMAInstanceTopology, 'get_constraints', return_value=numa_constraint): return claims.ResizeClaim('context', self.instance, instance_type, {}, self.tracker, self.resources, overhead=overhead, limits=limits)
def resize_claim(self, context, instance_ref, instance_type, limits=None): """Indicate that resources are needed for a resize operation to this compute host. :param context: security context :param instance_ref: instance to reserve resources for :param instance_type: new instance_type being resized to :param limits: Dict of oversubscription limits for memory, disk, and CPUs. :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. """ if self.disabled: # compute_driver doesn't support resource tracking, just # generate the migration record and continue the resize: migration_ref = self._create_migration(context, instance_ref, instance_type) return claims.NopClaim(migration=migration_ref) claim = claims.ResizeClaim(instance_ref, instance_type, self) if claim.test(self.compute_node, limits): migration_ref = self._create_migration(context, instance_ref, instance_type) claim.migration = migration_ref # Mark the resources in-use for the resize landing on this # compute host: self._update_usage_from_migration(context, instance_ref, self.compute_node, migration_ref) elevated = context.elevated() self._update(elevated, self.compute_node) return claim else: raise exception.ComputeResourcesUnavailable()
def _claim(self, **kwargs): instance_type = self._fake_instance_type(**kwargs) return claims.ResizeClaim(self.instance, instance_type, self.tracker)