Re: Issue 1180 in ganeti: Ceph/RBD support is broken with Ceph 'Jewel' due to incorrect showmapped command

2017-01-30 Thread ganeti


Comment #7 on issue 1180 by sup...@gmail.com: Ceph/RBD support is broken  
with Ceph 'Jewel' due to incorrect showmapped command

https://code.google.com/p/ganeti/issues/detail?id=1180

Yes, I recently upgraded some servers and now all of the instances on CEPH  
are broken.  I'm trying to complete the patch.


--
You received this message because this project is configured to send all  
issue notifications to this address.

You may adjust your notification preferences at:
https://code.google.com/hosting/settings


[PATCH stable-2.15] Fix tuple-unpacking from QueryInstances result

2017-01-30 Thread Yiannis Tsiouris
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 
---
 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