From: Adeodato Simo <[email protected]>

This commit fixes a few initial simple cases in which it was assumed that
we're always working over the whole cluster. With this change, we
differentiate between "nodes/instances to verify" and "checks that need
cluster-wide information".

In particular:

  - retrieve hypervisor parameters always from all instances
  - always specify full node list in NV_NODELIST
  - retrieve OOB path from all nodes
  - verify DRBD devices against the full set of instances (this ensures
    minors get properly verified even if an instance is split between groups)
  - look up node groups against the set of all nodes (to avoid tracebacks
    in case instances are split between groups)
  - determine whether running instances are unknown by checking against the
    full list of instances

Behavior in all cases stays the same if still running over the whole
cluster.

Signed-off-by: Adeodato Simo <[email protected]>
---
 lib/cmdlib.py |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index dd44f87..31c67f9 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2300,7 +2300,7 @@ class LUClusterVerify(LogicalUnit):
         full_params = cluster.GetHVDefaults(hv_name, os_name=os_name)
         hvp_data.append(("os %s" % os_name, hv_name, full_params))
     # TODO: collapse identical parameter values in a single one
-    for instance in self.my_inst_info.values():
+    for instance in self.all_inst_info.values():
       if not instance.hvparams:
         continue
       hvp_data.append(("instance %s" % instance.name, instance.hypervisor,
@@ -2314,7 +2314,7 @@ class LUClusterVerify(LogicalUnit):
         utils.UniqueSequence(filename
                              for files in filemap
                              for filename in files),
-      constants.NV_NODELIST: [node.name for node in node_data_list
+      constants.NV_NODELIST: [node.name for node in self.all_node_info.values()
                               if not node.offline],
       constants.NV_HYPERVISOR: hypervisors,
       constants.NV_HVPARAMS: hvp_data,
@@ -2363,7 +2363,7 @@ class LUClusterVerify(LogicalUnit):
 
     # Gather OOB paths
     oob_paths = []
-    for node in node_data_list:
+    for node in self.all_node_info.values():
       path = _SupportsOob(self.cfg, node)
       if path and path not in oob_paths:
         oob_paths.append(path)
@@ -2458,7 +2458,7 @@ class LUClusterVerify(LogicalUnit):
 
       if nimg.vm_capable:
         self._VerifyNodeLVM(node_i, nresult, vg_name)
-        self._VerifyNodeDrbd(node_i, nresult, self.my_inst_info, drbd_helper,
+        self._VerifyNodeDrbd(node_i, nresult, self.all_inst_info, drbd_helper,
                              all_drbd_map)
 
         self._UpdateNodeVolumes(node_i, nresult, nimg, vg_name)
@@ -2510,7 +2510,7 @@ class LUClusterVerify(LogicalUnit):
         instance_groups = {}
 
         for node in instance_nodes:
-          instance_groups.setdefault(self.my_node_info[node].group,
+          instance_groups.setdefault(self.all_node_info[node].group,
                                      []).append(node)
 
         pretty_list = [
@@ -2552,7 +2552,7 @@ class LUClusterVerify(LogicalUnit):
     self._VerifyOrphanVolumes(node_vol_should, node_image, reserved)
 
     feedback_fn("* Verifying orphan instances")
-    self._VerifyOrphanInstances(self.my_inst_names, node_image)
+    self._VerifyOrphanInstances(set(self.all_inst_info.keys()), node_image)
 
     if constants.VERIFY_NPLUSONE_MEM not in self.op.skip_checks:
       feedback_fn("* Verifying N+1 Memory redundancy")
-- 
1.7.2.5

Reply via email to