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
>>

Reply via email to