diff options
author | ralph isenmann | 2021-11-10 15:06:33 +0100 |
---|---|---|
committer | ralph isenmann | 2021-11-10 15:06:33 +0100 |
commit | 4bff50ef7597453b94420b912b2859d06c00c060 (patch) | |
tree | 752c88e61eb3da3002826678d5c3301e983f357e /src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java | |
parent | [container] refactoring (diff) | |
parent | Enumerate target names of disk devices correctly (diff) | |
download | master-sync-shared-4bff50ef7597453b94420b912b2859d06c00c060.tar.gz master-sync-shared-4bff50ef7597453b94420b912b2859d06c00c060.tar.xz master-sync-shared-4bff50ef7597453b94420b912b2859d06c00c060.zip |
Merge branch 'master' of git.openslx.org:bwlp/master-sync-shared
Diffstat (limited to 'src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java')
-rw-r--r-- | src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java index 06091c0..1befdc4 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuUtils.java @@ -1,9 +1,11 @@ package org.openslx.virtualization.configuration; import java.util.ArrayList; +import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Disk; import org.openslx.libvirt.domain.device.Disk.BusType; import org.openslx.virtualization.Version; @@ -109,7 +111,7 @@ public class VirtualizationConfigurationQemuUtils * @param deviceNumber number of the device. * @return alphabetical device name. */ - public static String createAlphabeticalDeviceName( String devicePrefix, int deviceNumber ) + private static String createAlphabeticalDeviceName( String devicePrefix, int deviceNumber ) { if ( deviceNumber < 0 || deviceNumber >= ( 'z' - 'a' ) ) { String errorMsg = new String( "Device number is out of range to be able to create a valid device name." ); @@ -120,6 +122,42 @@ public class VirtualizationConfigurationQemuUtils } /** + * Creates an alphabetical device name for a disk device with a bus <i>type</i> that is unique in + * a Libvirt domain XML configuration. + * + * @param config Libvirt domain XML configuration. + * @param type device type for device name. + * @return alphabetical device name. + */ + public static String createDeviceName( final Domain config, final BusType type ) throws IllegalArgumentException + { + final String devicePrefix; + final int deviceNumber; + + switch ( type ) { + case FDC: + devicePrefix = "fd"; + break; + case IDE: + devicePrefix = "hd"; + break; + case SATA: + devicePrefix = "sd"; + break; + case VIRTIO: + devicePrefix = "vd"; + break; + default: + return null; + } + + final Predicate<Disk> bySpecifiedBusType = d -> d.getBusType() == type; + deviceNumber = Long.valueOf( config.getDiskDevices().stream().filter( bySpecifiedBusType ).count() ).intValue(); + + return VirtualizationConfigurationQemuUtils.createAlphabeticalDeviceName( devicePrefix, deviceNumber ); + } + + /** * Data container to store a Libvirt/QEMU machine name with version information. * * @author Manuel Bentele |