summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/libvirt/domain/Domain.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/libvirt/domain/Domain.java')
-rw-r--r--src/main/java/org/openslx/libvirt/domain/Domain.java44
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" );
+ }
+ }
}