diff --git a/NEWS b/NEWS index 0da4fde9348790ff79b6cac501aca79917dd6888..4eb88c46a2524b7408f8335cfcaa0b8f59ce9d33 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,14 @@ Version 2.4.0 rc1 ``gnt-instance list``. +Version 2.3.1 +------------- + +*(Released Mon, 20 Dec 2010)* + +Released version 2.3.1~rc1 without any changes. + + Version 2.3.1 rc1 ----------------- diff --git a/configure.ac b/configure.ac index e1fb4979821bf9889059dd9b29dc23f2ddb2dc45..33d55f71b86e1b44d32ddb6fb8ff69d7719d537d 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ m4_define([gnt_version_major], [2]) m4_define([gnt_version_minor], [3]) m4_define([gnt_version_revision], [1]) -m4_define([gnt_version_suffix], [~rc1]) +m4_define([gnt_version_suffix], []) m4_define([gnt_version_full], m4_format([%d.%d.%d%s], gnt_version_major, gnt_version_minor, diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 4845389be3401ae48ad5d795edfcc438bd7dc73b..90b14619ceafdebbc70b400876ca917083f914e0 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -2037,6 +2037,10 @@ class LUVerifyCluster(LogicalUnit): @param node_image: Node objects @type instanceinfo: dict of (name, L{objects.Instance}) @param instanceinfo: Instance objects + @rtype: {instance: {node: [(succes, payload)]}} + @return: a dictionary of per-instance dictionaries with nodes as + keys and disk information as values; the disk information is a + list of tuples (success, payload) """ _ErrorIf = self._ErrorIf # pylint: disable-msg=C0103 @@ -2081,20 +2085,27 @@ class LUVerifyCluster(LogicalUnit): instdisk = {} for (nname, nres) in result.items(): - if nres.offline: - # Ignore offline node - continue - disks = node_disks[nname] - msg = nres.fail_msg - _ErrorIf(msg, self.ENODERPC, nname, - "while getting disk information: %s", nres.fail_msg) - if msg: + if nres.offline: # No data from this node - data = len(disks) * [None] + data = len(disks) * [(False, "node offline")] else: - data = nres.payload + msg = nres.fail_msg + _ErrorIf(msg, self.ENODERPC, nname, + "while getting disk information: %s", msg) + if msg: + # No data from this node + data = len(disks) * [(False, msg)] + else: + data = [] + for idx, i in enumerate(nres.payload): + if isinstance(i, (tuple, list)) and len(i) == 2: + data.append(i) + else: + logging.warning("Invalid result from node %s, entry %d: %s", + nname, idx, i) + data.append((False, "Invalid result from the remote node")) for ((inst, _), status) in zip(disks, data): instdisk.setdefault(inst, {}).setdefault(nname, []).append(status) @@ -2105,9 +2116,12 @@ class LUVerifyCluster(LogicalUnit): instdisk[inst] = {} assert compat.all(len(statuses) == len(instanceinfo[inst].disks) and - len(nnames) <= len(instanceinfo[inst].all_nodes) + len(nnames) <= len(instanceinfo[inst].all_nodes) and + compat.all(isinstance(s, (tuple, list)) and + len(s) == 2 for s in statuses) for inst, nnames in instdisk.items() for nname, statuses in nnames.items()) + assert set(instdisk) == set(instanceinfo), "instdisk consistency failure" return instdisk