Hello Ganeti team,

While running gnt-cluster verify, Ganeti complains about orphan LVs
in VGs it should know nothing about, i.e. LVs in VGs other than the
VG specified in the Ganeti conf.

For example:
master# gnt-cluster verify
...
Thu Aug 21 17:25:19 2014 * Verifying orphan volumes
Thu Aug 21 17:25:19 2014   - ERROR: node1: volume nodevg/node1-root is unknown

The problem is that Ganeti complains about node1-root which is an LV in the
unrelated VG "nodevg", and seems to exist both in stable-2.10 and in master.

When running "gnt-cluster verify", the master passes the configured VG to
each node. From lib/cmdlib/cluster.py:

class LUClusterVerifyGroup(LogicalUnit, _VerifyErrors):
  """Verifies the status of a node group.
...
    if vg_name is not None:
      node_verify_param[constants.NV_VGLIST] = None
      node_verify_param[constants.NV_LVLIST] = vg_name
      node_verify_param[constants.NV_PVLIST] = [vg_name]

But the node ignores this information and returns LVs from all VGs on it.
From lib/backend.py:
def VerifyNode(what, cluster_name, all_hvparams):
...
  if constants.NV_LVLIST in what and vm_capable:
    try:
      val = GetVolumeList(utils.ListVolumeGroups().keys())
    except RPCFail, err:
      val = str(err)
    result[constants.NV_LVLIST] = val


This one-line patch against stable-2.10 fixes the problem:
$ git diff
diff --git a/lib/backend.py b/lib/backend.py
index e638e1c..3c7469c 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1055,7 +1055,7 @@ def VerifyNode(what, cluster_name, all_hvparams):

   if constants.NV_LVLIST in what and vm_capable:
     try:
-      val = GetVolumeList(utils.ListVolumeGroups().keys())
+      val = GetVolumeList([what[constants.NV_LVLIST]])
     except RPCFail, err:
       val = str(err)
     result[constants.NV_LVLIST] = val


Looking forward to your comments,
Vangelis.

Attachment: signature.asc
Description: Digital signature

Reply via email to