Patch has been pushed to stable-2.15 @ 9a62b430e30e8a76df628c36fe8c1787535642c0
On 31 January 2017 at 10:59, Federico Pareschi <[email protected]> wrote: > Good catch, the patch looks good to me. I've stumbled upon problems > like this in the past with python, it can be really annoying. I'll be > pushing this to 2.15, thanks. > > On 30 January 2017 at 13:18, Yiannis Tsiouris <[email protected]> wrote: >> 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 >>
