On Mon, Mar 23, 2015 at 06:28:38PM +0100, 'Helga Velroyen' via ganeti-devel 
wrote:
This patches fixes a problem which occurred when one tries
to lookup an instance in an empty nodegroup.

Signed-off-by: Helga Velroyen <[email protected]>
---
lib/cmdlib/cluster.py | 2 +-
lib/config.py         | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/cmdlib/cluster.py b/lib/cmdlib/cluster.py
index 30e35c4..6cb1401 100644
--- a/lib/cmdlib/cluster.py
+++ b/lib/cmdlib/cluster.py
@@ -2892,7 +2892,7 @@ class LUClusterVerifyGroup(LogicalUnit, _VerifyErrors):
    if test:
      nimg.hyp_fail = True
    else:
-      nimg.instances = [inst.uuid for (_, inst) in
+      nimg.instances = [uuid for (uuid, _) in
                        self.cfg.GetMultiInstanceInfoByName(idata)]

  def _UpdateNodeInfo(self, ninfo, nresult, nimg, vg_name):
diff --git a/lib/config.py b/lib/config.py
index b6f1373..f273e1e 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -1782,7 +1782,8 @@ class ConfigWriter(object):
    result = []
    for name in inst_names:
      instance = self._UnlockedGetInstanceInfoByName(name)
-      result.append((instance.uuid, instance))
+      if instance:
+        result.append((instance.uuid, instance))

This is definitely a good change that it prevents the function from crashing, when a non-existent instance name is given. But then it can happen that the resulting list is shorter than the list with names and the order won't match. So I'd suggest to further improving that, probably by appending None if an instance doesn't exist, or alternatively updating the documentation.

    return result

  @locking.ssynchronized(_config_lock, shared=1)
--
2.2.0.rc0.207.ga3a616c


Rest LGTM, thanks

Reply via email to