@@ -3028,8 +3028,10 @@ public void createVifs(final VirtualMachineTO vmSpec, final LibvirtVMDef vm) thr
30283028 final NicTO [] nics = vmSpec .getNics ();
30293029 final Map <String , String > params = vmSpec .getDetails ();
30303030 String nicAdapter = "" ;
3031- if (params != null && params .get ("nicAdapter" ) != null && !params .get ("nicAdapter" ).isEmpty ()) {
3032- nicAdapter = params .get ("nicAdapter" );
3031+ if (params != null && params .get (VmDetailConstants .NIC_ADAPTER ) != null && !params .get (VmDetailConstants .NIC_ADAPTER ).isEmpty ()) {
3032+ nicAdapter = params .get (VmDetailConstants .NIC_ADAPTER );
3033+ } else if (MapUtils .isNotEmpty (params ) && params .containsKey (GuestDef .BootType .UEFI .toString ())) {
3034+ nicAdapter = "e1000" ;
30333035 }
30343036 Map <String , String > extraConfig = vmSpec .getExtraConfig ();
30353037 for (int i = 0 ; i < nics .length ; i ++) {
@@ -4383,22 +4385,42 @@ public DiskDef.DiskBus getDataDiskModelFromVMDetail(final VirtualMachineTO vmTO)
43834385 private DiskDef .DiskBus getGuestDiskModel (final String platformEmulator , boolean isUefiEnabled ) {
43844386 if (platformEmulator == null ) {
43854387 return DiskDef .DiskBus .IDE ;
4386- } else if ( platformEmulator . startsWith ( "Other PV Virtio-SCSI" )) {
4387- return DiskDef . DiskBus . SCSI ;
4388- } else if ( platformEmulator .contains ("Ubuntu" ) ||
4388+ }
4389+
4390+ final boolean isLinuxLike = platformEmulator .contains ("Ubuntu" ) ||
43894391 StringUtils .startsWithAny (platformEmulator ,
4390- "Fedora" , "CentOS" , "Red Hat Enterprise Linux" , "Debian GNU/Linux" , "FreeBSD" , "Oracle" ,
4391- "Rocky Linux" , "AlmaLinux" , "Other PV" )) {
4392- return DiskDef .DiskBus .VIRTIO ;
4393- } else if (isUefiEnabled && StringUtils .startsWithAny (platformEmulator , "Windows" , "Other" )) {
4394- return DiskDef .DiskBus .SATA ;
4395- } else if (guestCpuArch != null && guestCpuArch .equals ("aarch64" )) {
4392+ "Fedora" , "CentOS" , "Red Hat Enterprise Linux" ,
4393+ "Debian GNU/Linux" , "FreeBSD" , "Oracle" ,
4394+ "Rocky Linux" , "AlmaLinux" , "Other PV" );
4395+
4396+ // Explicit Virtio-SCSI preference
4397+ if (platformEmulator .startsWith ("Other PV Virtio-SCSI" )) {
4398+ return DiskDef .DiskBus .SCSI ;
4399+ }
4400+
4401+ // Architecture-specific handling
4402+ if (guestCpuArch != null && guestCpuArch .equals ("aarch64" )) {
43964403 return DiskDef .DiskBus .SCSI ;
4397- } else {
4398- return DiskDef .DiskBus .IDE ;
43994404 }
44004405
4406+ // Use SCSI for Linux-based UEFI guests
4407+ if (isUefiEnabled && isLinuxLike ) {
4408+ return DiskDef .DiskBus .SCSI ;
4409+ }
4410+
4411+ // Windows/Other and UEFI behavior
4412+ if (isUefiEnabled && StringUtils .startsWithAny (platformEmulator , "Windows" , "Other" )) {
4413+ return DiskDef .DiskBus .SATA ;
4414+ }
4415+
4416+ // non-UEFI Linux guests
4417+ if (isLinuxLike ) {
4418+ return DiskDef .DiskBus .VIRTIO ;
4419+ }
4420+
4421+ return DiskDef .DiskBus .IDE ;
44014422 }
4423+
44024424 private void cleanupVMNetworks (final Connect conn , final List <InterfaceDef > nics ) {
44034425 if (nics != null ) {
44044426 for (final InterfaceDef nic : nics ) {
0 commit comments