From bf15b73d90a18e52f8764058d6fe80037d8a2307 Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Fri, 19 Mar 2021 13:42:29 +0100 Subject: Add implementation of Libvirt XML capabilities documents --- .../openslx/libvirt/capabilities/Capabilities.java | 155 ++++ .../org/openslx/libvirt/capabilities/cpu/Cpu.java | 165 ++++ .../openslx/libvirt/capabilities/cpu/Feature.java | 51 ++ .../openslx/libvirt/capabilities/cpu/Pages.java | 60 ++ .../openslx/libvirt/capabilities/guest/Domain.java | 53 ++ .../openslx/libvirt/capabilities/guest/Guest.java | 127 +++ .../libvirt/capabilities/guest/Machine.java | 72 ++ .../java/org/openslx/libvirt/domain/Domain.java | 116 +++ .../libvirt/capabilities/CapabilitiesTest.java | 305 +++++++ .../org/openslx/libvirt/domain/DomainTest.java | 52 ++ .../libvirt/xml/qemu-kvm_capabilities_default.xml | 986 +++++++++++++++++++++ .../xml/qemu-kvm_capabilities_no-cpu-features.xml | 961 ++++++++++++++++++++ .../xml/qemu-kvm_capabilities_no-cpu-pages.xml | 983 ++++++++++++++++++++ .../libvirt/xml/qemu-kvm_capabilities_no-cpu.xml | 950 ++++++++++++++++++++ .../qemu-kvm_capabilities_no-guest-machines.xml | 896 +++++++++++++++++++ .../xml/qemu-kvm_capabilities_no-guests.xml | 82 ++ .../libvirt/xml/qemu-kvm_capabilities_no-iommu.xml | 985 ++++++++++++++++++++ 17 files changed, 6999 insertions(+) create mode 100644 src/main/java/org/openslx/libvirt/capabilities/Capabilities.java create mode 100644 src/main/java/org/openslx/libvirt/capabilities/cpu/Cpu.java create mode 100644 src/main/java/org/openslx/libvirt/capabilities/cpu/Feature.java create mode 100644 src/main/java/org/openslx/libvirt/capabilities/cpu/Pages.java create mode 100644 src/main/java/org/openslx/libvirt/capabilities/guest/Domain.java create mode 100644 src/main/java/org/openslx/libvirt/capabilities/guest/Guest.java create mode 100644 src/main/java/org/openslx/libvirt/capabilities/guest/Machine.java create mode 100644 src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-features.xml create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-pages.xml create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu.xml create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guest-machines.xml create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guests.xml create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-iommu.xml diff --git a/src/main/java/org/openslx/libvirt/capabilities/Capabilities.java b/src/main/java/org/openslx/libvirt/capabilities/Capabilities.java new file mode 100644 index 0000000..7987371 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/Capabilities.java @@ -0,0 +1,155 @@ +package org.openslx.libvirt.capabilities; + +import java.io.File; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.openslx.libvirt.capabilities.cpu.Cpu; +import org.openslx.libvirt.capabilities.guest.Guest; +import org.openslx.libvirt.xml.LibvirtXmlDocument; +import org.openslx.libvirt.xml.LibvirtXmlDocumentException; +import org.openslx.libvirt.xml.LibvirtXmlNode; +import org.openslx.libvirt.xml.LibvirtXmlResources; +import org.openslx.libvirt.xml.LibvirtXmlSerializationException; +import org.openslx.libvirt.xml.LibvirtXmlValidationException; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +/** + * Implementation of the Libvirt capabilities XML document. + * + * The Libvirt capabilities XML document is used to describe the configuration and capabilities of + * the hypervisor's host. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Capabilities extends LibvirtXmlDocument +{ + /** + * Creates Libvirt capabilities XML document from {@link String} providing Libvirt capabilities + * XML content. + * + * @param xml {@link String} with Libvirt capabilities XML content. + * + * @throws LibvirtXmlDocumentException creation of XML context failed. + * @throws LibvirtXmlSerializationException serialization of the capabilities XML content failed. + * @throws LibvirtXmlValidationException XML content is not a valid capabilities XML document. + */ + public Capabilities( String xml ) + throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException + { + super( xml, LibvirtXmlResources.getLibvirtRng( "capabilities.rng" ) ); + } + + /** + * Creates Libvirt capabilities XML document from {@link File} containing Libvirt capabilities + * XML content. + * + * @param xml existing {@link File} containing Libvirt capabilities XML content. + * + * @throws LibvirtXmlDocumentException creation of XML context failed. + * @throws LibvirtXmlSerializationException serialization of the capabilities XML content failed. + * @throws LibvirtXmlValidationException XML content is not a valid capabilities XML document. + */ + public Capabilities( File xml ) + throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException + { + super( xml, LibvirtXmlResources.getLibvirtRng( "capabilities.rng" ) ); + } + + /** + * Creates Libvirt capabilities XML document from {@link InputStream} providing Libvirt + * capabilities XML content. + * + * @param xml {@link InputStream} providing Libvirt capabilities XML content. + * + * @throws LibvirtXmlDocumentException creation of XML context failed. + * @throws LibvirtXmlSerializationException serialization of the capabilities XML content failed. + * @throws LibvirtXmlValidationException XML content is not a valid capabilities XML document. + */ + public Capabilities( InputStream xml ) + throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException + { + super( xml, LibvirtXmlResources.getLibvirtRng( "capabilities.rng" ) ); + } + + /** + * Creates Libvirt capabilities XML document from {@link InputSource} providing Libvirt + * capabilities XML content. + * + * @param xml {@link InputSource} providing Libvirt capabilities XML content. + * + * @throws LibvirtXmlDocumentException creation of XML context failed. + * @throws LibvirtXmlSerializationException serialization of the capabilities XML content failed. + * @throws LibvirtXmlValidationException XML content is not a valid capabilities XML document. + */ + public Capabilities( InputSource xml ) + throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException + { + super( xml, LibvirtXmlResources.getLibvirtRng( "capabilities.rng" ) ); + } + + /** + * Returns UUID of the Libvirt host machine. + * + * @return UUID of the host machine. + */ + public String getHostUuid() + { + return this.getRootXmlNode().getXmlElementValue( "host/uuid" ); + } + + /** + * Returns CPU capabilities of the host machine. + * + * @return CPU capabilities of the host machine. + */ + public Cpu getHostCpu() + { + final Node hostCpuNode = this.getRootXmlNode().getXmlElement( "host/cpu" ); + + if ( hostCpuNode == null ) { + return null; + } else { + final LibvirtXmlNode hostCpuXmlNode = new LibvirtXmlNode( this.getRootXmlNode().getXmlDocument(), + hostCpuNode ); + return Cpu.newInstance( hostCpuXmlNode ); + } + } + + /** + * Checks whether the Libvirt host machine has IOMMU support. + * + * @return State of the IOMMU support. + */ + public boolean hasHostIommuSupport() + { + return this.getRootXmlNode().getXmlElementAttributeValueAsBool( "host/iommu", "support" ); + } + + /** + * Returns capabilities of all possible guest machines. + * + * @return capabilities of all possible guest machines. + */ + public List getGuests() + { + final List guestList = new ArrayList(); + final NodeList guestNodes = this.getRootXmlNode().getXmlNodes( "guest" ); + + for ( int i = 0; i < guestNodes.getLength(); i++ ) { + final LibvirtXmlNode guestNode = new LibvirtXmlNode( this.getRootXmlNode().getXmlDocument(), + guestNodes.item( i ) ); + final Guest guest = Guest.newInstance( guestNode ); + + if ( guest != null ) { + guestList.add( guest ); + } + } + + return guestList; + } +} diff --git a/src/main/java/org/openslx/libvirt/capabilities/cpu/Cpu.java b/src/main/java/org/openslx/libvirt/capabilities/cpu/Cpu.java new file mode 100644 index 0000000..dc5fbd0 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/cpu/Cpu.java @@ -0,0 +1,165 @@ +package org.openslx.libvirt.capabilities.cpu; + +import java.util.ArrayList; +import java.util.List; + +import org.openslx.libvirt.xml.LibvirtXmlNode; +import org.w3c.dom.NodeList; + +/** + * Implementation of the host CPU capabilities as part of the Libvirt capabilities XML document. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Cpu extends LibvirtXmlNode +{ + /** + * Creates an empty host CPU capabilities instance. + */ + public Cpu() + { + super(); + } + + /** + * Creates a host CPU capabilities instance representing an existing Libvirt XML host CPU + * capabilities element. + * + * @param xmlNode existing Libvirt XML host CPU capabilities element. + */ + public Cpu( LibvirtXmlNode xmlNode ) + { + super( xmlNode ); + } + + /** + * Returns the architecture name of the host CPU. + * + * @return architecture name of the host CPU. + */ + public String getArch() + { + return this.getXmlElementValue( "arch" ); + } + + /** + * Returns the model name of the host CPU. + * + * @return model name of the host CPU. + */ + public String getModel() + { + return this.getXmlElementValue( "model" ); + } + + /** + * Returns the vendor name of the host CPU. + * + * @return vendor name of the host CPU. + */ + public String getVendor() + { + return this.getXmlElementValue( "vendor" ); + } + + /** + * Returns the number of sockets of the host CPU. + * + * @return number of sockets of the host CPU. + */ + public int getTopologySockets() + { + final String numSockets = this.getXmlElementAttributeValue( "topology", "sockets" ); + return Integer.parseInt( numSockets ); + } + + /** + * Returns the number of dies of the host CPU. + * + * @return number of dies of the host CPU. + */ + public int getTopologyDies() + { + final String numDies = this.getXmlElementAttributeValue( "topology", "dies" ); + return Integer.parseInt( numDies ); + } + + /** + * Returns the number of cores of the host CPU. + * + * @return number of cores of the host CPU. + */ + public int getTopologyCores() + { + final String numCores = this.getXmlElementAttributeValue( "topology", "cores" ); + return Integer.parseInt( numCores ); + } + + /** + * Returns the number of threads of the host CPU. + * + * @return number of threads of the host CPU. + */ + public int getTopologyThreads() + { + final String numThreads = this.getXmlElementAttributeValue( "topology", "threads" ); + return Integer.parseInt( numThreads ); + } + + /** + * Returns the supported features of the host CPU. + * + * @return supported features of the host CPU. + */ + public List getFeatures() + { + final List featureList = new ArrayList(); + final NodeList featureNodes = this.getXmlNodes( "feature" ); + + for ( int i = 0; i < featureNodes.getLength(); i++ ) { + final LibvirtXmlNode featureNode = new LibvirtXmlNode( this.getXmlDocument(), featureNodes.item( i ) ); + final Feature feature = Feature.newInstance( featureNode ); + + if ( feature != null ) { + featureList.add( feature ); + } + } + + return featureList; + } + + /** + * Returns the supported memory pages of the host CPU. + * + * @return supported memory pages of the host CPU. + */ + public List getPages() + { + final List pagesList = new ArrayList(); + final NodeList pagesNodes = this.getXmlNodes( "pages" ); + + for ( int i = 0; i < pagesNodes.getLength(); i++ ) { + final LibvirtXmlNode pagesNode = new LibvirtXmlNode( this.getXmlDocument(), pagesNodes.item( i ) ); + final Pages pages = Pages.newInstance( pagesNode ); + + if ( pages != null ) { + pagesList.add( pages ); + } + } + + return pagesList; + } + + /** + * Creates a host CPU capabilities instance representing an existing Libvirt XML host CPU + * capabilities element. + * + * @param xmlNode existing Libvirt XML host CPU capabilities element. + * @return host CPU capabilities instance. + */ + public static Cpu newInstance( LibvirtXmlNode xmlNode ) + { + return new Cpu( xmlNode ); + } +} diff --git a/src/main/java/org/openslx/libvirt/capabilities/cpu/Feature.java b/src/main/java/org/openslx/libvirt/capabilities/cpu/Feature.java new file mode 100644 index 0000000..96c77d5 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/cpu/Feature.java @@ -0,0 +1,51 @@ +package org.openslx.libvirt.capabilities.cpu; + +import org.openslx.libvirt.xml.LibvirtXmlNode; + +/** + * Implementation of a host CPU feature as part of the Libvirt capabilities XML document. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Feature extends LibvirtXmlNode +{ + /** + * Creates an empty host CPU feature instance. + */ + public Feature() + { + super(); + } + + /** + * Creates an host CPU feature representing an existing Libvirt XML host CPU feature element. + * + * @param xmlNode existing Libvirt XML host CPU feature element. + */ + public Feature( LibvirtXmlNode xmlNode ) + { + super( xmlNode ); + } + + /** + * Returns the name of the host CPU feature. + * + * @return name of the host CPU feature. + */ + public String getName() + { + return this.getXmlElementAttributeValue( "name" ); + } + + /** + * Creates an host CPU feature representing an existing Libvirt XML host CPU feature element. + * + * @param xmlNode existing Libvirt XML host CPU feature element. + * @return host CPU feature instance. + */ + public static Feature newInstance( LibvirtXmlNode xmlNode ) + { + return new Feature( xmlNode ); + } +} diff --git a/src/main/java/org/openslx/libvirt/capabilities/cpu/Pages.java b/src/main/java/org/openslx/libvirt/capabilities/cpu/Pages.java new file mode 100644 index 0000000..eea5a36 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/cpu/Pages.java @@ -0,0 +1,60 @@ +package org.openslx.libvirt.capabilities.cpu; + +import java.math.BigInteger; + +import org.openslx.libvirt.domain.DomainUtils; +import org.openslx.libvirt.xml.LibvirtXmlNode; + +/** + * Implementation of a host CPU memory pages instance as part of the Libvirt capabilities XML + * document. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Pages extends LibvirtXmlNode +{ + /** + * Creates an empty host CPU memory pages instance. + */ + public Pages() + { + super(); + } + + /** + * Creates a host CPU memory pages instance representing an existing Libvirt XML host CPU pages + * element. + * + * @param xmlNode existing Libvirt XML host CPU pages element. + */ + public Pages( LibvirtXmlNode xmlNode ) + { + super( xmlNode ); + } + + /** + * Returns size of the memory pages instance. + * + * @return size of the memory pages instance. + */ + public BigInteger getSize() + { + final String pagesValue = this.getXmlElementAttributeValue( "size" ); + final String pagesUnit = this.getXmlElementAttributeValue( "unit" ); + + return DomainUtils.decodeMemory( pagesValue, pagesUnit ); + } + + /** + * Creates a host CPU memory pages instance representing an existing Libvirt XML host CPU pages + * element. + * + * @param xmlNode existing Libvirt XML host CPU pages element. + * @return host CPU memory pages instance. + */ + public static Pages newInstance( LibvirtXmlNode xmlNode ) + { + return new Pages( xmlNode ); + } +} diff --git a/src/main/java/org/openslx/libvirt/capabilities/guest/Domain.java b/src/main/java/org/openslx/libvirt/capabilities/guest/Domain.java new file mode 100644 index 0000000..8716064 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/guest/Domain.java @@ -0,0 +1,53 @@ +package org.openslx.libvirt.capabilities.guest; + +import org.openslx.libvirt.domain.Domain.Type; +import org.openslx.libvirt.xml.LibvirtXmlNode; + +/** + * Implementation of a guest domain as part of the Libvirt capabilities XML capabilities document. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Domain extends LibvirtXmlNode +{ + /** + * Creates an empty guest domain instance. + */ + public Domain() + { + super(); + } + + /** + * Creates a guest domain representing an existing Libvirt XML guest domain element. + * + * @param xmlNode existing Libvirt XML guest domain element. + */ + public Domain( LibvirtXmlNode xmlNode ) + { + super( xmlNode ); + } + + /** + * Returns the domain type of the guest domain. + * + * @return type of the guest domain. + */ + public Type getType() + { + final String type = this.getXmlElementAttributeValue( "type" ); + return Type.fromString( type ); + } + + /** + * Creates a guest domain representing an existing Libvirt XML guest domain element. + * + * @param xmlNode existing Libvirt XML guest domain element. + * @return guest domain instance. + */ + public static Domain newInstance( LibvirtXmlNode xmlNode ) + { + return new Domain( xmlNode ); + } +} diff --git a/src/main/java/org/openslx/libvirt/capabilities/guest/Guest.java b/src/main/java/org/openslx/libvirt/capabilities/guest/Guest.java new file mode 100644 index 0000000..2471180 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/guest/Guest.java @@ -0,0 +1,127 @@ +package org.openslx.libvirt.capabilities.guest; + +import java.util.ArrayList; +import java.util.List; + +import org.openslx.libvirt.domain.Domain.OsType; +import org.openslx.libvirt.xml.LibvirtXmlNode; +import org.w3c.dom.NodeList; + +/** + * Implementation of the guest capabilities as part of the Libvirt capabilities XML document. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Guest extends LibvirtXmlNode +{ + /** + * Creates an empty guest instance. + */ + public Guest() + { + super(); + } + + /** + * Creates a guest representing an existing Libvirt XML guest capabilities element. + * + * @param xmlNode existing Libvirt XML guest capabilities element. + */ + public Guest( LibvirtXmlNode xmlNode ) + { + super( xmlNode ); + } + + /** + * Return OS type of the guest. + * + * @return OS type of the guest. + */ + public OsType getOsType() + { + final String osType = this.getXmlElementValue( "os_type" ); + return OsType.fromString( osType ); + } + + /** + * Returns the architecture name of the guest. + * + * @return architecture name of the guest. + */ + public String getArchName() + { + return this.getXmlElementAttributeValue( "arch", "name" ); + } + + /** + * Return word size of the guest's architecture. + * + * @return word size of the guest's architecture. + */ + public int getArchWordSize() + { + final String archWordSize = this.getXmlElementValue( "arch/wordsize" ); + return Integer.parseInt( archWordSize ); + } + + public String getArchEmulator() + { + return this.getXmlElementValue( "arch/emulator" ); + } + + /** + * Returns the available machines of the guest's architecture. + * + * @return available machines of the guest's architecture. + */ + public List getArchMachines() + { + final List machinesList = new ArrayList(); + final NodeList machineNodes = this.getXmlNodes( "arch/machine" ); + + for ( int i = 0; i < machineNodes.getLength(); i++ ) { + final LibvirtXmlNode machineNode = new LibvirtXmlNode( this.getXmlDocument(), machineNodes.item( i ) ); + final Machine machine = Machine.newInstance( machineNode ); + + if ( machine != null ) { + machinesList.add( machine ); + } + } + + return machinesList; + } + + /** + * Returns the supported domains of the guest. + * + * @return supported domains of the guest. + */ + public List getArchDomains() + { + final List domainList = new ArrayList(); + final NodeList domainNodes = this.getXmlNodes( "arch/domain" ); + + for ( int i = 0; i < domainNodes.getLength(); i++ ) { + final LibvirtXmlNode domainNode = new LibvirtXmlNode( this.getXmlDocument(), domainNodes.item( i ) ); + final Domain domain = Domain.newInstance( domainNode ); + + if ( domain != null ) { + domainList.add( domain ); + } + } + + return domainList; + } + + /** + * Creates a guest representing an existing Libvirt XML guest capabilities element. + * + * @param xmlNode existing Libvirt XML guest capabilities element. + * @return guest capabilities instance. + */ + public static Guest newInstance( LibvirtXmlNode xmlNode ) + { + return new Guest( xmlNode ); + } +} diff --git a/src/main/java/org/openslx/libvirt/capabilities/guest/Machine.java b/src/main/java/org/openslx/libvirt/capabilities/guest/Machine.java new file mode 100644 index 0000000..dfe6362 --- /dev/null +++ b/src/main/java/org/openslx/libvirt/capabilities/guest/Machine.java @@ -0,0 +1,72 @@ +package org.openslx.libvirt.capabilities.guest; + +import org.openslx.libvirt.xml.LibvirtXmlNode; + +/** + * Implementation of a guest machine as part of the Libvirt XML capabilities document. + * + * @author Manuel Bentele + * @version 1.0 + */ +public class Machine extends LibvirtXmlNode +{ + /** + * Creates an empty guest machine instance. + */ + public Machine() + { + super(); + } + + /** + * Creates an guest machine representing an existing Libvirt XML guest machine element. + * + * @param xmlNode existing Libvirt XML guest machine element. + */ + public Machine( LibvirtXmlNode xmlNode ) + { + super( xmlNode ); + } + + /** + * Returns the canonical machine name. + * + * @return canonical machine name. + */ + public String getCanonicalMachine() + { + return this.getXmlElementAttributeValue( "canonical" ); + } + + /** + * Returns the maximum number of CPUs supported by the guest machine. + * + * @return maximum number of CPUs supported by the guest machine. + */ + public int getMaxCpus() + { + final String numMaxCpus = this.getXmlElementAttributeValue( "maxCpus" ); + return Integer.parseUnsignedInt( numMaxCpus ); + } + + /** + * Returns the name of the guest machine. + * + * @return name of the guest machine. + */ + public String getName() + { + return this.getXmlElementValue( null ); + } + + /** + * Creates an guest machine representing an existing Libvirt XML guest machine element. + * + * @param xmlNode existing Libvirt XML guest machine element. + * @return guest machine instance. + */ + public static Machine newInstance( LibvirtXmlNode xmlNode ) + { + return new Machine( xmlNode ); + } +} diff --git a/src/main/java/org/openslx/libvirt/domain/Domain.java b/src/main/java/org/openslx/libvirt/domain/Domain.java index 4e15ec1..9611c59 100644 --- a/src/main/java/org/openslx/libvirt/domain/Domain.java +++ b/src/main/java/org/openslx/libvirt/domain/Domain.java @@ -352,6 +352,122 @@ public class Domain extends LibvirtXmlDocument this.getRootXmlNode().setXmlElementValue( "vcpu", Integer.toString( number ) ); } + /** + * Returns OS type defined in the Libvirt domain XML document. + * + * @return OS type of the virtual machine. + */ + public OsType getOsType() + { + final String osType = this.getRootXmlNode().getXmlElementValue( "os/type" ); + return OsType.fromString( osType ); + } + + /** + * Set OS type in the Libvirt domain XML document. + * + * @param type OS type for the virtual machine. + */ + public void setOsType( OsType type ) + { + this.getRootXmlNode().setXmlElementValue( "os/type", type.toString() ); + } + + /** + * Returns OS architecture defined in the Libvirt domain XML document. + * + * @return OS architecture of the virtual machine. + */ + public String getOsArch() + { + return this.getRootXmlNode().getXmlElementAttributeValue( "os/type", "arch" ); + } + + /** + * Set OS architecture in the Libvirt domain XML document. + * + * @param arch OS architecture for the virtual machine. + */ + public void setOsArch( String arch ) + { + this.getRootXmlNode().setXmlElementAttributeValue( "os/type", "arch", arch ); + } + + /** + * Returns OS machine defined in the Libvirt domain XML document. + * + * @return OS machine of the virtual machine. + */ + public String getOsMachine() + { + return this.getRootXmlNode().getXmlElementAttributeValue( "os/type", "machine" ); + } + + /** + * Set OS machine in the Libvirt domain XML document. + * + * @param machine OS machine for the virtual machine. + */ + public void setOsMachine( String machine ) + { + this.getRootXmlNode().setXmlElementAttributeValue( "os/type", "machine", machine ); + } + + /** + * Operating system types specifiable for a virtual machine in the Libvirt domain XML document. + * + * @author Manuel Bentele + * @version 1.0 + */ + public enum OsType + { + // @formatter:off + XEN ( "xen" ), + LINUX( "linux" ), + HVM ( "hvm" ), + EXE ( "exe" ), + UML ( "uml" ); + // @formatter:on + + /** + * Name of the OS type in a Libvirt domain XML document. + */ + private final String osType; + + /** + * Creates an OS type. + * + * @param osType valid name of the OS type in the Libvirt domain XML document. + */ + OsType( String osType ) + { + this.osType = osType; + } + + @Override + public String toString() + { + return this.osType; + } + + /** + * Creates an OS type from its name with error check. + * + * @param osType name of the OS type in the Libvirt domain XML document. + * @return valid OS type. + */ + public static OsType fromString( String osType ) + { + for ( OsType t : OsType.values() ) { + if ( t.osType.equalsIgnoreCase( osType ) ) { + return t; + } + } + + return null; + } + } + /** * Returns virtual machine CPU model defined in the Libvirt domain XML document. * diff --git a/src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java b/src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java new file mode 100644 index 0000000..e7d7651 --- /dev/null +++ b/src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java @@ -0,0 +1,305 @@ +package org.openslx.libvirt.capabilities; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import java.math.BigInteger; +import java.util.List; + +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.openslx.libvirt.capabilities.cpu.Cpu; +import org.openslx.libvirt.capabilities.cpu.Feature; +import org.openslx.libvirt.capabilities.cpu.Pages; +import org.openslx.libvirt.capabilities.guest.Domain; +import org.openslx.libvirt.capabilities.guest.Guest; +import org.openslx.libvirt.capabilities.guest.Machine; +import org.openslx.libvirt.domain.Domain.OsType; +import org.openslx.libvirt.domain.Domain.Type; +import org.openslx.libvirt.xml.LibvirtXmlDocumentException; +import org.openslx.libvirt.xml.LibvirtXmlSerializationException; +import org.openslx.libvirt.xml.LibvirtXmlTestResources; +import org.openslx.libvirt.xml.LibvirtXmlValidationException; + +public class CapabilitiesTest +{ + @BeforeAll + public static void setUp() + { + // disable logging with log4j + LogManager.getRootLogger().setLevel( Level.OFF ); + } + + private Capabilities newCapabilitiesInstance( String xmlFileName ) + { + Capabilities caps = null; + + try { + caps = new Capabilities( LibvirtXmlTestResources.getLibvirtXmlFile( xmlFileName ) ); + } catch ( LibvirtXmlDocumentException | LibvirtXmlSerializationException | LibvirtXmlValidationException e ) { + final String errorMsg = new String( + "Cannot prepare requested Libvirt capabilities XML file from the resources folder" ); + fail( errorMsg ); + } + + return caps; + } + + @Test + @DisplayName( "Get host UUID from libvirt XML capabilities file" ) + public void testGetHostUuid() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + + assertEquals( "9b2f12af-1fba-444c-b72b-9cbc43fb3ca5", caps.getHostUuid() ); + } + + @Test + @DisplayName( "Get host CPU from libvirt XML capabilities file" ) + public void testGetHostCpu() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + final Cpu hostCpu = caps.getHostCpu(); + + assertNotNull( hostCpu ); + assertEquals( "x86_64", hostCpu.getArch() ); + assertEquals( "Skylake-Client-IBRS", hostCpu.getModel() ); + assertEquals( "Intel", hostCpu.getVendor() ); + assertEquals( 1, hostCpu.getTopologySockets() ); + assertEquals( 1, hostCpu.getTopologyDies() ); + assertEquals( 4, hostCpu.getTopologyCores() ); + assertEquals( 1, hostCpu.getTopologyThreads() ); + } + + @Test + @DisplayName( "Get non-existent host CPU from libvirt XML capabilities file" ) + public void testGetHostCpuNonExistent() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-cpu.xml" ); + final Cpu hostCpu = caps.getHostCpu(); + + assertNull( hostCpu ); + } + + @Test + @DisplayName( "Get host CPU features from libvirt XML capabilities file" ) + public void testGetHostCpuFeatures() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + final Cpu hostCpu = caps.getHostCpu(); + + assertNotNull( hostCpu ); + + final List hostCpuFeatures = hostCpu.getFeatures(); + assertNotNull( hostCpuFeatures ); + assertEquals( 25, hostCpuFeatures.size() ); + + final Feature hostCpuFeature = hostCpuFeatures.get( 9 ); + assertNotNull( hostCpuFeature ); + assertEquals( "vmx", hostCpuFeature.getName() ); + } + + @Test + @DisplayName( "Get empty host CPU features from libvirt XML capabilities file" ) + public void testGetHostCpuFeaturesEmpty() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-cpu-features.xml" ); + final Cpu hostCpu = caps.getHostCpu(); + + assertNotNull( hostCpu ); + + final List hostCpuFeatures = hostCpu.getFeatures(); + assertNotNull( hostCpuFeatures ); + assertEquals( 0, hostCpuFeatures.size() ); + } + + @Test + @DisplayName( "Get host CPU pages from libvirt XML capabilities file" ) + public void testGetHostCpuPages() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + final Cpu hostCpu = caps.getHostCpu(); + + assertNotNull( hostCpu ); + + final List hostCpuPages = hostCpu.getPages(); + assertNotNull( hostCpuPages ); + assertEquals( 3, hostCpuPages.size() ); + + final Pages hostCpuPage = hostCpuPages.get( 2 ); + assertNotNull( hostCpuPage ); + assertEquals( new BigInteger( "1073741824" ).toString(), hostCpuPage.getSize().toString() ); + } + + @Test + @DisplayName( "Get empty host CPU pages from libvirt XML capabilities file" ) + public void testGetHostCpuPagesEmpty() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-cpu-pages.xml" ); + final Cpu hostCpu = caps.getHostCpu(); + + assertNotNull( hostCpu ); + + final List hostCpuPages = hostCpu.getPages(); + assertNotNull( hostCpuPages ); + assertEquals( 0, hostCpuPages.size() ); + } + + @Test + @DisplayName( "Get host IOMMU support from libvirt XML capabilities file" ) + public void testGetHostIommuSupport() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + + assertEquals( true, caps.hasHostIommuSupport() ); + } + + @Test + @DisplayName( "Get non-existent host IOMMU support from libvirt XML capabilities file" ) + public void testGetHostIommuSupportNonExistent() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-iommu.xml" ); + + assertEquals( false, caps.hasHostIommuSupport() ); + } + + @Test + @DisplayName( "Get guests from libvirt XML capabilities file" ) + public void testGetGuests() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 26, guests.size() ); + + final Guest guest = guests.get( 3 ); + assertNotNull( guest ); + assertEquals( OsType.HVM.toString(), guest.getOsType().toString() ); + assertEquals( "aarch64", guest.getArchName() ); + assertEquals( 64, guest.getArchWordSize() ); + assertEquals( "/usr/bin/qemu-system-aarch64", guest.getArchEmulator() ); + } + + @Test + @DisplayName( "Get empty guests from libvirt XML capabilities file" ) + public void testGetGuestsEmpty() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-guests.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 0, guests.size() ); + } + + @Test + @DisplayName( "Get guest machines from libvirt XML capabilities file" ) + public void testGetGuestMachines() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 26, guests.size() ); + + final Guest guest = guests.get( 3 ); + assertNotNull( guest ); + + final List guestMachines = guest.getArchMachines(); + assertNotNull( guestMachines ); + assertEquals( 89, guestMachines.size() ); + + final Machine guestMachine = guestMachines.get( 5 ); + assertNotNull( guestMachine ); + assertNull( guestMachine.getCanonicalMachine() ); + assertEquals( 2, guestMachine.getMaxCpus() ); + assertEquals( "nuri", guestMachine.getName() ); + } + + @Test + @DisplayName( "Get empty guest machines from libvirt XML capabilities file" ) + public void testGetGuestMachinesEmpty() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-guest-machines.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 26, guests.size() ); + + final Guest guest = guests.get( 3 ); + assertNotNull( guest ); + + final List guestMachines = guest.getArchMachines(); + assertNotNull( guestMachines ); + assertEquals( 0, guestMachines.size() ); + } + + @Test + @DisplayName( "Get canonical guest machine from libvirt XML capabilities file" ) + public void testGetGuestMachineCanonical() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 26, guests.size() ); + + final Guest guest = guests.get( 3 ); + assertNotNull( guest ); + + final List guestMachines = guest.getArchMachines(); + assertNotNull( guestMachines ); + assertEquals( 89, guestMachines.size() ); + + final Machine guestMachine = guestMachines.get( 29 ); + assertNotNull( guestMachine ); + assertEquals( "virt-5.2", guestMachine.getCanonicalMachine() ); + assertEquals( 512, guestMachine.getMaxCpus() ); + assertEquals( "virt", guestMachine.getName() ); + } + + @Test + @DisplayName( "Get guest machine domains from libvirt XML capabilities file" ) + public void testGetGuestMachineDomains() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 26, guests.size() ); + + final Guest guest = guests.get( 5 ); + assertNotNull( guest ); + + final List guestDomains = guest.getArchDomains(); + assertNotNull( guestDomains ); + assertEquals( 2, guestDomains.size() ); + + final Domain guestDomain = guestDomains.get( 1 ); + assertNotNull( guestDomain ); + assertEquals( Type.KVM, guestDomain.getType() ); + } + + @Test + @DisplayName( "Get empty guest machine domains from libvirt XML capabilities file" ) + public void testGetGuestMachineDomainsEmpty() + { + final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-guest-machines.xml" ); + + final List guests = caps.getGuests(); + assertNotNull( guests ); + assertEquals( 26, guests.size() ); + + final Guest guest = guests.get( 3 ); + assertNotNull( guest ); + + final List guestDomains = guest.getArchDomains(); + assertNotNull( guestDomains ); + assertEquals( 0, guestDomains.size() ); + } +} diff --git a/src/test/java/org/openslx/libvirt/domain/DomainTest.java b/src/test/java/org/openslx/libvirt/domain/DomainTest.java index a604b21..84f6a32 100644 --- a/src/test/java/org/openslx/libvirt/domain/DomainTest.java +++ b/src/test/java/org/openslx/libvirt/domain/DomainTest.java @@ -13,6 +13,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.openslx.libvirt.domain.Domain.CpuCheck; import org.openslx.libvirt.domain.Domain.CpuMode; +import org.openslx.libvirt.domain.Domain.OsType; import org.openslx.libvirt.xml.LibvirtXmlDocumentException; import org.openslx.libvirt.xml.LibvirtXmlSerializationException; import org.openslx.libvirt.xml.LibvirtXmlTestResources; @@ -177,6 +178,57 @@ public class DomainTest assertEquals( 4, vm.getVCpu() ); } + @Test + @DisplayName( "Get VM's OS type from libvirt XML file" ) + public void testGetOsType() + { + Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" ); + assertEquals( OsType.HVM.toString(), vm.getOsType().toString() ); + } + + @Test + @DisplayName( "Set VM's OS type in libvirt XML file" ) + public void testSetOsType() + { + Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" ); + vm.setOsType( OsType.XEN ); + assertEquals( OsType.XEN.toString(), vm.getOsType().toString() ); + } + + @Test + @DisplayName( "Get VM's OS architecture from libvirt XML file" ) + public void testGetOsArch() + { + Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" ); + assertEquals( "x86_64", vm.getOsArch() ); + } + + @Test + @DisplayName( "Set VM's OS architecture in libvirt XML file" ) + public void testSetOsArch() + { + Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" ); + vm.setOsArch( "aarch" ); + assertEquals( "aarch", vm.getOsArch() ); + } + + @Test + @DisplayName( "Get VM's OS machine from libvirt XML file" ) + public void testGetOsMachine() + { + Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" ); + assertEquals( "pc-q35-5.1", vm.getOsMachine() ); + } + + @Test + @DisplayName( "Set VM's OS machine in libvirt XML file" ) + public void testSetOsMachine() + { + Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" ); + vm.setOsMachine( "pc" ); + assertEquals( "pc", vm.getOsMachine() ); + } + @Test @DisplayName( "Get VM CPU model from libvirt XML file" ) public void testGetCpuModel() diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml new file mode 100644 index 0000000..4f2a94f --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml @@ -0,0 +1,986 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + x86_64 + Skylake-Client-IBRS + Intel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + hvm + + 64 + /usr/bin/qemu-system-alpha + clipper + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-aarch64 + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + xlnx-zcu102 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + sbsa-ref + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + raspi3ap + cubieboard + verdex + netduino2 + xlnx-versal-virt + mps2-an386 + raspi3b + raspi3 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-cris + axis-dev88 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-i386 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-m68k + mcf5208evb + an5206 + q800 + next-cube + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblaze + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblazeel + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mips + malta + mipssim + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mipsel + malta + mipssim + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64 + malta + pica61 + mipssim + magnum + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64el + malta + mipssim + pica61 + magnum + boston + fuloong2e + fulong2e + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-ppc + g3beige + virtex-ml507 + mac99 + ppce500 + sam460ex + bamboo + 40p + ref405ep + mpc8544ds + taihu + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-riscv32 + spike + virt + opentitan + sifive_e + sifive_u + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-riscv64 + spike + virt + sifive_e + sifive_u + microchip-icicle-kit + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-s390x + s390-ccw-virtio-5.2 + s390-ccw-virtio + s390-ccw-virtio-4.0 + s390-ccw-virtio-3.1 + s390-ccw-virtio-2.6 + s390-ccw-virtio-2.12 + s390-ccw-virtio-2.9 + s390-ccw-virtio-5.1 + s390-ccw-virtio-3.0 + s390-ccw-virtio-4.2 + s390-ccw-virtio-2.5 + s390-ccw-virtio-2.11 + s390-ccw-virtio-2.8 + s390-ccw-virtio-5.0 + s390-ccw-virtio-4.1 + s390-ccw-virtio-2.4 + s390-ccw-virtio-2.10 + s390-ccw-virtio-2.7 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sh4 + shix + r2d + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sh4eb + shix + r2d + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sparc + SS-5 + SS-20 + LX + SPARCClassic + leon3_generic + SPARCbook + SS-4 + SS-600MP + SS-10 + Voyager + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sparc64 + sun4u + niagara + sun4v + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-x86_64 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensa + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensaeb + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + + diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-features.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-features.xml new file mode 100644 index 0000000..07111f0 --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-features.xml @@ -0,0 +1,961 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + x86_64 + Skylake-Client-IBRS + Intel + + + + + + + + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + hvm + + 64 + /usr/bin/qemu-system-alpha + clipper + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-aarch64 + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + xlnx-zcu102 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + sbsa-ref + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + raspi3ap + cubieboard + verdex + netduino2 + xlnx-versal-virt + mps2-an386 + raspi3b + raspi3 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-cris + axis-dev88 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-i386 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-m68k + mcf5208evb + an5206 + q800 + next-cube + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblaze + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblazeel + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mips + malta + mipssim + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mipsel + malta + mipssim + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64 + malta + pica61 + mipssim + magnum + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64el + malta + mipssim + pica61 + magnum + boston + fuloong2e + fulong2e + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-ppc + g3beige + virtex-ml507 + mac99 + ppce500 + sam460ex + bamboo + 40p + ref405ep + mpc8544ds + taihu + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-riscv32 + spike + virt + opentitan + sifive_e + sifive_u + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-riscv64 + spike + virt + sifive_e + sifive_u + microchip-icicle-kit + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-s390x + s390-ccw-virtio-5.2 + s390-ccw-virtio + s390-ccw-virtio-4.0 + s390-ccw-virtio-3.1 + s390-ccw-virtio-2.6 + s390-ccw-virtio-2.12 + s390-ccw-virtio-2.9 + s390-ccw-virtio-5.1 + s390-ccw-virtio-3.0 + s390-ccw-virtio-4.2 + s390-ccw-virtio-2.5 + s390-ccw-virtio-2.11 + s390-ccw-virtio-2.8 + s390-ccw-virtio-5.0 + s390-ccw-virtio-4.1 + s390-ccw-virtio-2.4 + s390-ccw-virtio-2.10 + s390-ccw-virtio-2.7 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sh4 + shix + r2d + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sh4eb + shix + r2d + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sparc + SS-5 + SS-20 + LX + SPARCClassic + leon3_generic + SPARCbook + SS-4 + SS-600MP + SS-10 + Voyager + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sparc64 + sun4u + niagara + sun4v + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-x86_64 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensa + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensaeb + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + + diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-pages.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-pages.xml new file mode 100644 index 0000000..cadd96f --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu-pages.xml @@ -0,0 +1,983 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + x86_64 + Skylake-Client-IBRS + Intel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + hvm + + 64 + /usr/bin/qemu-system-alpha + clipper + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-aarch64 + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + xlnx-zcu102 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + sbsa-ref + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + raspi3ap + cubieboard + verdex + netduino2 + xlnx-versal-virt + mps2-an386 + raspi3b + raspi3 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-cris + axis-dev88 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-i386 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-m68k + mcf5208evb + an5206 + q800 + next-cube + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblaze + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblazeel + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mips + malta + mipssim + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mipsel + malta + mipssim + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64 + malta + pica61 + mipssim + magnum + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64el + malta + mipssim + pica61 + magnum + boston + fuloong2e + fulong2e + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-ppc + g3beige + virtex-ml507 + mac99 + ppce500 + sam460ex + bamboo + 40p + ref405ep + mpc8544ds + taihu + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-riscv32 + spike + virt + opentitan + sifive_e + sifive_u + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-riscv64 + spike + virt + sifive_e + sifive_u + microchip-icicle-kit + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-s390x + s390-ccw-virtio-5.2 + s390-ccw-virtio + s390-ccw-virtio-4.0 + s390-ccw-virtio-3.1 + s390-ccw-virtio-2.6 + s390-ccw-virtio-2.12 + s390-ccw-virtio-2.9 + s390-ccw-virtio-5.1 + s390-ccw-virtio-3.0 + s390-ccw-virtio-4.2 + s390-ccw-virtio-2.5 + s390-ccw-virtio-2.11 + s390-ccw-virtio-2.8 + s390-ccw-virtio-5.0 + s390-ccw-virtio-4.1 + s390-ccw-virtio-2.4 + s390-ccw-virtio-2.10 + s390-ccw-virtio-2.7 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sh4 + shix + r2d + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sh4eb + shix + r2d + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sparc + SS-5 + SS-20 + LX + SPARCClassic + leon3_generic + SPARCbook + SS-4 + SS-600MP + SS-10 + Voyager + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sparc64 + sun4u + niagara + sun4v + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-x86_64 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensa + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensaeb + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + + diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu.xml new file mode 100644 index 0000000..b579b57 --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-cpu.xml @@ -0,0 +1,950 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + hvm + + 64 + /usr/bin/qemu-system-alpha + clipper + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-aarch64 + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + xlnx-zcu102 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + sbsa-ref + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + raspi3ap + cubieboard + verdex + netduino2 + xlnx-versal-virt + mps2-an386 + raspi3b + raspi3 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-cris + axis-dev88 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-i386 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-m68k + mcf5208evb + an5206 + q800 + next-cube + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblaze + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblazeel + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mips + malta + mipssim + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mipsel + malta + mipssim + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64 + malta + pica61 + mipssim + magnum + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64el + malta + mipssim + pica61 + magnum + boston + fuloong2e + fulong2e + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-ppc + g3beige + virtex-ml507 + mac99 + ppce500 + sam460ex + bamboo + 40p + ref405ep + mpc8544ds + taihu + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-riscv32 + spike + virt + opentitan + sifive_e + sifive_u + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-riscv64 + spike + virt + sifive_e + sifive_u + microchip-icicle-kit + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-s390x + s390-ccw-virtio-5.2 + s390-ccw-virtio + s390-ccw-virtio-4.0 + s390-ccw-virtio-3.1 + s390-ccw-virtio-2.6 + s390-ccw-virtio-2.12 + s390-ccw-virtio-2.9 + s390-ccw-virtio-5.1 + s390-ccw-virtio-3.0 + s390-ccw-virtio-4.2 + s390-ccw-virtio-2.5 + s390-ccw-virtio-2.11 + s390-ccw-virtio-2.8 + s390-ccw-virtio-5.0 + s390-ccw-virtio-4.1 + s390-ccw-virtio-2.4 + s390-ccw-virtio-2.10 + s390-ccw-virtio-2.7 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sh4 + shix + r2d + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sh4eb + shix + r2d + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sparc + SS-5 + SS-20 + LX + SPARCClassic + leon3_generic + SPARCbook + SS-4 + SS-600MP + SS-10 + Voyager + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sparc64 + sun4u + niagara + sun4v + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-x86_64 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensa + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensaeb + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + + diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guest-machines.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guest-machines.xml new file mode 100644 index 0000000..0cd14ec --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guest-machines.xml @@ -0,0 +1,896 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + x86_64 + Skylake-Client-IBRS + Intel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + hvm + + 64 + /usr/bin/qemu-system-alpha + clipper + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-aarch64 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-cris + axis-dev88 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-i386 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-m68k + mcf5208evb + an5206 + q800 + next-cube + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblaze + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblazeel + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mips + malta + mipssim + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mipsel + malta + mipssim + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64 + malta + pica61 + mipssim + magnum + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64el + malta + mipssim + pica61 + magnum + boston + fuloong2e + fulong2e + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-ppc + g3beige + virtex-ml507 + mac99 + ppce500 + sam460ex + bamboo + 40p + ref405ep + mpc8544ds + taihu + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-riscv32 + spike + virt + opentitan + sifive_e + sifive_u + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-riscv64 + spike + virt + sifive_e + sifive_u + microchip-icicle-kit + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-s390x + s390-ccw-virtio-5.2 + s390-ccw-virtio + s390-ccw-virtio-4.0 + s390-ccw-virtio-3.1 + s390-ccw-virtio-2.6 + s390-ccw-virtio-2.12 + s390-ccw-virtio-2.9 + s390-ccw-virtio-5.1 + s390-ccw-virtio-3.0 + s390-ccw-virtio-4.2 + s390-ccw-virtio-2.5 + s390-ccw-virtio-2.11 + s390-ccw-virtio-2.8 + s390-ccw-virtio-5.0 + s390-ccw-virtio-4.1 + s390-ccw-virtio-2.4 + s390-ccw-virtio-2.10 + s390-ccw-virtio-2.7 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sh4 + shix + r2d + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sh4eb + shix + r2d + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sparc + SS-5 + SS-20 + LX + SPARCClassic + leon3_generic + SPARCbook + SS-4 + SS-600MP + SS-10 + Voyager + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sparc64 + sun4u + niagara + sun4v + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-x86_64 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensa + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensaeb + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + + diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guests.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guests.xml new file mode 100644 index 0000000..e25da30 --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-guests.xml @@ -0,0 +1,82 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + x86_64 + Skylake-Client-IBRS + Intel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + + diff --git a/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-iommu.xml b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-iommu.xml new file mode 100644 index 0000000..485341f --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_capabilities_no-iommu.xml @@ -0,0 +1,985 @@ + + + + 9b2f12af-1fba-444c-b72b-9cbc43fb3ca5 + + x86_64 + Skylake-Client-IBRS + Intel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tcp + rdma + + + + + + 16161320 + 4040330 + 0 + 0 + + + + + + + + + + + + + + + + + none + 0 + + + + + hvm + + 64 + /usr/bin/qemu-system-alpha + clipper + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + cubieboard + verdex + netduino2 + mps2-an386 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-aarch64 + integratorcp + ast2600-evb + borzoi + spitz + virt-2.7 + nuri + mcimx7d-sabre + romulus-bmc + virt-3.0 + virt-5.0 + npcm750-evb + virt-2.10 + musca-b1 + virt-2.8 + realview-pbx-a9 + versatileab + kzm + musca-a + virt-3.1 + mcimx6ul-evk + virt-5.1 + smdkc210 + sx1 + virt-2.11 + imx25-pdk + virt-2.9 + orangepi-pc + z2 + virt-5.2 + virt + xilinx-zynq-a9 + xlnx-zcu102 + tosa + mps2-an500 + virt-2.12 + mps2-an521 + sabrelite + mps2-an511 + canon-a1100 + realview-eb + emcraft-sf2 + realview-pb-a8 + sbsa-ref + virt-4.0 + raspi1ap + palmetto-bmc + sx1-v1 + n810 + tacoma-bmc + n800 + virt-4.1 + quanta-gsj + versatilepb + terrier + mainstone + realview-eb-mpcore + supermicrox11-bmc + virt-4.2 + witherspoon-bmc + swift-bmc + vexpress-a9 + midway + musicpal + lm3s811evb + lm3s6965evb + microbit + mps2-an505 + mps2-an385 + raspi3ap + cubieboard + verdex + netduino2 + xlnx-versal-virt + mps2-an386 + raspi3b + raspi3 + raspi2b + raspi2 + vexpress-a15 + sonorapass-bmc + cheetah + virt-2.6 + ast2500-evb + highbank + akita + connex + netduinoplus2 + collie + raspi0 + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-cris + axis-dev88 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-i386 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-m68k + mcf5208evb + an5206 + q800 + next-cube + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblaze + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-microblazeel + petalogix-s3adsp1800 + petalogix-ml605 + xlnx-zynqmp-pmu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mips + malta + mipssim + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-mipsel + malta + mipssim + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64 + malta + pica61 + mipssim + magnum + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-mips64el + malta + mipssim + pica61 + magnum + boston + fuloong2e + fulong2e + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-ppc + g3beige + virtex-ml507 + mac99 + ppce500 + sam460ex + bamboo + 40p + ref405ep + mpc8544ds + taihu + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-ppc64 + pseries-5.2 + pseries + powernv9 + powernv + taihu + pseries-4.1 + mpc8544ds + pseries-2.5 + powernv10 + pseries-4.2 + pseries-2.6 + ppce500 + pseries-2.7 + pseries-3.0 + pseries-5.0 + 40p + pseries-2.8 + pseries-3.1 + pseries-5.1 + pseries-2.9 + bamboo + g3beige + pseries-2.12-sxxm + pseries-2.10 + virtex-ml507 + pseries-2.11 + pseries-2.1 + pseries-2.12 + pseries-2.2 + mac99 + sam460ex + ref405ep + pseries-2.3 + powernv8 + pseries-4.0 + pseries-2.4 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-riscv32 + spike + virt + opentitan + sifive_e + sifive_u + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-riscv64 + spike + virt + sifive_e + sifive_u + microchip-icicle-kit + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-s390x + s390-ccw-virtio-5.2 + s390-ccw-virtio + s390-ccw-virtio-4.0 + s390-ccw-virtio-3.1 + s390-ccw-virtio-2.6 + s390-ccw-virtio-2.12 + s390-ccw-virtio-2.9 + s390-ccw-virtio-5.1 + s390-ccw-virtio-3.0 + s390-ccw-virtio-4.2 + s390-ccw-virtio-2.5 + s390-ccw-virtio-2.11 + s390-ccw-virtio-2.8 + s390-ccw-virtio-5.0 + s390-ccw-virtio-4.1 + s390-ccw-virtio-2.4 + s390-ccw-virtio-2.10 + s390-ccw-virtio-2.7 + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sh4 + shix + r2d + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sh4eb + shix + r2d + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-sparc + SS-5 + SS-20 + LX + SPARCClassic + leon3_generic + SPARCbook + SS-4 + SS-600MP + SS-10 + Voyager + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-sparc64 + sun4u + niagara + sun4v + + + + + + + + + + + hvm + + 64 + /usr/bin/qemu-system-x86_64 + pc-i440fx-5.2 + pc + pc-q35-5.2 + q35 + pc-i440fx-2.12 + pc-i440fx-2.0 + pc-q35-4.2 + pc-i440fx-2.5 + pc-i440fx-4.2 + pc-i440fx-1.5 + pc-q35-2.7 + pc-i440fx-2.2 + pc-1.1 + pc-i440fx-2.7 + pc-q35-2.4 + pc-q35-2.10 + pc-i440fx-1.7 + pc-q35-5.1 + pc-q35-2.9 + pc-i440fx-2.11 + pc-q35-3.1 + pc-q35-4.1 + pc-i440fx-2.4 + pc-1.3 + pc-i440fx-4.1 + pc-i440fx-5.1 + pc-i440fx-2.9 + isapc + pc-i440fx-1.4 + pc-q35-2.6 + pc-i440fx-3.1 + pc-q35-2.12 + pc-i440fx-2.1 + pc-1.0 + pc-i440fx-2.6 + pc-q35-4.0.1 + pc-i440fx-1.6 + pc-q35-5.0 + pc-q35-2.8 + pc-i440fx-2.10 + pc-q35-3.0 + pc-q35-4.0 + microvm + pc-i440fx-2.3 + pc-1.2 + pc-i440fx-4.0 + pc-i440fx-5.0 + pc-i440fx-2.8 + pc-q35-2.5 + pc-i440fx-3.0 + pc-q35-2.11 + + + + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensa + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + hvm + + 32 + /usr/bin/qemu-system-xtensaeb + sim + kc705 + ml605 + ml605-nommu + virt + lx60-nommu + lx200 + lx200-nommu + lx60 + kc705-nommu + + + + + + + + + + + + -- cgit v1.2.3-55-g7522