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 >
