diff options
author | Simon Rettberg | 2023-07-26 16:10:08 +0200 |
---|---|---|
committer | Simon Rettberg | 2023-07-26 16:10:08 +0200 |
commit | 0214e54162f75e6749c6423d79c5dee90b1a4226 (patch) | |
tree | fbda144d98633294b78e6542fdeab5b7a64666c2 /src/main/java/org/openslx/libvirt/domain/Domain.java | |
parent | [libvirt] Extend setFeatureKvmHiddenState to fully fool Windows (diff) | |
download | master-sync-shared-0214e54162f75e6749c6423d79c5dee90b1a4226.tar.gz master-sync-shared-0214e54162f75e6749c6423d79c5dee90b1a4226.tar.xz master-sync-shared-0214e54162f75e6749c6423d79c5dee90b1a4226.zip |
[libvirt] Add methods for setting CPU migratable and pinning
Diffstat (limited to 'src/main/java/org/openslx/libvirt/domain/Domain.java')
-rw-r--r-- | src/main/java/org/openslx/libvirt/domain/Domain.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/libvirt/domain/Domain.java b/src/main/java/org/openslx/libvirt/domain/Domain.java index 9dc7200..a8b57ff 100644 --- a/src/main/java/org/openslx/libvirt/domain/Domain.java +++ b/src/main/java/org/openslx/libvirt/domain/Domain.java @@ -731,6 +731,22 @@ public class Domain extends LibvirtXmlDocument } /** + * Returns if the CPU migratable flag is set in the Libvirt domain XML document. + */ + public boolean getCpuMigratable() + { + return this.getRootXmlNode().getXmlElementAttributeValueAsBool( "cpu", "migratable" ); + } + + /** + * Sets if vCPU is migratable in the Libvirt domain XML document. + */ + public void setCpuMigratable( boolean migratable ) + { + this.getRootXmlNode().setXmlElementAttributeValueOnOff( "cpu", "migratable", migratable ); + } + + /** * CPU checks specifiable for a virtual machine in the Libvirt domain XML document. * * @author Manuel Bentele @@ -1689,4 +1705,32 @@ public class Domain extends LibvirtXmlDocument interfaceDevice.setSource( "" ); } } + + /** + * Remove any existing CPU pinning and numa config + */ + public void resetCpuPin() + { + this.getRootXmlNode().removeXmlElement( "cputune" ); + this.getRootXmlNode().removeXmlElement( "numatune" ); + } + + public void addCpuPin( int virtualCore, int hostCore ) + { + final Element rootElement = Element.class.cast( this.getRootXmlNode().getXmlBaseNode() ); + final Document xmlDocument = this.getRootXmlNode().getXmlDocument(); + Node cpuTune = this.getRootXmlNode().getXmlElement( "cputune" ); + if ( cpuTune == null ) { + cpuTune = xmlDocument.createElement( "cputune" ); + rootElement.appendChild( cpuTune ); + } + Element pin = xmlDocument.createElement( "vcpupin" ); + pin.setAttribute( "vcpu", Integer.toString( virtualCore ) ); + pin.setAttribute( "cpuset", Integer.toString( hostCore ) ); + cpuTune.appendChild( pin ); + Node vcpuNode = this.getRootXmlNode().getXmlElement( "vcpu" ); + if ( vcpuNode instanceof Element ) { + ( (Element)vcpuNode ).setAttribute( "placement", "static" ); + } + } } |