[virt-tools-list] [virt-manager PATCH] cloner: preserve the disk type in the cloned domain

Cole Robinson crobinso at redhat.com
Fri Mar 3 17:36:59 UTC 2017


On 03/03/2017 12:25 PM, Pavel Hrdina wrote:
> On Fri, Mar 03, 2017 at 12:02:37PM -0500, Cole Robinson wrote:
>> On 03/03/2017 02:19 AM, Pavel Hrdina wrote:
>>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1420187
>>>
>>> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
>>> ---
>>>  virtinst/cloner.py | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/virtinst/cloner.py b/virtinst/cloner.py
>>> index 5255acfe..ab1f036e 100644
>>> --- a/virtinst/cloner.py
>>> +++ b/virtinst/cloner.py
>>> @@ -409,7 +409,7 @@ class Cloner(object):
>>>  
>>>              # Change the XML
>>>              xmldisk.path = None
>>> -            xmldisk.type = clone_disk.type
>>> +            xmldisk.type = orig_disk.type
>>>              xmldisk.driver_name = orig_disk.driver_name
>>>              xmldisk.driver_type = orig_disk.driver_type
>>>              xmldisk.path = clone_disk.path
>>>
>>
>> This should have a test case. But I don't know if this is right... what if you
>> are cloning from a block device to a file? The type should change in that case
>> and not match the original type. Maybe the root issue of that bug is that
>> VirtualDisk isn't correctly detecting the new path as a block device?
> 
> Right, I thought that there is something that this patch would break.  Well
> I was trying to figure this out and the issue is that CloneStorageCreator
> that is used if we are cloning locally without libvirt change the type from
> "block" to "file" because in this case the the StorageCreator._vol_install
> is not set and StorageCreator.get_dev_type() is used as "default_cb"
> for VirtualDisk.type which is used on that line I was trying to change.
> 
> There might be some different hacky way how to fix it, I'll try to find it.
> 
> However I don't like that virt-manager/virt-clone supports cloning a disks
> locally.  IMHO everything should be done using Libvirt APIs in order to have
> the same functionality on local and remote connection and if there is no API
> to cover some specific task that is done locally we should try to implement
> a new API in Libvirt to do that task for us.
> 

Yeah the local thing is annoying, we basically have to keep that behavior
since it exists from before storage API days unfortunately, I too would like
to drop it.

- Cole




More information about the virt-tools-list mailing list