Commit 43905206 authored by Guido Trotter's avatar Guido Trotter

Add _ExpandAndLockInstance auxiliary function.

LUs that take an instance name as input and need to expand its name and
lock it can use it to simplify their ExpandNames call. Possibly, and
_ExpandAndLockNode will come as well.

Reviewed-by: iustinp
parent 642339cf
......@@ -217,6 +217,28 @@ class LogicalUnit(object):
"""
return lu_result
def _ExpandAndLockInstance(self):
"""Helper function to expand and lock an instance.
Many LUs that work on an instance take its name in self.op.instance_name
and need to expand it and then declare the expanded name for locking. This
function does it, and then updates self.op.instance_name to the expanded
name. It also initializes needed_locks as a dict, if this hasn't been done
before.
"""
if self.needed_locks is None:
self.needed_locks = {}
else:
assert locking.LEVEL_INSTANCE not in self.needed_locks, \
"_ExpandAndLockInstance called with instance-level locks set"
expanded_name = self.cfg.ExpandInstanceName(self.op.instance_name)
if expanded_name is None:
raise errors.OpPrereqError("Instance '%s' not known" %
self.op.instance_name)
self.needed_locks[locking.LEVEL_INSTANCE] = expanded_name
self.op.instance_name = expanded_name
class NoHooksLU(LogicalUnit):
"""Simple LU which runs no hooks.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment