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.
signature.asc
Description: Digital signature
