@@ -505,22 +505,39 @@ func mapNetworkCards(networkCards []networkInfo, mapping []migration.NetworkMapp
505
505
}
506
506
507
507
// detectBusType tries to identify the disk bus type from VMware to attempt and
508
- // set correct bus types in kubevirt .
508
+ // set correct bus types in KubeVirt .
509
509
// Examples:
510
- // .-----------------------------------------------.
511
- // | Bus | Device ID |
512
- // |------|----------------------------------------|
513
- // | SCSI | /vm-13010/ParaVirtualSCSIController0:0 |
514
- // | SATA | /vm-13767/VirtualAHCIController0:1 |
515
- // | IDE | /vm-5678/VirtualIDEController1:0 |
516
- // | NVMe | /vm-2468/VirtualNVMEController0:0 |
517
- // | USB | /vm-54321/VirtualUSBController0:0 |
518
- // '-----------------------------------------------'
510
+ // .--------------------------------------------------.
511
+ // | Bus | Device ID |
512
+ // |------|-------------------------------------------|
513
+ // | SCSI | /vm-13010/ParaVirtualSCSIController0:0 |
514
+ // | SCSI | /vm-13011/VirtualBusLogicController0:0 |
515
+ // | SCSI | /vm-13012/VirtualLsiLogicController0:0 |
516
+ // | SCSI | /vm-13013/VirtualLsiLogicSASController0:0 |
517
+ // | SATA | /vm-13767/VirtualAHCIController0:1 |
518
+ // | IDE | /vm-5678/VirtualIDEController1:0 |
519
+ // | NVMe | /vm-2468/VirtualNVMEController0:0 |
520
+ // | USB | /vm-54321/VirtualUSBController0:0 |
521
+ // '--------------------------------------------------'
522
+ // References:
523
+ // - https://github.com/vmware/pyvmomi/tree/master/pyVmomi/vim/vm/device
524
+ // - https://vdc-download.vmware.com/vmwb-repository/dcr-public/d1902b0e-d479-46bf-8ac9-cee0e31e8ec0/07ce8dbd-db48-4261-9b8f-c6d3ad8ba472/vim.vm.device.VirtualSCSIController.html
525
+ // - https://libvirt.org/formatdomain.html#controllers
526
+ // - https://kubevirt.io/api-reference/v1.1.0/definitions.html#_v1_disktarget
519
527
func detectBusType (deviceID string ) kubevirt.DiskBus {
520
528
deviceID = strings .ToLower (deviceID )
521
- // https://kubevirt.io/api-reference/v1.1.0/definitions.html#_v1_disktarget
522
529
switch {
523
- case strings .Contains (deviceID , "scsi" ):
530
+ case strings .Contains (deviceID , "paravirtualscsi" ):
531
+ // The pvscsi (Paravirtual SCSI) controller cannot be mapped to
532
+ // SCSI bus type because in KubeVirt it is not possible to specify
533
+ // the exact model (pvscsi, lsilogic, ...) of the disk via the
534
+ // VirtualMachine API. Attempting to map pvscsi to SCSI prevents
535
+ // the VM from booting.
536
+ // As a workaround, the SATA bus type is utilized in such case.
537
+ // Note, VirtIO would be better, but it is not said that the
538
+ // required drivers are installed in the VM.
539
+ return kubevirt .DiskBusSATA
540
+ case strings .Contains (deviceID , "scsi" ), strings .Contains (deviceID , "buslogic" ), strings .Contains (deviceID , "lsilogic" ):
524
541
return kubevirt .DiskBusSCSI
525
542
case strings .Contains (deviceID , "ahci" ), strings .Contains (deviceID , "sata" ), strings .Contains (deviceID , "ide" ):
526
543
return kubevirt .DiskBusSATA
0 commit comments