diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 272f07f21a16f32fcf9242e376894a34169f51f9..6bd14b8ece06ab95c9bfd433444ab26164f975c4 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -298,7 +298,11 @@ class LogicalUnit(object): wanted_nodes.append(instance.primary_node) if not primary_only: wanted_nodes.extend(instance.secondary_nodes) - self.needed_locks[locking.LEVEL_NODE] = wanted_nodes + + if self.recalculate_locks[locking.LEVEL_NODE] == constants.LOCKS_REPLACE: + self.needed_locks[locking.LEVEL_NODE] = wanted_nodes + elif self.recalculate_locks[locking.LEVEL_NODE] == constants.LOCKS_APPEND: + self.needed_locks[locking.LEVEL_NODE].extend(wanted_nodes) del self.recalculate_locks[locking.LEVEL_NODE] diff --git a/lib/constants.py b/lib/constants.py index c3863ea7041bfe55b8ebd28f838243327c59ec7f..ba0e1d76eed7c669b45138dc3d95b4ef6e93b0b8 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -190,6 +190,7 @@ REPLACE_DISK_ALL = "replace_all" # lock recalculate mode LOCKS_REPLACE = 'replace' +LOCKS_APPEND = 'append' # instance creation modes INSTANCE_CREATE = "create"