Merge "Update Nova's available resources at termination"
This commit is contained in:
commit
74aa47a872
@ -23,10 +23,14 @@ work. The goal here is to generalise the areas where n-c talking to a clustered
|
|||||||
hypervisor has issues, and long term fold them into the main ComputeManager.
|
hypervisor has issues, and long term fold them into the main ComputeManager.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from nova.openstack.common import lockutils
|
||||||
from nova.compute import manager
|
from nova.compute import manager
|
||||||
import nova.context
|
import nova.context
|
||||||
|
|
||||||
|
|
||||||
|
CCM_SEMAPHORE='clustered_compute_manager'
|
||||||
|
|
||||||
|
|
||||||
class ClusteredComputeManager(manager.ComputeManager):
|
class ClusteredComputeManager(manager.ComputeManager):
|
||||||
|
|
||||||
def init_host(self):
|
def init_host(self):
|
||||||
@ -73,3 +77,23 @@ class ClusteredComputeManager(manager.ComputeManager):
|
|||||||
self.update_available_resource(nova.context.get_admin_context())
|
self.update_available_resource(nova.context.get_admin_context())
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@lockutils.synchronized(CCM_SEMAPHORE, 'ironic-')
|
||||||
|
def _update_resources(self):
|
||||||
|
"""Updates resources while protecting against a race on
|
||||||
|
self._resource_tracker_dict.
|
||||||
|
"""
|
||||||
|
self.update_available_resource(nova.context.get_admin_context())
|
||||||
|
|
||||||
|
def terminate_instance(self, context, instance, bdms, reservations):
|
||||||
|
"""Terminate an instance on a node.
|
||||||
|
|
||||||
|
We override this method and force a post-termination update to Nova's
|
||||||
|
resources. This avoids having to wait for a Nova periodic task tick
|
||||||
|
before nodes can be reused.
|
||||||
|
"""
|
||||||
|
super(ClusteredComputeManager, self).terminate_instance(context,
|
||||||
|
instance,
|
||||||
|
bdms,
|
||||||
|
reservations)
|
||||||
|
self._update_resources()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user