Merge "Only log not correcting allocation once per period" into stable/pike
This commit is contained in:
commit
00cb465395
|
@ -1039,38 +1039,9 @@ class ResourceTracker(object):
|
|||
instance,
|
||||
sign=sign)
|
||||
if require_allocation_refresh:
|
||||
LOG.debug("Auto-correcting allocations to handle Ocata "
|
||||
"assumptions.")
|
||||
LOG.debug("Auto-correcting allocations.")
|
||||
self.reportclient.update_instance_allocation(cn, instance,
|
||||
sign)
|
||||
else:
|
||||
# NOTE(jaypipes): We're on a Pike compute host or later in
|
||||
# a deployment with all compute hosts upgraded to Pike or
|
||||
# later
|
||||
#
|
||||
# If that is the case, then we know that the scheduler will
|
||||
# have properly created an allocation and that the compute
|
||||
# hosts have not attempted to overwrite allocations
|
||||
# **during the periodic update_available_resource() call**.
|
||||
# However, Pike compute hosts may still rework an
|
||||
# allocation for an instance in a move operation during
|
||||
# confirm_resize() on the source host which will remove the
|
||||
# source resource provider from any allocation for an
|
||||
# instance.
|
||||
#
|
||||
# In Queens and beyond, the scheduler will understand when
|
||||
# a move operation has been requested and instead of
|
||||
# creating a doubled-up allocation that contains both the
|
||||
# source and destination host, the scheduler will take the
|
||||
# original allocation (against the source host) and change
|
||||
# the consumer ID of that allocation to be the migration
|
||||
# UUID and not the instance UUID. The scheduler will
|
||||
# allocate the resources for the destination host to the
|
||||
# instance UUID.
|
||||
LOG.debug("We're on a Pike compute host in a deployment "
|
||||
"with all Pike compute hosts. Skipping "
|
||||
"auto-correction of allocations.")
|
||||
|
||||
# new instance, update compute node resource usage:
|
||||
self._update_usage(self._get_usage_dict(instance), nodename,
|
||||
sign=sign)
|
||||
|
@ -1130,6 +1101,22 @@ class ResourceTracker(object):
|
|||
# or a Queens compute host, we do NOT want the Pike compute host to
|
||||
# be "healing" allocation information. Instead, we rely on the Pike
|
||||
# scheduler to properly create allocations during scheduling.
|
||||
#
|
||||
# Pike compute hosts may still rework an
|
||||
# allocation for an instance in a move operation during
|
||||
# confirm_resize() on the source host which will remove the
|
||||
# source resource provider from any allocation for an
|
||||
# instance.
|
||||
#
|
||||
# In Queens and beyond, the scheduler will understand when
|
||||
# a move operation has been requested and instead of
|
||||
# creating a doubled-up allocation that contains both the
|
||||
# source and destination host, the scheduler will take the
|
||||
# original allocation (against the source host) and change
|
||||
# the consumer ID of that allocation to be the migration
|
||||
# UUID and not the instance UUID. The scheduler will
|
||||
# allocate the resources for the destination host to the
|
||||
# instance UUID.
|
||||
compute_version = objects.Service.get_minimum_version(
|
||||
context, 'nova-compute')
|
||||
has_ocata_computes = compute_version < 22
|
||||
|
@ -1140,8 +1127,29 @@ class ResourceTracker(object):
|
|||
has_ocata_computes or
|
||||
self.driver.requires_allocation_refresh)
|
||||
|
||||
msg_allocation_refresh = (
|
||||
"Compute driver doesn't require allocation refresh and we're on a "
|
||||
"compute host in a deployment that only has compute hosts with "
|
||||
"Nova versions >=16 (Pike). Skipping auto-correction of "
|
||||
"allocations. ")
|
||||
if require_allocation_refresh:
|
||||
if self.driver.requires_allocation_refresh:
|
||||
msg_allocation_refresh = (
|
||||
"Compute driver requires allocation refresh. ")
|
||||
elif has_ocata_computes:
|
||||
msg_allocation_refresh = (
|
||||
"We're on a compute host from Nova version >=16 (Pike or "
|
||||
"later) in a deployment with at least one compute host "
|
||||
"version <16 (Ocata or earlier). ")
|
||||
msg_allocation_refresh += (
|
||||
"Will auto-correct allocations to handle "
|
||||
"Ocata-style assumptions.")
|
||||
|
||||
for instance in instances:
|
||||
if instance.vm_state not in vm_states.ALLOW_RESOURCE_REMOVAL:
|
||||
if msg_allocation_refresh:
|
||||
LOG.debug(msg_allocation_refresh)
|
||||
msg_allocation_refresh = False
|
||||
self._update_usage_from_instance(context, instance, nodename,
|
||||
require_allocation_refresh=require_allocation_refresh)
|
||||
|
||||
|
|
Loading…
Reference in New Issue