diff options
author | Manuel Bentele | 2021-04-15 15:10:38 +0200 |
---|---|---|
committer | Manuel Bentele | 2021-04-15 15:10:38 +0200 |
commit | f4c21ccda4f786fe388ffed1e4bd9a18aabea4bd (patch) | |
tree | f612fcec79b5fa3319e73c312e28cb77aa558f77 | |
parent | [qemu] Add API to register the functional interface based config filter method (diff) | |
download | mltk-f4c21ccda4f786fe388ffed1e4bd9a18aabea4bd.tar.gz mltk-f4c21ccda4f786fe388ffed1e4bd9a18aabea4bd.tar.xz mltk-f4c21ccda4f786fe388ffed1e4bd9a18aabea4bd.zip |
[qemu] Move generic filtering/transformation to master-sync-shared
28 files changed, 222 insertions, 380 deletions
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java deleted file mode 100644 index 3fb594a2..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.openslx.runvirt.configuration; - -public abstract class Filter<T, R> implements FilterFunction<T, R> -{ - private final String name; - private boolean enabled; - - public Filter( String name ) - { - this.name = name; - this.setEnabled( true ); - } - - public String getName() - { - return this.name; - } - - public boolean isEnabled() - { - return this.enabled; - } - - public void setEnabled( boolean enabled ) - { - this.enabled = enabled; - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java deleted file mode 100644 index 8969d1a2..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.openslx.runvirt.configuration; - -public class FilterException extends Exception -{ - /** - * Version for serialization. - */ - private static final long serialVersionUID = 7293420658901349154L; - - public FilterException( String errorMsg ) - { - super( errorMsg ); - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java deleted file mode 100644 index 1d716201..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.openslx.runvirt.configuration; - -@FunctionalInterface -public interface FilterFunction<T, R> -{ - public void filter( T config, R args ) throws FilterException; - - public default void apply( T config, R args ) throws FilterException - { - this.filter( config, args ); - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java deleted file mode 100644 index e66c8f21..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.openslx.runvirt.configuration; - -public abstract class FilterGeneric<T, R> extends Filter<T, R> -{ - public FilterGeneric( String name ) - { - super( name ); - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java deleted file mode 100644 index d9509099..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.openslx.runvirt.configuration; - -import java.util.ArrayList; - -public final class FilterManager<T, R> -{ - private ArrayList<Filter<T, R>> filters; - private T config; - private R args; - - public FilterManager( T config, R args ) - { - this.filters = new ArrayList<Filter<T, R>>(); - this.config = config; - this.args = args; - } - - public void register( Filter<T, R> filter ) - { - this.register( filter, true ); - } - - public void register( Filter<T, R> filter, boolean enabled ) - { - filter.setEnabled( enabled ); - this.filters.add( filter ); - } - - public void register( String name, FilterFunction<T, R> filterFunction ) - { - this.register( name, filterFunction, true ); - } - - public void register( String name, FilterFunction<T, R> filterFunction, boolean enabled ) - { - this.register( new Filter<T, R>( name ) { - @Override - public void filter( T document, R args ) throws FilterException - { - filterFunction.apply( document, args ); - } - }, enabled ); - } - - public void filterAll() throws FilterException - { - for ( Filter<T, R> filter : this.filters ) { - try { - filter.apply( this.config, this.args ); - } catch ( FilterException e ) { - final String errorMsg = new String( - "Error in configuration filter '" + filter.getName() + "':" + e.getLocalizedMessage() ); - throw new FilterException( errorMsg ); - } - } - } - - private String showFilters() - { - String filterSummary = new String(); - final int maxFilterNumCharacters = ( this.filters.size() + 1 ) / 10; - - for ( int i = 0; i < this.filters.size(); i++ ) { - final Filter<T, R> filter = this.filters.get( i ); - final String paddedNumber = String.format( "%-" + maxFilterNumCharacters + "s", i + 1 ); - filterSummary += paddedNumber + ": " + filter.getName() + System.lineSeparator(); - } - - return filterSummary; - } - - @Override - public String toString() - { - return this.showFilters(); - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java deleted file mode 100644 index 8cff83bd..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.openslx.runvirt.configuration; - -public abstract class FilterSpecific<T, R, H> extends Filter<T, R> -{ - private final H hypervisor; - - public FilterSpecific( String name, H hypervisor ) - { - super( name ); - - this.hypervisor = hypervisor; - } - - public H getHypervisor() - { - return this.hypervisor; - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/App.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/App.java index bf76ebf2..4e872ffc 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/App.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/App.java @@ -9,30 +9,30 @@ import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.xml.LibvirtXmlDocumentException; import org.openslx.libvirt.xml.LibvirtXmlSerializationException; import org.openslx.libvirt.xml.LibvirtXmlValidationException; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterManager; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs.CmdLnOption; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgsException; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericCpu; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericDiskCdromDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericDiskFloppyDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericDiskStorageDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericFileSystemDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericInterfaceDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericMemory; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericName; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericParallelDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterSpecificQemuSerialDevices; -import org.openslx.runvirt.plugin.qemu.configuration.FilterGenericUuid; -import org.openslx.runvirt.plugin.qemu.configuration.FilterSpecificQemuArchitecture; -import org.openslx.runvirt.plugin.qemu.configuration.FilterSpecificQemuNvidiaGpuPassthrough; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericCpu; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericDiskCdromDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericDiskFloppyDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericDiskStorageDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericFileSystemDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericInterfaceDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericMemory; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericName; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericParallelDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationSpecificQemuSerialDevices; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationGenericUuid; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationSpecificQemuArchitecture; +import org.openslx.runvirt.plugin.qemu.configuration.TransformationSpecificQemuNvidiaGpuPassthrough; import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu; import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu.QemuSessionType; import org.openslx.runvirt.virtualization.LibvirtHypervisor; import org.openslx.runvirt.virtualization.LibvirtHypervisorException; import org.openslx.runvirt.virtualization.LibvirtVirtualMachine; import org.openslx.runvirt.virtualization.LibvirtVirtualMachineException; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationManager; /** * Run-virt QEMU plugin (command line tool) to finalize a Libvirt domain XML configuration. @@ -113,35 +113,35 @@ public class App System.exit( 3 ); } - // create filter manager to finalize VM configuration - final FilterManager<Domain, CommandLineArgs> filterManager; - filterManager = new FilterManager<Domain, CommandLineArgs>( config, cmdLn ); - - // register necessary filters to finalize configuration template - filterManager.register( new FilterGenericName(), true ); - filterManager.register( new FilterGenericUuid(), true ); - filterManager.register( new FilterGenericCpu(), true ); - filterManager.register( new FilterGenericMemory(), true ); - filterManager.register( new FilterGenericDiskStorageDevices(), true ); - filterManager.register( new FilterGenericDiskCdromDevices(), true ); - filterManager.register( new FilterGenericDiskFloppyDevices(), true ); - filterManager.register( new FilterGenericInterfaceDevices(), true ); - filterManager.register( new FilterGenericParallelDevices(), true ); - filterManager.register( new FilterGenericFileSystemDevices(), true ); - - // register QEMU specific filters to finalize configuration template + // create transformation manager to finalize VM configuration + final TransformationManager<Domain, CommandLineArgs> transformationManager; + transformationManager = new TransformationManager<Domain, CommandLineArgs>( config, cmdLn ); + + // register necessary transformations to finalize configuration template + transformationManager.register( new TransformationGenericName(), true ); + transformationManager.register( new TransformationGenericUuid(), true ); + transformationManager.register( new TransformationGenericCpu(), true ); + transformationManager.register( new TransformationGenericMemory(), true ); + transformationManager.register( new TransformationGenericDiskStorageDevices(), true ); + transformationManager.register( new TransformationGenericDiskCdromDevices(), true ); + transformationManager.register( new TransformationGenericDiskFloppyDevices(), true ); + transformationManager.register( new TransformationGenericInterfaceDevices(), true ); + transformationManager.register( new TransformationGenericParallelDevices(), true ); + transformationManager.register( new TransformationGenericFileSystemDevices(), true ); + + // register QEMU specific transformations to finalize configuration template if ( hypervisor instanceof LibvirtHypervisorQemu ) { final LibvirtHypervisorQemu hypervisorQemu = LibvirtHypervisorQemu.class.cast( hypervisor ); - filterManager.register( new FilterSpecificQemuArchitecture( hypervisorQemu ), true ); - filterManager.register( new FilterSpecificQemuSerialDevices( hypervisorQemu ), true ); - filterManager.register( new FilterSpecificQemuNvidiaGpuPassthrough( hypervisorQemu ), false ); + transformationManager.register( new TransformationSpecificQemuArchitecture( hypervisorQemu ), true ); + transformationManager.register( new TransformationSpecificQemuSerialDevices( hypervisorQemu ), true ); + transformationManager.register( new TransformationSpecificQemuNvidiaGpuPassthrough( hypervisorQemu ), false ); } // finalize Libvirt VM configuration template try { - filterManager.filterAll(); - } catch ( FilterException e ) { + transformationManager.transform(); + } catch ( TransformationException e ) { LOGGER.error( "Failed to finalize VM configuration file: " + e.getLocalizedMessage() ); hypervisor.close(); System.exit( 4 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericName.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericName.java deleted file mode 100644 index 00644b23..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericName.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.openslx.runvirt.plugin.qemu.configuration; - -import org.openslx.libvirt.domain.Domain; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; -import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; - -public class FilterGenericName extends FilterGeneric<Domain, CommandLineArgs> -{ - private static final String FILTER_NAME = "Name [(display) name]"; - - public FilterGenericName() - { - super( FilterGenericName.FILTER_NAME ); - } - - @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException - { - config.setName( args.getVmName() ); - config.setTitle( args.getVmDisplayName() ); - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuid.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuid.java deleted file mode 100644 index f10a32b7..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuid.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.openslx.runvirt.plugin.qemu.configuration; - -import org.openslx.libvirt.domain.Domain; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; -import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; - -public class FilterGenericUuid extends FilterGeneric<Domain, CommandLineArgs> -{ - private static final String FILTER_NAME = "UUID"; - - public FilterGenericUuid() - { - super( FilterGenericUuid.FILTER_NAME ); - } - - @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException - { - config.setUuid( args.getVmUuid() ); - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuNvidiaGpuPassthrough.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuNvidiaGpuPassthrough.java deleted file mode 100644 index 913eeb5a..00000000 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuNvidiaGpuPassthrough.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.openslx.runvirt.plugin.qemu.configuration; - -import org.openslx.libvirt.domain.Domain; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterSpecific; -import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu; - -public class FilterSpecificQemuNvidiaGpuPassthrough extends FilterSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> -{ - private static final String FILTER_NAME = "QEMU GPU passthrough [Nvidia]"; - - public FilterSpecificQemuNvidiaGpuPassthrough( LibvirtHypervisorQemu hypervisor ) - { - super( FilterSpecificQemuNvidiaGpuPassthrough.FILTER_NAME, hypervisor ); - } - - @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException - { - // check if IOMMU support is available on the host - - // TODO: implement Nvidia hypervisor shadowing - // call this filter at the end, since -> override of software graphics to 'none' necessary - } -} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpu.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpu.java index 1fbcd568..cdb0a63d 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpu.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpu.java @@ -3,21 +3,21 @@ package org.openslx.runvirt.plugin.qemu.configuration; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.Domain.CpuCheck; import org.openslx.libvirt.domain.Domain.CpuMode; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericCpu extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericCpu extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "CPU [number of cores, mode, ...]"; - public FilterGenericCpu() + public TransformationGenericCpu() { - super( FilterGenericCpu.FILTER_NAME ); + super( TransformationGenericCpu.FILTER_NAME ); } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { config.setVCpu( args.getVmNumCpus() ); config.setCpuMode( CpuMode.HOST_PASSTHROUGH ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskCdromDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java index a17f3a8b..860e0f1e 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskCdromDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java @@ -5,22 +5,22 @@ import java.util.ArrayList; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Disk.StorageType; import org.openslx.libvirt.domain.device.DiskCdrom; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.vm.QemuMetaData; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaData; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericDiskCdromDevices extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericDiskCdromDevices extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "Disk CDROM devices"; - public FilterGenericDiskCdromDevices() + public TransformationGenericDiskCdromDevices() { - super( FilterGenericDiskCdromDevices.FILTER_NAME ); + super( TransformationGenericDiskCdromDevices.FILTER_NAME ); } - private void filterDiskCdromDevice( Domain config, String fileName, int index ) throws FilterException + private void filterDiskCdromDevice( Domain config, String fileName, int index ) throws TransformationException { final ArrayList<DiskCdrom> devices = config.getDiskCdromDevices(); final DiskCdrom disk = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -40,7 +40,7 @@ public class FilterGenericDiskCdromDevices extends FilterGeneric<Domain, Command } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterDiskCdromDevice( config, args.getVmDiskFileNameCdrom0(), 0 ); this.filterDiskCdromDevice( config, args.getVmDiskFileNameCdrom1(), 1 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskFloppyDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java index 106e499e..7386a0b5 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskFloppyDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java @@ -5,21 +5,21 @@ import java.util.ArrayList; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Disk.StorageType; import org.openslx.libvirt.domain.device.DiskFloppy; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericDiskFloppyDevices extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericDiskFloppyDevices extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "Disk floppy devices"; - public FilterGenericDiskFloppyDevices() + public TransformationGenericDiskFloppyDevices() { - super( FilterGenericDiskFloppyDevices.FILTER_NAME ); + super( TransformationGenericDiskFloppyDevices.FILTER_NAME ); } - private void filterDiskFloppyDevice( Domain config, String fileName, int index ) throws FilterException + private void filterDiskFloppyDevice( Domain config, String fileName, int index ) throws TransformationException { final ArrayList<DiskFloppy> devices = config.getDiskFloppyDevices(); final DiskFloppy disk = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -36,7 +36,7 @@ public class FilterGenericDiskFloppyDevices extends FilterGeneric<Domain, Comman } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterDiskFloppyDevice( config, args.getVmDiskFileNameFloppy0(), 0 ); this.filterDiskFloppyDevice( config, args.getVmDiskFileNameFloppy1(), 1 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java index 0dcfddf9..8d98937e 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java @@ -5,21 +5,21 @@ import java.util.ArrayList; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Disk.StorageType; import org.openslx.libvirt.domain.device.DiskStorage; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericDiskStorageDevices extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericDiskStorageDevices extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "Disk storage devices [HDD, SSD, ...]"; - public FilterGenericDiskStorageDevices() + public TransformationGenericDiskStorageDevices() { - super( FilterGenericDiskStorageDevices.FILTER_NAME ); + super( TransformationGenericDiskStorageDevices.FILTER_NAME ); } - private void filterDiskStorageDevice( Domain config, String fileName, int index ) throws FilterException + private void filterDiskStorageDevice( Domain config, String fileName, int index ) throws TransformationException { final ArrayList<DiskStorage> devices = config.getDiskStorageDevices(); final DiskStorage disk = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -36,7 +36,7 @@ public class FilterGenericDiskStorageDevices extends FilterGeneric<Domain, Comma } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterDiskStorageDevice( config, args.getVmDiskFileNameHDD0(), 0 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericFileSystemDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java index 1d06474f..8a312433 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericFileSystemDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java @@ -6,21 +6,21 @@ import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.FileSystem; import org.openslx.libvirt.domain.device.FileSystem.AccessMode; import org.openslx.libvirt.domain.device.FileSystem.Type; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericFileSystemDevices extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericFileSystemDevices extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "File system devices"; - public FilterGenericFileSystemDevices() + public TransformationGenericFileSystemDevices() { - super( FilterGenericFileSystemDevices.FILTER_NAME ); + super( TransformationGenericFileSystemDevices.FILTER_NAME ); } - private void filterFileSystemDevice( Domain config, String source, String target, int index ) throws FilterException + private void filterFileSystemDevice( Domain config, String source, String target, int index ) throws TransformationException { final ArrayList<FileSystem> devices = config.getFileSystemDevices(); final FileSystem fileSystem = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -50,7 +50,7 @@ public class FilterGenericFileSystemDevices extends FilterGeneric<Domain, Comman } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterFileSystemDevice( config, args.getVmFsSrc0(), args.getVmFsTgt0(), 0 ); this.filterFileSystemDevice( config, args.getVmFsSrc1(), args.getVmFsTgt1(), 1 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericInterfaceDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java index ea2782ba..e4fba36e 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericInterfaceDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java @@ -4,21 +4,21 @@ import java.util.ArrayList; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Interface; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericInterfaceDevices extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericInterfaceDevices extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "Network interface devices"; - public FilterGenericInterfaceDevices() + public TransformationGenericInterfaceDevices() { - super( FilterGenericInterfaceDevices.FILTER_NAME ); + super( TransformationGenericInterfaceDevices.FILTER_NAME ); } - private void filterInterfaceDevice( Domain config, String macAddress, int index ) throws FilterException + private void filterInterfaceDevice( Domain config, String macAddress, int index ) throws TransformationException { final ArrayList<Interface> devices = config.getInterfaceDevices(); final Interface device = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -35,7 +35,7 @@ public class FilterGenericInterfaceDevices extends FilterGeneric<Domain, Command } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterInterfaceDevice( config, args.getVmMacAddress0(), 0 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemory.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemory.java index d8d901d4..341a5b7f 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemory.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemory.java @@ -4,21 +4,21 @@ import java.math.BigInteger; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.DomainUtils; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericMemory extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericMemory extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "Memory [normal, current (balloning)]"; - public FilterGenericMemory() + public TransformationGenericMemory() { - super( FilterGenericMemory.FILTER_NAME ); + super( TransformationGenericMemory.FILTER_NAME ); } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { BigInteger memory = DomainUtils.decodeMemory( args.getVmMemory(), "MiB" ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericName.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericName.java new file mode 100644 index 00000000..3cc2572d --- /dev/null +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericName.java @@ -0,0 +1,23 @@ +package org.openslx.runvirt.plugin.qemu.configuration; + +import org.openslx.libvirt.domain.Domain; +import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; + +public class TransformationGenericName extends TransformationGeneric<Domain, CommandLineArgs> +{ + private static final String FILTER_NAME = "Name [(display) name]"; + + public TransformationGenericName() + { + super( TransformationGenericName.FILTER_NAME ); + } + + @Override + public void transform( Domain config, CommandLineArgs args ) throws TransformationException + { + config.setName( args.getVmName() ); + config.setTitle( args.getVmDisplayName() ); + } +} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericParallelDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java index 458f69cb..e24a2ac5 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericParallelDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java @@ -5,21 +5,21 @@ import java.util.ArrayList; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Parallel; import org.openslx.libvirt.domain.device.Parallel.Type; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterGeneric; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; -public class FilterGenericParallelDevices extends FilterGeneric<Domain, CommandLineArgs> +public class TransformationGenericParallelDevices extends TransformationGeneric<Domain, CommandLineArgs> { private static final String FILTER_NAME = "Parallel devices"; - public FilterGenericParallelDevices() + public TransformationGenericParallelDevices() { - super( FilterGenericParallelDevices.FILTER_NAME ); + super( TransformationGenericParallelDevices.FILTER_NAME ); } - private void filterParallelDevice( Domain config, String fileName, int index ) throws FilterException + private void filterParallelDevice( Domain config, String fileName, int index ) throws TransformationException { final ArrayList<Parallel> devices = config.getParallelDevices(); final Parallel device = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -45,7 +45,7 @@ public class FilterGenericParallelDevices extends FilterGeneric<Domain, CommandL } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterParallelDevice( config, args.getVmDeviceSerial0(), 0 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuid.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuid.java new file mode 100644 index 00000000..c60c794f --- /dev/null +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuid.java @@ -0,0 +1,22 @@ +package org.openslx.runvirt.plugin.qemu.configuration; + +import org.openslx.libvirt.domain.Domain; +import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationGeneric; + +public class TransformationGenericUuid extends TransformationGeneric<Domain, CommandLineArgs> +{ + private static final String FILTER_NAME = "UUID"; + + public TransformationGenericUuid() + { + super( TransformationGenericUuid.FILTER_NAME ); + } + + @Override + public void transform( Domain config, CommandLineArgs args ) throws TransformationException + { + config.setUuid( args.getVmUuid() ); + } +} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuArchitecture.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java index 0466b5e9..bdded447 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuArchitecture.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java @@ -9,41 +9,41 @@ import org.openslx.libvirt.capabilities.guest.Machine; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.Domain.OsType; import org.openslx.libvirt.domain.Domain.Type; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterSpecific; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu; import org.openslx.runvirt.virtualization.LibvirtHypervisorException; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationSpecific; -public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> +public class TransformationSpecificQemuArchitecture extends TransformationSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> { private static final String FILTER_NAME = "QEMU Architecture [CPU architecture, machine type, ...]"; // used as instance of an singelton, always use getCapabilities to retrieve caps instance private Capabilities capabilities = null; - public FilterSpecificQemuArchitecture( LibvirtHypervisorQemu hypervisor ) + public TransformationSpecificQemuArchitecture( LibvirtHypervisorQemu hypervisor ) { - super( FilterSpecificQemuArchitecture.FILTER_NAME, hypervisor ); + super( TransformationSpecificQemuArchitecture.FILTER_NAME, hypervisor ); } - private Capabilities getCapabilities() throws FilterException + private Capabilities getCapabilities() throws TransformationException { // retrieve capabilities from QEMU hypervisor only once if ( this.capabilities == null ) { try { - this.capabilities = this.getHypervisor().getCapabilites(); + this.capabilities = this.getVirtualizer().getCapabilites(); } catch ( LibvirtHypervisorException e ) { final String errorMsg = new String( "Failed to get host capabilities from QEMU virtualizer: " + e.getLocalizedMessage() ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } } return this.capabilities; } - private Guest getTargetGuestFromArchName( String architectureName ) throws FilterException + private Guest getTargetGuestFromArchName( String architectureName ) throws TransformationException { final List<Guest> guests = this.getCapabilities().getGuests(); Guest targetGuest = null; @@ -63,7 +63,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma return targetGuest; } - private Machine getTargetMachineFromGuest( Guest guest, String machineName ) throws FilterException + private Machine getTargetMachineFromGuest( Guest guest, String machineName ) throws TransformationException { final List<Machine> machines = guest.getArchMachines(); Machine targetMachine = null; @@ -82,7 +82,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma return targetMachine; } - private List<String> getCanonicalNamesFromTargetMachines( Guest guest ) throws FilterException + private List<String> getCanonicalNamesFromTargetMachines( Guest guest ) throws TransformationException { final List<Machine> machines = guest.getArchMachines(); final List<String> canonicalNames = new ArrayList<String>(); @@ -98,7 +98,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { // get source architecture, machine- and OS type final String sourceArchitectureName = config.getOsArch(); @@ -110,12 +110,12 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma Guest targetGuest = null; if ( sourceArchitectureName == null ) { final String errorMsg = new String( "Source architecture is not specified!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } else { targetGuest = this.getTargetGuestFromArchName( sourceArchitectureName ); if ( targetGuest == null ) { final String errorMsg = new String( "Source architecture is not supported by the virtualizer!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } } @@ -123,7 +123,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma Machine targetMachine = null; if ( sourceMachine == null ) { final String errorMsg = new String( "Source machine type is not specified!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } else { // get all possible machine type for supported source architecture targetMachine = this.getTargetMachineFromGuest( targetGuest, sourceMachine ); @@ -147,7 +147,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma config.setOsMachine( sourceMachineOverwrite ); } else { final String errorMsg = new String( "Source machine type is not supported by the virtualizer!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } } } @@ -155,11 +155,11 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma // check if source OS type is supported by the hypervisor's architecture if ( sourceOsType == null ) { final String errorMsg = new String( "OS type is not specified!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } else { if ( !sourceOsType.toString().equals( targetGuest.getOsType().toString() ) ) { final String errorMsg = new String( "OS type is not supported by the virtualizer!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } } @@ -167,7 +167,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma Type targetDomainType = null; if ( sourceDomainType == null ) { final String errorMsg = new String( "Source domain type is not specified!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } else { final List<org.openslx.libvirt.capabilities.guest.Domain> targetDomains = targetGuest.getArchDomains(); @@ -183,7 +183,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma // check supported domain type if ( targetDomainType == null ) { final String errorMsg = new String( "Source domain type is not supported by the virtualizer!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } } @@ -191,7 +191,7 @@ public class FilterSpecificQemuArchitecture extends FilterSpecific<Domain, Comma final String archEmulator = targetGuest.getArchEmulator(); if ( archEmulator == null ) { final String errorMsg = new String( "Emulation of source architecture is not supported by the virtualizer!" ); - throw new FilterException( errorMsg ); + throw new TransformationException( errorMsg ); } else { config.setDevicesEmulator( targetGuest.getArchEmulator() ); } diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuNvidiaGpuPassthrough.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuNvidiaGpuPassthrough.java new file mode 100644 index 00000000..80349188 --- /dev/null +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuNvidiaGpuPassthrough.java @@ -0,0 +1,26 @@ +package org.openslx.runvirt.plugin.qemu.configuration; + +import org.openslx.libvirt.domain.Domain; +import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationSpecific; + +public class TransformationSpecificQemuNvidiaGpuPassthrough extends TransformationSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> +{ + private static final String FILTER_NAME = "QEMU GPU passthrough [Nvidia]"; + + public TransformationSpecificQemuNvidiaGpuPassthrough( LibvirtHypervisorQemu hypervisor ) + { + super( TransformationSpecificQemuNvidiaGpuPassthrough.FILTER_NAME, hypervisor ); + } + + @Override + public void transform( Domain config, CommandLineArgs args ) throws TransformationException + { + // check if IOMMU support is available on the host + + // TODO: implement Nvidia hypervisor shadowing + // call this filter at the end, since -> override of software graphics to 'none' necessary + } +} diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuSerialDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java index 258027b8..9d35fbad 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/FilterSpecificQemuSerialDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java @@ -7,19 +7,19 @@ import java.util.stream.Collectors; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Serial.Type; import org.openslx.libvirt.domain.device.Serial; -import org.openslx.runvirt.configuration.FilterException; -import org.openslx.runvirt.configuration.FilterSpecific; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu; -import org.openslx.vm.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.machine.QemuMetaDataUtils; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.virtualization.configuration.transformation.TransformationSpecific; -public class FilterSpecificQemuSerialDevices extends FilterSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> +public class TransformationSpecificQemuSerialDevices extends TransformationSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> { private static final String FILTER_NAME = "Serial devices"; - public FilterSpecificQemuSerialDevices( LibvirtHypervisorQemu hypervisor ) + public TransformationSpecificQemuSerialDevices( LibvirtHypervisorQemu hypervisor ) { - super( FilterSpecificQemuSerialDevices.FILTER_NAME, hypervisor ); + super( TransformationSpecificQemuSerialDevices.FILTER_NAME, hypervisor ); } private ArrayList<Serial> getSerialDevDevices( Domain config ) @@ -30,7 +30,7 @@ public class FilterSpecificQemuSerialDevices extends FilterSpecific<Domain, Comm return devices.stream().filter( byDeviceTypeDev ).collect( Collectors.toCollection( ArrayList::new ) ); } - private void filterSerialDevice( Domain config, String fileName, int index ) throws FilterException + private void filterSerialDevice( Domain config, String fileName, int index ) throws TransformationException { final ArrayList<Serial> devices = this.getSerialDevDevices( config ); final Serial device = QemuMetaDataUtils.getArrayIndex( devices, index ); @@ -56,7 +56,7 @@ public class FilterSpecificQemuSerialDevices extends FilterSpecific<Domain, Comm } @Override - public void filter( Domain config, CommandLineArgs args ) throws FilterException + public void transform( Domain config, CommandLineArgs args ) throws TransformationException { this.filterSerialDevice( config, args.getVmDeviceSerial0(), 0 ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java index 3814bfb6..560d4b7c 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java @@ -8,16 +8,16 @@ import org.junit.jupiter.api.Test; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.Domain.CpuCheck; import org.openslx.libvirt.domain.Domain.CpuMode; -import org.openslx.runvirt.configuration.FilterException; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; public class FilterGenericCpuTest { @Test @DisplayName( "Test filtering of VM CPU configuration" ) - public void testFilterGenericCpu() throws FilterException + public void testFilterGenericCpu() throws TransformationException { - final FilterGenericCpu filter = new FilterGenericCpu(); + final TransformationGenericCpu filter = new TransformationGenericCpu(); final Domain config = FilterTestUtils.getDefaultDomain(); final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs(); @@ -25,7 +25,7 @@ public class FilterGenericCpuTest assertNotEquals( CpuMode.HOST_PASSTHROUGH, config.getCpuMode() ); assertEquals( CpuCheck.PARTIAL, config.getCpuCheck() ); - filter.filter( config, args ); + filter.transform( config, args ); assertEquals( Integer.parseInt( FilterTestUtils.DEFAULT_VM_NCPUS ), config.getVCpu() ); assertEquals( CpuMode.HOST_PASSTHROUGH, config.getCpuMode() ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java index 93282e78..5dd9e4cc 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java @@ -10,16 +10,16 @@ import org.junit.jupiter.api.Test; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Disk.StorageType; import org.openslx.libvirt.domain.device.DiskStorage; -import org.openslx.runvirt.configuration.FilterException; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; public class FilterGenericDiskStorageDevicesTest { @Test @DisplayName( "Test filtering of VM disk storage devices configuration with specified input data" ) - public void testFilterGenericDiskStorageDevices() throws FilterException + public void testFilterGenericDiskStorageDevices() throws TransformationException { - final FilterGenericDiskStorageDevices filter = new FilterGenericDiskStorageDevices(); + final TransformationGenericDiskStorageDevices filter = new TransformationGenericDiskStorageDevices(); final Domain config = FilterTestUtils.getDefaultDomain(); final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs(); @@ -28,7 +28,7 @@ public class FilterGenericDiskStorageDevicesTest assertNotEquals( StorageType.FILE, devicesBeforeFiltering.get( 0 ).getStorageType() ); assertNotEquals( FilterTestUtils.DEFAULT_VM_HDD0, devicesBeforeFiltering.get( 0 ).getStorageSource() ); - filter.filter( config, args ); + filter.transform( config, args ); final ArrayList<DiskStorage> devicesAfterFiltering = config.getDiskStorageDevices(); assertEquals( 1, devicesAfterFiltering.size() ); @@ -38,22 +38,22 @@ public class FilterGenericDiskStorageDevicesTest @Test @DisplayName( "Test filtering of VM disk storage devices configuration with unspecified input data" ) - public void testFilterGenericDiskStorageDevicesNoData() throws FilterException + public void testFilterGenericDiskStorageDevicesNoData() throws TransformationException { - final FilterGenericDiskStorageDevices filter = new FilterGenericDiskStorageDevices(); + final TransformationGenericDiskStorageDevices filter = new TransformationGenericDiskStorageDevices(); final Domain config = FilterTestUtils.getDefaultDomain(); final CommandLineArgs args = FilterTestUtils.getEmptyCmdLnArgs(); final ArrayList<DiskStorage> devicesBeforeFiltering = config.getDiskStorageDevices(); assertEquals( 1, devicesBeforeFiltering.size() ); - filter.filter( config, args ); + filter.transform( config, args ); final ArrayList<DiskStorage> devicesAfterFiltering = config.getDiskStorageDevices(); assertEquals( 0, devicesAfterFiltering.size() ); } - public static void main( String[] args ) throws FilterException + public static void main( String[] args ) throws TransformationException { FilterGenericDiskStorageDevicesTest test = new FilterGenericDiskStorageDevicesTest(); test.testFilterGenericDiskStorageDevicesNoData(); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java index 794e251c..2bbda865 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java @@ -9,16 +9,16 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.DomainUtils; -import org.openslx.runvirt.configuration.FilterException; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; public class FilterGenericMemoryTest { @Test @DisplayName( "Test filtering of VM memory configuration" ) - public void testFilterGenericMemory() throws FilterException + public void testFilterGenericMemory() throws TransformationException { - final FilterGenericMemory filter = new FilterGenericMemory(); + final TransformationGenericMemory filter = new TransformationGenericMemory(); final Domain config = FilterTestUtils.getDefaultDomain(); final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs(); @@ -27,7 +27,7 @@ public class FilterGenericMemoryTest assertNotEquals( defaultMemory.toString(), config.getMemory().toString() ); assertNotEquals( defaultMemory.toString(), config.getCurrentMemory().toString() ); - filter.filter( config, args ); + filter.transform( config, args ); assertEquals( defaultMemory.toString(), config.getMemory().toString() ); assertEquals( defaultMemory.toString(), config.getCurrentMemory().toString() ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java index 93224702..188a13fa 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java @@ -6,23 +6,23 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.openslx.libvirt.domain.Domain; -import org.openslx.runvirt.configuration.FilterException; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; public class FilterGenericNameTest { @Test @DisplayName( "Test filtering of VM (display) name configuration" ) - public void testFilterGenericName() throws FilterException + public void testFilterGenericName() throws TransformationException { - final FilterGenericName filter = new FilterGenericName(); + final TransformationGenericName filter = new TransformationGenericName(); final Domain config = FilterTestUtils.getDefaultDomain(); final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs(); assertNotEquals( FilterTestUtils.DEFAULT_VM_NAME, config.getName() ); assertNotEquals( FilterTestUtils.DEFAULT_VM_DSPLNAME, config.getTitle() ); - filter.filter( config, args ); + filter.transform( config, args ); assertEquals( FilterTestUtils.DEFAULT_VM_NAME, config.getName() ); assertEquals( FilterTestUtils.DEFAULT_VM_DSPLNAME, config.getTitle() ); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java index c206b0e9..e15c1856 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java @@ -6,22 +6,22 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.openslx.libvirt.domain.Domain; -import org.openslx.runvirt.configuration.FilterException; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; +import org.openslx.virtualization.configuration.transformation.TransformationException; public class FilterGenericUuidTest { @Test @DisplayName( "Test filtering of VM UUID configuration" ) - public void testFilterGenericUuid() throws FilterException + public void testFilterGenericUuid() throws TransformationException { - final FilterGenericUuid filter = new FilterGenericUuid(); + final TransformationGenericUuid filter = new TransformationGenericUuid(); final Domain config = FilterTestUtils.getDefaultDomain(); final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs(); assertNotEquals( FilterTestUtils.DEFAULT_VM_UUID, config.getUuid() ); - filter.filter( config, args ); + filter.transform( config, args ); assertEquals( FilterTestUtils.DEFAULT_VM_UUID, config.getUuid() ); } |