[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH 10/10] qemu-iotests/118: Test media
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH 10/10] qemu-iotests/118: Test media change with qdev name |
Date: |
Thu, 15 Sep 2016 11:23:35 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 09/15/2016 11:16 AM, Sascha Silbe wrote:
>>> + if self.device_name is not None:
>>> + result = self.vm.qmp('blockdev-change-medium',
>>> + id=self.device_name, filename=new_img,
>>> + format=iotests.imgfmt)
>>> + else:
>>> + result = self.vm.qmp('blockdev-change-medium',
>>> + device='drive0', filename=new_img,
>>> + format=iotests.imgfmt)
>>
>> I'm not enough of a python guru to know if there is any way to compress
>> this to a shorter format (I do know, however, that the lack of an
>> obvious ?: operator in python can indeed result in verbose if/else
>> clauses compared to other languages).
>
> Actually there is a direct equivalent of "?:" (which unfortunately isn't
> in C11) in Python: "or". So you can use:
>
> result = self.vm.qmp('blockdev-change-medium',
> id=self.device_name or 'drive0',
> filename=new_img,
Not what we want. We want to use a different parameter, based on the
overall condition (so it is NOT as simple as a conditional assignment to
the 'id' parameter, but an actual swap between whether we have the 'id'
or the 'device' parameter). It's not obvious whether:
result = foo(id=self.device_name,
device='drive0' if not self.device_name else None)
would have the same semantics as:
if self.device_name:
result = foo(id=self.device_name)
else
result = foo(device='drive0')
and even if it does have the same semantics, it's not obvious if there's
a shorter way to write it. So we end up with verbose duplication of all
the remaining parameters.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature