Add require_exclusive_lock decorators to conductor methods

Add require_exclusive_lock decorators to conductor methods which
need exclusive lock. This is also helpful for async methods to
log request-id.

Change-Id: Iddba39decb564e0ca2d138f8c0b789d95a34de74
This commit is contained in:
Lin Tan
2016-03-22 19:25:18 +08:00
committed by Tan Lin
parent 6f7b9c033b
commit abab114504

View File

@@ -612,6 +612,7 @@ class ConductorManager(base_manager.BaseConductorManager):
action='delete', node=task.node.uuid,
state=task.node.provision_state)
@task_manager.require_exclusive_lock
def _do_node_tear_down(self, task):
"""Internal RPC method to tear down an existing node deployment."""
node = task.node
@@ -865,6 +866,7 @@ class ConductorManager(base_manager.BaseConductorManager):
self._do_next_clean_step,
task, next_step_index)
@task_manager.require_exclusive_lock
def _do_node_clean(self, task, clean_steps=None):
"""Internal RPC method to perform cleaning of a node.
@@ -941,6 +943,7 @@ class ConductorManager(base_manager.BaseConductorManager):
step_index = 0 if steps else None
self._do_next_clean_step(task, step_index)
@task_manager.require_exclusive_lock
def _do_next_clean_step(self, task, step_index):
"""Do cleaning, starting from the specified clean step.
@@ -1028,6 +1031,7 @@ class ConductorManager(base_manager.BaseConductorManager):
# NOTE(rloo): No need to specify target prov. state; we're done
task.process_event(event)
@task_manager.require_exclusive_lock
def _do_node_verify(self, task):
"""Internal method to perform power credentials verification."""
node = task.node
@@ -1059,6 +1063,7 @@ class ConductorManager(base_manager.BaseConductorManager):
node.target_provision_state = None
node.save()
@task_manager.require_exclusive_lock
def _do_node_clean_abort(self, task, step_name=None):
"""Internal method to abort an ongoing operation.
@@ -1641,6 +1646,7 @@ class ConductorManager(base_manager.BaseConductorManager):
task.spawn_after(self._spawn_worker,
self._set_console_mode, task, enabled)
@task_manager.require_exclusive_lock
def _set_console_mode(self, task, enabled):
"""Internal method to set console mode on a node."""
node = task.node
@@ -2265,6 +2271,7 @@ def _store_configdrive(node, configdrive):
node.instance_info = i_info
@task_manager.require_exclusive_lock
def do_node_deploy(task, conductor_id, configdrive=None):
"""Prepare the environment and deploy a node."""
node = task.node
@@ -2474,6 +2481,7 @@ def do_sync_power_state(task, count):
return count
@task_manager.require_exclusive_lock
def _do_inspect_hardware(task):
"""Initiates inspection.