diff options
author | Manuel Bentele | 2021-11-30 09:08:03 +0100 |
---|---|---|
committer | Manuel Bentele | 2021-11-30 09:08:03 +0100 |
commit | 8f1c0f8dacf3a5216276f0981d3f5753c75ed750 (patch) | |
tree | 7bc00214f63d0cac2638a55837a8029bf7692027 /src/main/java/org/openslx/virtualization/configuration | |
parent | Add CPU topology functionality for Libvirt domain XML configs (diff) | |
download | master-sync-shared-8f1c0f8dacf3a5216276f0981d3f5753c75ed750.tar.gz master-sync-shared-8f1c0f8dacf3a5216276f0981d3f5753c75ed750.tar.xz master-sync-shared-8f1c0f8dacf3a5216276f0981d3f5753c75ed750.zip |
Add firmware loader lookup algorithm for Libvirt/QEMU machines
Diffstat (limited to 'src/main/java/org/openslx/virtualization/configuration')
-rw-r--r-- | src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java index 706a083..ced9160 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java @@ -7,6 +7,8 @@ import java.util.ArrayList; import java.util.List; import org.openslx.bwlp.thrift.iface.OperatingSystem; +import org.openslx.firmware.FirmwareException; +import org.openslx.firmware.QemuFirmwareUtil; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.DomainUtils; import org.openslx.libvirt.domain.device.ControllerUsb; @@ -208,6 +210,32 @@ public class VirtualizationConfigurationQemu extends VirtualizationConfiguration { } + public void transformOsLoader() throws VirtualizationConfigurationException + { + final String sourceOsLoader = this.vmConfig.getOsLoader(); + final String sourceOsArch = this.vmConfig.getOsArch(); + final String sourceOsMachine = this.vmConfig.getOsMachine(); + + // transform OS loader for local editing + // check if OS loader is specified + if ( sourceOsLoader != null && !sourceOsLoader.isEmpty() ) { + // OS loader is specified so transform path to specified firmware path + // First, lookup QEMU firmware loader for target + String targetOsLoader = null; + try { + targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoaderDefaultFwSpecDir( sourceOsLoader, sourceOsArch, + sourceOsMachine ); + } catch ( FirmwareException e ) { + throw new VirtualizationConfigurationException( e.getLocalizedMessage() ); + } + + // Second, set target QEMU firmware loader if specified + if ( targetOsLoader != null && !targetOsLoader.isEmpty() ) { + this.vmConfig.setOsLoader( targetOsLoader ); + } + } + } + @Override public boolean addEmptyHddTemplate() { |