[virt-tools-list] [virt-manager PATCH] addhw: set virtio-scsi controller index via max index in scsi controller list
Cole Robinson
crobinso at redhat.com
Tue Jan 21 14:01:35 UTC 2014
On 01/21/2014 03:24 AM, Chen Hanxiao wrote:
> From: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
>
> We set virtio-scsi controller index according to
> the number of scsi controller in VM.
> This patch will set virtio-scsi controller index
> via max index in scsi controller list.
>
> How to reproduce:
> a)
> If we got an VM with two scsi controller:
> <controller type='scsi' index='0'>
> <controller type='scsi' index='2'>
>
> #reason for index='2':
> someone delete a scsi controller with index=1
> by virsh
>
> b)
> add a virtio-scsi disk by virt-manager
>
> c)
> error threw by virt-manager:
> libvirtError: XML error: Multiple 'scsi' controllers with index '2'
>
> Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
> ---
> virtManager/addhardware.py | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
> index d7ee161..a0facf2 100644
> --- a/virtManager/addhardware.py
> +++ b/virtManager/addhardware.py
> @@ -1546,13 +1546,19 @@ class vmmAddHardware(vmmGObjectUI):
> disk.vmm_controller = None
> if (controller_model == "virtio-scsi") and (bus == "scsi"):
> controllers = self.vm.get_controller_devices()
> + ctrls_scsi = [x for x in controllers if
> + (x.type == VirtualController.TYPE_SCSI)]
> + if len(ctrls_scsi) > 0:
> + index_new = max([x.index for x in ctrls_scsi]) + 1
> + else:
> + index_new = 0
> controller = VirtualController(conn)
> controller.type = "scsi"
> controller.model = controller_model
> disk.vmm_controller = controller
> for d in controllers:
> if controller.type == d.type:
> - controller.index += 1
> + controller.index = index_new
> if controller_model == d.model:
> disk.vmm_controller = None
> controller = d
>
ACK, pushed now.
- Cole
More information about the virt-tools-list
mailing list