Prior to this commit, some code segments tried to unpack the return
value from 'QueryInstances' assuming that it's a single item list.
However, in some cases, e.g. 'gnt-instance console', the list might
have more results due to globbing. The patch handles this by always
selecting the first item of the return list.

Signed-off-by: Yiannis Tsiouris <[email protected]>
---
 lib/client/gnt_instance.py | 2 +-
 lib/client/gnt_network.py  | 6 ++----
 lib/rapi/rlib2.py          | 5 +++--
 lib/tools/burnin.py        | 2 +-
 4 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/lib/client/gnt_instance.py b/lib/client/gnt_instance.py
index d51c775bd..a1184ecb8 100644
--- a/lib/client/gnt_instance.py
+++ b/lib/client/gnt_instance.py
@@ -877,7 +877,7 @@ def ConnectToInstanceConsole(opts, args):
 
   del cl
 
-  ((console_data, oper_state), ) = idata
+  (console_data, oper_state) = idata[0]
   if not console_data:
     if oper_state:
       # Instance is running
diff --git a/lib/client/gnt_network.py b/lib/client/gnt_network.py
index 6255b039f..7adcd5fbd 100644
--- a/lib/client/gnt_network.py
+++ b/lib/client/gnt_network.py
@@ -265,10 +265,8 @@ def ShowNetworkConfig(_, args):
     if instances:
       ToStdout("  used by %d instances:", len(instances))
       for name in instances:
-        ((ips, networks), ) = cl.QueryInstances([name],
-                                                ["nic.ips", "nic.networks"],
-                                                use_locking=False)
-
+        (ips, networks) = cl.QueryInstances([name], ["nic.ips", 
"nic.networks"],
+                                            use_locking=False)[0]
         l = lambda value: ", ".join(str(idx) + ":" + str(ip)
                                     for idx, (ip, net) in enumerate(value)
                                       if net == uuid)
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 14c12acda..95e374b20 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -1575,8 +1575,9 @@ class R_2_instances_name_console(baserlib.ResourceBase):
     instance_name = self.items[0]
     client = self.GetClient()
 
-    ((console, oper_state), ) = \
-        client.QueryInstances([instance_name], ["console", "oper_state"], 
False)
+    (console, oper_state) = \
+      client.QueryInstances([instance_name], ["console", "oper_state"],
+                            False)[0]
 
     if not oper_state:
       raise http.HttpServiceUnavailable("Instance console unavailable")
diff --git a/lib/tools/burnin.py b/lib/tools/burnin.py
index a32e4dbee..a5809a6e0 100755
--- a/lib/tools/burnin.py
+++ b/lib/tools/burnin.py
@@ -803,7 +803,7 @@ class Burner(JobHandler):
     for pnode, snode, enode, instance in mytor:
       Log("instance %s", instance, indent=1)
       # read the full name of the instance
-      ((full_name, ), ) = qcl.QueryInstances([instance], ["name"], False)
+      (full_name, ) = qcl.QueryInstances([instance], ["name"], False)[0]
 
       if self.opts.iallocator:
         pnode = snode = None
-- 
2.11.0

Reply via email to