[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