[libvirt] [PATCH] Domain object is converted

Bryan Kearney bkearney at redhat.com
Sat Jul 25 12:02:11 UTC 2009


---
 src/org/libvirt/Connect.java                     |    9 +
 src/org/libvirt/Domain.java                      |  307 +++++++++++++---------
 src/org/libvirt/DomainBlockStats.java            |   13 +
 src/org/libvirt/DomainInfo.java                  |   14 +
 src/org/libvirt/DomainInterfaceStats.java        |   17 ++
 src/org/libvirt/ErrorHandler.java                |   11 +-
 src/org/libvirt/Network.java                     |    8 +-
 src/org/libvirt/NodeInfo.java                    |    4 +-
 src/org/libvirt/SchedBooleanParameter.java       |   20 ++-
 src/org/libvirt/SchedDoubleParameter.java        |   13 +
 src/org/libvirt/SchedIntParameter.java           |   13 +
 src/org/libvirt/SchedLongParameter.java          |   14 +
 src/org/libvirt/SchedParameter.java              |   43 +++
 src/org/libvirt/SchedUintParameter.java          |   13 +
 src/org/libvirt/SchedUlongParameter.java         |   13 +
 src/org/libvirt/VcpuInfo.java                    |   13 +
 src/org/libvirt/jna/Libvirt.java                 |   42 +++-
 src/org/libvirt/jna/virDomainBlockStats.java     |   12 +
 src/org/libvirt/jna/virDomainInfo.java           |   13 +
 src/org/libvirt/jna/virDomainInterfaceStats.java |   16 ++
 src/org/libvirt/jna/virSchedParameter.java       |   11 +
 src/org/libvirt/jna/virSchedParameterValue.java  |   13 +
 src/org/libvirt/jna/virVcpuInfo.java             |   12 +
 src/test.java                                    |  154 ++++++-----
 24 files changed, 595 insertions(+), 203 deletions(-)
 create mode 100644 src/org/libvirt/jna/virDomainBlockStats.java
 create mode 100644 src/org/libvirt/jna/virDomainInfo.java
 create mode 100644 src/org/libvirt/jna/virDomainInterfaceStats.java
 create mode 100644 src/org/libvirt/jna/virSchedParameter.java
 create mode 100644 src/org/libvirt/jna/virSchedParameterValue.java
 create mode 100644 src/org/libvirt/jna/virVcpuInfo.java

diff --git a/src/org/libvirt/Connect.java b/src/org/libvirt/Connect.java
index 218bda3..bab1d23 100644
--- a/src/org/libvirt/Connect.java
+++ b/src/org/libvirt/Connect.java
@@ -820,4 +820,13 @@ public class Connect {
     protected void processError() throws LibvirtException {
         ErrorHandler.processError(libvirt, VCP) ;
     }
+    
+    public static int[] convertUUIDBytes(byte bytes[]) {
+        int[] returnValue = new int[Libvirt.VIR_UUID_BUFLEN] ;
+        for (int x = 0 ; x < Libvirt.VIR_UUID_BUFLEN ; x++) {
+            returnValue[x] = (int) bytes[x] ;
+        }
+        return returnValue ;
+    }
+                      
 }
diff --git a/src/org/libvirt/Domain.java b/src/org/libvirt/Domain.java
index e9b5d57..ab8cd94 100644
--- a/src/org/libvirt/Domain.java
+++ b/src/org/libvirt/Domain.java
@@ -1,6 +1,16 @@
 package org.libvirt;
 
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virDomainBlockStats;
+import org.libvirt.jna.virDomainInfo;
+import org.libvirt.jna.virDomainInterfaceStats;
+import org.libvirt.jna.virSchedParameter;
+import org.libvirt.jna.virVcpuInfo;
+
+import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
 import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
 
 public class Domain {
 
@@ -35,6 +45,11 @@ public class Domain {
 	 * The Connect Object that represents the Hypervisor of this Domain
 	 */
 	private Connect virConnect;
+	
+    /**
+     * The libvirt connection from the hypervisor
+     */
+    protected Libvirt libvirt ;	
 
 
 	/**
@@ -47,6 +62,7 @@ public class Domain {
 	Domain(Connect virConnect, Pointer VDP){
 		this.virConnect = virConnect;
 		this.VDP = VDP;
+        this.libvirt = virConnect.libvirt ;		
 	}
 
 	/**
@@ -59,11 +75,11 @@ public class Domain {
 	 * @see <a href="http://libvirt.org/format.html#Normal1" >The XML Description format </a>
 	 */
 	public String getXMLDesc(int flags) throws LibvirtException{
-//		return _getXMLDesc(VDP, flags);
-        throw new RuntimeException("Not Implemented") ;	    
+        String returnValue = libvirt.virDomainGetXMLDesc(VDP, flags) ;
+        processError() ;
+        return returnValue  ;    
 	}
 
-//	private native String _getXMLDesc(long VDP, int flags) throws LibvirtException;
 
 	/**
 	 * Provides a boolean value indicating whether the network is configured to be automatically started when the host machine boots.
@@ -72,13 +88,13 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public boolean getAutostart() throws LibvirtException{
-//		return _getAutostart(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        IntByReference autoStart = new IntByReference() ;
+        libvirt.virDomainGetAutostart(VDP, autoStart) ;
+        processError() ;        
+        return autoStart.getValue() != 0 ? true : false ; 
 	}
 
 
-//	private native boolean _getAutostart(long VDP) throws LibvirtException;
-
 	/**
 	 * Configures the network to be automatically started when the host machine boots.
 	 *
@@ -86,11 +102,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setAutostart(boolean autostart) throws LibvirtException{
-//			_setAutostart(VDP, autostart);
-        throw new RuntimeException("Not Implemented") ;	    
+        int autoValue = autostart ? 1 : 0 ;
+        libvirt.virDomainSetAutostart(VDP, autoValue) ;    
+        processError() ;  
 	}
 
-//	private native int _setAutostart(long VDP, boolean autostart) throws LibvirtException;
 
 	/**
 	 * Provides the connection object associated with a domain.
@@ -108,11 +124,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public int getID() throws LibvirtException{
-//		return _getID(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+	    int returnValue = libvirt.virDomainGetID(VDP);
+	    processError() ;
+	    return returnValue ;
 	}
 
-//	private native int _getID(long VDP) throws LibvirtException;
 
 
 	/**
@@ -123,12 +139,16 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public DomainInfo getInfo() throws LibvirtException{
-//		return _getInfo(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+	    DomainInfo returnValue = null ;
+	    virDomainInfo vInfo = new virDomainInfo() ;
+	    int success = libvirt.virDomainGetInfo(VDP, vInfo) ;
+	    processError() ;
+	    if (success == 0) {
+	        returnValue = new DomainInfo(vInfo) ;
+	    }
+	    return returnValue ;
 	}
 
-//	private native DomainInfo _getInfo(long VDP) throws LibvirtException;
-
 	/**
 	 * Retrieve the maximum amount of physical memory allocated to a domain.
 	 *
@@ -136,11 +156,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public long getMaxMemory() throws LibvirtException{
-//		return _getMaxMemory(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+	    NativeLong returnValue = libvirt.virDomainGetMaxMemory(VDP) ;
+	    processError() ;
+        return returnValue.longValue() ;	    
 	}
 
-//	private native long _getMaxMemory(long VDP) throws LibvirtException;
 
 	/**
 	 * * Dynamically change the maximum amount of physical memory allocated to a domain.
@@ -150,12 +170,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setMaxMemory(long memory) throws LibvirtException{
-//		 _setMaxMemory(VDP, memory);
-        throw new RuntimeException("Not Implemented") ;	    
+	    libvirt.virDomainSetMaxMemory(VDP, new NativeLong(memory)) ;
+	    processError() ;
 	}
 
-//	private native long _setMaxMemory(long VDP,  long memory) throws LibvirtException;
-
 
 	/**
 	 * Provides the maximum number of virtual CPUs supported for the guest VM.
@@ -166,12 +184,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public int getMaxVcpus() throws LibvirtException{
-//		return _getMaxVcpus(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        int returnValue = libvirt.virDomainGetMaxVcpus(VDP) ;
+        processError() ; 
+        return returnValue ;        
 	}
 
-//	private native int _getMaxVcpus(long VDP) throws LibvirtException;
-
 
 	/**
 	 * Gets the public name for this domain
@@ -180,11 +197,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public String getName() throws LibvirtException{
-//		return _getName(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        String returnValue = libvirt.virDomainGetName(VDP);
+        processError() ;
+        return returnValue ;    
 	}
 
-//	private native String _getName(long VDP) throws LibvirtException;
 
 	/**
 	 * Gets the type of domain operation system.
@@ -193,12 +210,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public String getOSType() throws LibvirtException{
-//		return _getOSType(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        String returnValue = libvirt.virDomainGetOSType(VDP);
+        processError() ;
+        return returnValue ;       
 	}
 
-//	private native String _getOSType(long VDP) throws LibvirtException;
-
 
 	/**
 	 * Gets the scheduler parameters.
@@ -207,11 +223,23 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public SchedParameter[] getSchedulerParameters() throws LibvirtException{
-//		return _getSchedulerParameters(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+	    IntByReference nParams = new IntByReference() ;
+	    SchedParameter[] returnValue = new SchedParameter[0] ; 
+	    String scheduler = libvirt.virDomainGetSchedulerType(VDP, nParams) ;
+	    processError() ;
+	    if (scheduler != null) {
+	        virSchedParameter[] nativeParams = new virSchedParameter[nParams.getValue()] ;
+	        returnValue = new SchedParameter[nParams.getValue()] ;
+	        libvirt.virDomainGetSchedulerParameters(VDP, nativeParams, nParams) ;
+	        processError() ;
+	        for (int x = 0 ; x < nParams.getValue() ; x++ ) {
+	            returnValue[x] = SchedParameter.create(nativeParams[x]) ;
+	        }
+	    } 
+	    
+	    return returnValue ;
 	}
 
-//	private native SchedParameter[] _getSchedulerParameters (long VDP) throws LibvirtException;
 
 	/**
 	 * Changes the scheduler parameters
@@ -220,11 +248,16 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setSchedulerParameters(SchedParameter[] params) throws LibvirtException{
-//		_setSchedulerParameters(VDP, params);
-        throw new RuntimeException("Not Implemented") ;	    
+        IntByReference nParams = new IntByReference() ;
+        nParams.setValue(params.length) ;
+        virSchedParameter[] input = new virSchedParameter[params.length] ; 
+        for (int x = 0 ; x < params.length ; x++) {
+            input[x] = SchedParameter.toNative(params[x]) ;
+        }
+        libvirt.virDomainSetSchedulerParameters(VDP, input, nParams) ;
+        processError() ;	    
 	}
 
-//	private native int _setSchedulerParameters(long VDP, SchedParameter[] params) throws LibvirtException;
 
 	//getSchedulerType
 	//We don't expose the nparams return value, it's only needed for the SchedulerParameters allocations,
@@ -236,11 +269,14 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public String[] getSchedulerType() throws LibvirtException{
-//		return _getSchedulerType(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        IntByReference nParams = new IntByReference() ;	    
+        String returnValue = libvirt.virDomainGetSchedulerType(VDP, nParams) ;
+        processError() ;
+        String[] array = new String[1] ;
+        array[0] = returnValue ;
+        return array;
 	}
 
-//	private native String[] _getSchedulerType(long VDP) throws LibvirtException;
 
 	/**
 	 * Get the UUID for this domain.
@@ -250,11 +286,16 @@ public class Domain {
 	 * @see <a href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
 	 */
 	public int[] getUUID() throws LibvirtException{
-//		return _getUUID(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN] ;
+        int success = libvirt.virDomainGetUUID(VDP, bytes) ;
+        processError() ;        
+        int[] returnValue = new int[0] ; 
+        if (success == 0) {
+            returnValue = Connect.convertUUIDBytes(bytes) ;
+        }
+        return returnValue ;  
 	}
-
-//	private native int[] _getUUID(long VDP) throws LibvirtException;
+	
 
 	/**
 	 * Gets the UUID for this domain as string.
@@ -264,12 +305,16 @@ public class Domain {
 	 * @see <a href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
 	 */
 	public String getUUIDString() throws LibvirtException{
-//		return _getUUIDString(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN] ;
+        int success = libvirt.virDomainGetUUIDString(VDP, bytes) ;
+        processError() ;        
+        String returnValue = null ; 
+        if (success == 0) {
+            returnValue = Native.toString(bytes) ;
+        }
+        return returnValue ;     
 	}
 
-//	private native String _getUUIDString(long VDP) throws LibvirtException;
-
 	/**
 	 * Extracts information about virtual CPUs of this domain
 	 *
@@ -277,11 +322,18 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public VcpuInfo[] getVcpusInfo() throws LibvirtException{
-//		return _getVcpusInfo(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+	    int cpuCount = this.getMaxVcpus() ;
+	    VcpuInfo[] returnValue = new VcpuInfo[cpuCount] ;
+	    virVcpuInfo[] infos = new virVcpuInfo[cpuCount] ;
+	    libvirt.virDomainGetVcpus(VDP, infos, cpuCount, null, 0) ;
+        processError() ;
+        for (int x = 0 ; x < cpuCount ; x++) {
+            returnValue[x] = new VcpuInfo(infos[x]) ;
+        }
+        return returnValue ;
 	}
 
-//	private native VcpuInfo[] _getVcpusInfo(long VDP) throws LibvirtException;
+
 
 	/**
 	 * Returns the cpumaps for this domain
@@ -291,12 +343,24 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public int[] getVcpusCpuMaps() throws LibvirtException{
-//		return _getVcpusCpuMaps(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+	    int[] returnValue = new int[0] ;
+	    int cpuCount = this.getMaxVcpus() ;
+	    
+	    if (cpuCount >0) {
+	        NodeInfo nodeInfo = virConnect.nodeInfo() ;
+	        int maplength = cpuMapLength(nodeInfo.maxCpus()) ;
+	        virVcpuInfo[] infos = new virVcpuInfo[cpuCount] ;
+	        returnValue = new int[cpuCount*maplength] ;
+	        byte[] cpumaps = new byte[cpuCount*maplength] ;
+	        libvirt.virDomainGetVcpus(VDP, infos, cpuCount, cpumaps, maplength) ;
+	        processError() ;	        
+	        for (int x =0 ; x < cpuCount*maplength ; x++) {
+	            returnValue[x] = (int) cpumaps[x] ;
+	        }
+	    }
+	    return returnValue ; 
 	}
 
-//	private native int[] _getVcpusCpuMaps(long VDP) throws LibvirtException;
-
 
 	/**
 	 * Dynamically changes the real CPUs which can be allocated to a virtual CPU.
@@ -307,11 +371,14 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void pinVcpu(int vcpu, int[] cpumap) throws LibvirtException{
-//		_pinVcpu(VDP, vcpu, cpumap);
-        throw new RuntimeException("Not Implemented") ;	    
+	    byte[] packedMap = new byte[cpumap.length] ;
+	    for (int x = 0 ; x < cpumap.length ; x++) {
+	        packedMap[x] = (byte) cpumap[x] ;
+	    }
+	    libvirt.virDomainPinVcpu(VDP, vcpu, packedMap, cpumap.length) ; 
+        processError() ;	    
 	}
 
-//	private native int _pinVcpu(long VDP, int vcpu, int[]cpumap) throws LibvirtException;
 
 	/**
 	 * Dynamically changes the number of virtual CPUs used by this domain.
@@ -322,11 +389,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setVcpus(int nvcpus) throws LibvirtException{
-//		_setVcpus(VDP, nvcpus);
-        throw new RuntimeException("Not Implemented") ;	    
+	    libvirt.virDomainSetVcpus(VDP, nvcpus) ;
+        processError() ;
 	}
 
-//	private native int _setVcpus(long VDP, int nvcpus) throws LibvirtException;
 
 	/**
 	 * Creates a virtual device attachment to backend.
@@ -335,12 +401,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void attachDevice(String xmlDesc) throws LibvirtException{
-//		_attachDevice(VDP, xmlDesc);
-        throw new RuntimeException("Not Implemented") ;	    
+	    libvirt.virDomainAttachDevice(VDP, xmlDesc);
+        processError() ;    
 	}
 
-//	private native int _attachDevice(long VDP, String xmlDesc) throws LibvirtException;
-
+	
 	/**
 	 * Destroys a virtual device attachment to backend.
 	 *
@@ -348,11 +413,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void detachDevice(String xmlDesc) throws LibvirtException{
-//		_detachDevice(VDP, xmlDesc);
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainDetachDevice(VDP, xmlDesc);
+        processError() ;  
 	}
 
-//	private native int _detachDevice(long VDP, String xmlDesc) throws LibvirtException;
 
 
 	/**
@@ -368,11 +432,12 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public DomainBlockStats blockStats(String path) throws LibvirtException{
-//		return _blockStats(VDP, path);
-        throw new RuntimeException("Not Implemented") ;	    
+	    virDomainBlockStats stats = new virDomainBlockStats() ;
+	    libvirt.virDomainBlockStats(VDP, path, stats, stats.size()) ;
+        processError() ;
+	    return new DomainBlockStats(stats) ;
 	}
-
-//	private native DomainBlockStats _blockStats(long VDP, String path) throws LibvirtException;
+	
 
 	/**
 	 * Returns network interface stats for interfaces attached to this domain.
@@ -386,11 +451,12 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public DomainInterfaceStats interfaceStats(String path) throws LibvirtException{
-//		return _interfaceStats(VDP, path);
-        throw new RuntimeException("Not Implemented") ;	    
+	    virDomainInterfaceStats stats = new virDomainInterfaceStats() ;
+        libvirt.virDomainInterfaceStats(VDP, path, stats, stats.size()) ;
+        processError() ;
+        return new DomainInterfaceStats(stats) ;   
 	}
 
-//	private native DomainInterfaceStats _interfaceStats(long VDP, String path) throws LibvirtException;
 
 	/**
 	 * Dumps the core of this domain on a given file for analysis.
@@ -401,11 +467,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void coreDump(String to, int flags) throws LibvirtException{
-//		_coreDump(VDP, to, flags);
-        throw new RuntimeException("Not Implemented") ;		
+	    libvirt.virDomainCoreDump(VDP, to, flags) ;
+	    processError() ;
 	}
 
-//	private native int _coreDump(long VDP, String to, int flags) throws LibvirtException;
 
 	/**
 	 * Launches this defined domain.
@@ -414,11 +479,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void create() throws LibvirtException{
-//		_create(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+		libvirt.virDomainCreate(VDP);
+        processError() ;  
 	}
 
-//	private native int _create(long VDP) throws LibvirtException;
 
 	/**
 	 * Destroys this domain object.
@@ -429,11 +493,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void destroy() throws LibvirtException{
-//		_destroy(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainDestroy(VDP);
+        processError() ;  	    
 	}
-
-//	private native int _destroy(long VDP) throws LibvirtException;
+	
 
 	/**
 	 * Frees this domain object.
@@ -443,12 +506,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void free() throws LibvirtException{
-//		_free(VDP);
-//		VDP=0;
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainFree(VDP);
+        processError() ;     
+		VDP=null ;
 	}
 
-//	private native int _free(long VDP) throws LibvirtException;
 
 
 	/**
@@ -478,11 +540,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public Domain migrate(Connect dconn, long flags, String dname, String uri, long bandwidth) throws LibvirtException{
-//		return new Domain(dconn, _migrate(VDP, dconn, flags, dname, uri, bandwidth));
-        throw new RuntimeException("Not Implemented") ;	    
+	    Pointer newPtr = libvirt.virDomainMigrate(VDP, dconn.VCP, new NativeLong(flags), dname, uri, new NativeLong(bandwidth)) ;
+	    processError() ;
+	    return new Domain(dconn, newPtr) ;  
 	}
 
-//	private native long _migrate(long VDP, Connect dconn, long flags, String dname, String uri, long bandwidth) throws LibvirtException;
 
 	/**
 	 * Reboot this domain, the domain object is still usable there after but the domain OS is being stopped for a restart.
@@ -492,11 +554,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void reboot(int flags) throws LibvirtException{
-//		_reboot(VDP, flags);
-        throw new RuntimeException("Not Implemented") ;	    
+		libvirt.virDomainReboot(VDP, flags);
+		processError() ;
 	}
 
-//	private native int _reboot(long VDP, int flags) throws LibvirtException;
 
 	/**
 	 * Suspends this active domain, the process is frozen without further access to CPU resources and I/O but the memory used by the domain at the hypervisor level will stay allocated.
@@ -505,11 +566,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void suspend() throws LibvirtException{
-//		_suspend(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainSuspend(VDP);
+        processError() ;    
 	}
 
-//	private native int _suspend(long VDP) throws LibvirtException;
 
 	/**
 	 * Resume this suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain().
@@ -518,11 +578,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void resume() throws LibvirtException{
-//		_resume(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainResume(VDP);
+        processError() ;    
 	}
 
-//	private native int _resume(long VDP) throws LibvirtException;
 
 	/**
 	 * Suspends this domain and saves its memory contents to a file on disk.
@@ -533,12 +592,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void save(String to) throws LibvirtException{
-//		_save(VDP, to);
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainSave(VDP, to);
+        processError() ;       
 	}
 
-//	private native int _save(long VDP, String to) throws LibvirtException;
-
+	
 	/**
 	 * Shuts down this domain, the domain object is still usable there after but the domain OS is being stopped.
 	 * Note that the guest OS may ignore the request.
@@ -547,11 +605,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void shutdown() throws LibvirtException{
-//		_shutdown(VDP);
-        throw new RuntimeException("Not Implemented") ;	    
+        libvirt.virDomainShutdown(VDP);
+        processError() ;     
 	}
 
-//	private native int _shutdown(long VDP) throws LibvirtException;
 
 	/**
 	 * undefines this domain but does not stop it if it is running
@@ -559,11 +616,10 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void undefine() throws LibvirtException{
-        throw new RuntimeException("Not Implemented") ;	    
-//		_undefine(VDP);
+        libvirt.virDomainUndefine(VDP);
+        processError() ;     
 	}
 
-//	private native int _undefine(long VDP) throws LibvirtException;
 
 	/**
 	 * Dynamically changes the target amount of physical memory allocated to this domain.
@@ -573,11 +629,26 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setMemory(long memory) throws LibvirtException{
-	    throw new RuntimeException("Not Implemented") ;
-//		_setMemory(VDP, memory);
+	    libvirt.virDomainSetMemory(VDP, new NativeLong(memory)) ;
+	    processError() ;
 	}
 
-//	private native int _setMemory(long VDP, long memory) throws LibvirtException;
+	/**
+	 * It returns the length (in bytes) required to store the complete
+	 * CPU map between a single virtual & all physical CPUs of a domain.
+	 * 
+	 */	
+	public int cpuMapLength(int maxCpus) {
+	    return  (((maxCpus)+7)/8) ;
+	}
+	
+	/**
+	 * Error handling logic to throw errors. Must be called after every libvirt
+	 * call.
+	 */
+    protected void processError() throws LibvirtException {
+        virConnect.processError() ;
+    }   	
 
 
 }
diff --git a/src/org/libvirt/DomainBlockStats.java b/src/org/libvirt/DomainBlockStats.java
index c5ed067..b48c066 100644
--- a/src/org/libvirt/DomainBlockStats.java
+++ b/src/org/libvirt/DomainBlockStats.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virDomainBlockStats;
+
 /**
  * This class holds the counters for block device statistics.
  *
@@ -12,4 +14,15 @@ public class DomainBlockStats {
 	public long  wr_req;
 	public long  wr_bytes;
 	public long  errs;
+	
+	public DomainBlockStats() {	    
+	}
+	
+	public DomainBlockStats(virDomainBlockStats vStats) {
+	    this.rd_req = vStats.rd_req ;
+        this.rd_bytes = vStats.rd_bytes ;
+        this.wr_req = vStats.wr_req ;
+        this.wr_bytes = vStats.wr_bytes ;
+        this.errs = vStats.errs ;        
+	}
 }
diff --git a/src/org/libvirt/DomainInfo.java b/src/org/libvirt/DomainInfo.java
index ec493ff..e6a03f8 100644
--- a/src/org/libvirt/DomainInfo.java
+++ b/src/org/libvirt/DomainInfo.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virDomainInfo;
+
 /**
  * This object is returned by Domain.getInfo()
  *
@@ -62,6 +64,18 @@ public class DomainInfo {
 	     */
 	    VIR_DOMAIN_CRASHED
 	}
+	
+	public DomainInfo() {
+	
+	}
+	
+	public DomainInfo(virDomainInfo info) {
+	    this.cpuTime = info.cpuTime ;
+	    this.maxMem = info.maxMem.longValue() ;
+	    this.memory = info.memory.longValue() ;
+	    this.nrVirtCpu = info.nrVirtCpu ;
+	    this.state = DomainState.values()[info.state] ;
+	}
 
 	public String toString(){
 		StringBuffer result = new StringBuffer("");
diff --git a/src/org/libvirt/DomainInterfaceStats.java b/src/org/libvirt/DomainInterfaceStats.java
index fd3d392..b60b628 100644
--- a/src/org/libvirt/DomainInterfaceStats.java
+++ b/src/org/libvirt/DomainInterfaceStats.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virDomainInterfaceStats;
+
 
 /**
  * The Domain.interfaceStats method returns th network counters in this object
@@ -16,4 +18,19 @@ public class DomainInterfaceStats {
 	public long tx_packets;
 	public long tx_errs;
 	public long tx_drop;
+	
+	public DomainInterfaceStats() {
+	    
+	}
+	
+	public DomainInterfaceStats(virDomainInterfaceStats vStats) {
+	    this.rx_bytes = vStats.rx_bytes ;
+        this.rx_packets = vStats.rx_packets ; 	  
+        this.rx_errs = vStats.rx_errs ;
+        this.rx_drop = vStats.rx_drop ;   
+        this.tx_bytes = vStats.tx_bytes ;
+        this.tx_packets = vStats.tx_packets ;   
+        this.tx_errs = vStats.tx_errs ;
+        this.tx_drop = vStats.tx_drop ;           
+	}
 }
diff --git a/src/org/libvirt/ErrorHandler.java b/src/org/libvirt/ErrorHandler.java
index 0e322ba..7f77937 100644
--- a/src/org/libvirt/ErrorHandler.java
+++ b/src/org/libvirt/ErrorHandler.java
@@ -9,11 +9,17 @@ public class ErrorHandler
 {
 
     public static void processError(Libvirt libvirt) throws LibvirtException {
-        
+        virError vError = new virError() ;
+        int errorCode = libvirt.virCopyLastError(vError) ;
+        if (errorCode > 0) {        
+            Error error = new Error(vError) ;
+            libvirt.virResetLastError() ;
+            throw new LibvirtException(error) ;
+        }        
     }
+    
     public static void processError(Libvirt libvirt, Pointer conn) throws LibvirtException
     {
-
         virError vError = new virError() ;
         int errorCode = libvirt.virConnCopyLastError(conn, vError) ;
         if (errorCode > 0) {        
@@ -21,6 +27,5 @@ public class ErrorHandler
             libvirt.virConnResetLastError(conn) ;
             throw new LibvirtException(error) ;
         }
-        
     }
 }
diff --git a/src/org/libvirt/Network.java b/src/org/libvirt/Network.java
index ce80f6f..c18f239 100644
--- a/src/org/libvirt/Network.java
+++ b/src/org/libvirt/Network.java
@@ -2,6 +2,7 @@ package org.libvirt;
 
 import org.libvirt.jna.Libvirt;
 
+import com.sun.jna.Native;
 import com.sun.jna.Pointer;
 import com.sun.jna.ptr.IntByReference;
 import com.sun.jna.ptr.PointerByReference;
@@ -133,10 +134,7 @@ public class Network {
         processError() ;	    
 	    int[] returnValue = new int[0] ; 
 	    if (success == 0) {
-	        returnValue = new int[Libvirt.VIR_UUID_BUFLEN] ;
-	        for (int x = 0 ; x < Libvirt.VIR_UUID_BUFLEN ; x++) {
-	            returnValue[x] = (int) bytes[x] ;
-	        }
+	        returnValue = Connect.convertUUIDBytes(bytes) ;
 	    }
         return returnValue ;   
 	}
@@ -154,7 +152,7 @@ public class Network {
         processError() ;        
         String returnValue = null ; 
         if (success == 0) {
-            returnValue = new String(bytes) ;
+            returnValue = Native.toString(bytes) ;
         }
         return returnValue ;   	    
 	}
diff --git a/src/org/libvirt/NodeInfo.java b/src/org/libvirt/NodeInfo.java
index 16855ca..0431ed9 100644
--- a/src/org/libvirt/NodeInfo.java
+++ b/src/org/libvirt/NodeInfo.java
@@ -2,6 +2,8 @@ package org.libvirt;
 
 import org.libvirt.jna.virNodeInfo;
 
+import com.sun.jna.Native;
+
 public class NodeInfo {
 	/**
 	 * string indicating the CPU model
@@ -41,7 +43,7 @@ public class NodeInfo {
 	}
 	
 	public NodeInfo(virNodeInfo vInfo) {
-//	    this.model = new String(vInfo.model) ;
+	    this.model = Native.toString(vInfo.model) ;
         this.memory = vInfo.memory.longValue() ;
         this.cpus = vInfo.cpus ;
         this.mhz = vInfo.mhz ;        
diff --git a/src/org/libvirt/SchedBooleanParameter.java b/src/org/libvirt/SchedBooleanParameter.java
index adde0ec..5e681ca 100644
--- a/src/org/libvirt/SchedBooleanParameter.java
+++ b/src/org/libvirt/SchedBooleanParameter.java
@@ -11,12 +11,30 @@ public final class SchedBooleanParameter  extends SchedParameter{
 	 * The parameter value
 	 */
 	public boolean value;
+	
+	public SchedBooleanParameter() {
+	    
+	}
+
+	public SchedBooleanParameter(boolean value)
+    {
+        this.value = value;
+    }
+	
+    public SchedBooleanParameter(byte value)
+    {
+        this.value = (((int)value) != 0)? true : false ;
+    }	
 
-	public String getValueAsString(){
+    public String getValueAsString(){
 		return Boolean.toString(value);
 	}
 
 	public String getTypeAsString(){
 		return "VIR_DOMAIN_SCHED_FIELD_BOOLEAN";
 	}
+	
+    public int getType() {
+        return 6 ;
+    }
 }
diff --git a/src/org/libvirt/SchedDoubleParameter.java b/src/org/libvirt/SchedDoubleParameter.java
index 72e1afa..21bc217 100644
--- a/src/org/libvirt/SchedDoubleParameter.java
+++ b/src/org/libvirt/SchedDoubleParameter.java
@@ -11,6 +11,15 @@ public final class SchedDoubleParameter extends SchedParameter{
 	 * The parameter value
 	 */
 	public double value;
+	
+    public SchedDoubleParameter() {
+        
+    }
+
+    public SchedDoubleParameter(double value)
+    {
+        this.value = value;
+    }	
 
 	public String getValueAsString(){
 		return Double.toString(value);
@@ -19,4 +28,8 @@ public final class SchedDoubleParameter extends SchedParameter{
 	public String getTypeAsString(){
 		return "VIR_DOMAIN_SCHED_FIELD_DOUBLE";
 	}
+	
+    public int getType() {
+        return 5 ;
+    }	
 }
diff --git a/src/org/libvirt/SchedIntParameter.java b/src/org/libvirt/SchedIntParameter.java
index 0db5e81..af13933 100644
--- a/src/org/libvirt/SchedIntParameter.java
+++ b/src/org/libvirt/SchedIntParameter.java
@@ -3,6 +3,15 @@ package org.libvirt;
 public final class SchedIntParameter extends SchedParameter {
 	public int value;
 
+    public SchedIntParameter() {
+        
+    }
+
+    public SchedIntParameter(int value)
+    {
+        this.value = value;
+    }   
+    
 	public String getValueAsString(){
 		return Integer.toString(value);
 	}
@@ -10,4 +19,8 @@ public final class SchedIntParameter extends SchedParameter {
 	public String getTypeAsString(){
 		return "VIR_DOMAIN_SCHED_FIELD_INT";
 	}
+	
+    public int getType() {
+        return 1 ;
+    }	
 }
diff --git a/src/org/libvirt/SchedLongParameter.java b/src/org/libvirt/SchedLongParameter.java
index fafc33c..1b07971 100644
--- a/src/org/libvirt/SchedLongParameter.java
+++ b/src/org/libvirt/SchedLongParameter.java
@@ -11,6 +11,15 @@ public final class SchedLongParameter extends SchedParameter{
 	 * The parameter value
 	 */
 	public long value;
+	
+    public SchedLongParameter() {
+        
+    }
+
+    public SchedLongParameter(long value)
+    {
+        this.value = value;
+    }   	
 
 	public String getValueAsString(){
 		return Long.toString(value);
@@ -19,4 +28,9 @@ public final class SchedLongParameter extends SchedParameter{
 	public String getTypeAsString(){
 		return "VIR_DOMAIN_SCHED_FIELD_LLONG";
 	}
+	
+    public int getType() {
+        return 2 ;
+    }	
+	
 }
diff --git a/src/org/libvirt/SchedParameter.java b/src/org/libvirt/SchedParameter.java
index 6ce7855..8f38ef8 100644
--- a/src/org/libvirt/SchedParameter.java
+++ b/src/org/libvirt/SchedParameter.java
@@ -1,5 +1,12 @@
 package org.libvirt;
 
+import java.util.Arrays;
+
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virSchedParameter;
+
+import com.sun.jna.Native;
+
 /**
  * The abstract parent of the actual Schedparameter classes
  *
@@ -25,5 +32,41 @@ public abstract class SchedParameter {
 	 * @return the Type of the parameter as string
 	 */
 	public abstract String getTypeAsString();
+	
+    /**
+     * The type of the parameter
+     *
+     * @return the Type of the parameter 
+     */	
+	public abstract int getType() ;
 
+	public static SchedParameter create(virSchedParameter vParam) {
+	    SchedParameter returnValue = null ;
+	    switch (vParam.type) {
+    	    case (1): returnValue = new SchedIntParameter(vParam.value.i) ;break ;
+    	    case (2): returnValue = new SchedUintParameter(vParam.value.ui) ;break ;
+            case (3): returnValue = new SchedLongParameter(vParam.value.l) ;break ;
+            case (4): returnValue = new SchedUlongParameter(vParam.value.ul) ;break ;
+            case (5): returnValue = new SchedDoubleParameter(vParam.value.d) ;break ;
+            case (6): returnValue = new SchedBooleanParameter(vParam.value.b) ;break ;             
+	    }
+	    returnValue.field = Native.toString(vParam.field) ;
+	    return returnValue ;
+	}
+	
+	public static virSchedParameter toNative(SchedParameter param) {
+	    virSchedParameter returnValue = new virSchedParameter() ;
+	    returnValue.field = Arrays.copyOf(param.field.getBytes(), Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH) ;
+	    returnValue.type = param.getType() ;
+        switch (param.getType()) {
+        case (1): returnValue.value.i = ((SchedIntParameter)param).value ;break ;
+        case (2): returnValue.value.ui = ((SchedUintParameter)param).value ;break ;
+        case (3): returnValue.value.l = ((SchedLongParameter)param).value ;break ;
+        case (4): returnValue.value.ul = ((SchedUlongParameter)param).value ;break ;
+        case (5): returnValue.value.d = ((SchedDoubleParameter)param).value ;break ;
+        case (6): returnValue.value.b = (byte)(((SchedBooleanParameter)param).value?1:0) ;break ;        
+            
+    }	    
+	    return returnValue ;
+	}
 }
diff --git a/src/org/libvirt/SchedUintParameter.java b/src/org/libvirt/SchedUintParameter.java
index e9882ec..8a6ab75 100644
--- a/src/org/libvirt/SchedUintParameter.java
+++ b/src/org/libvirt/SchedUintParameter.java
@@ -12,6 +12,15 @@ public final class SchedUintParameter extends SchedParameter {
 	 * The parameter value
 	 */
 	public int value;
+	
+    public SchedUintParameter() {
+        
+    }
+
+    public SchedUintParameter(int value)
+    {
+        this.value = value;
+    }       	
 
 	public String getValueAsString(){
 		return Integer.toString(value);
@@ -20,4 +29,8 @@ public final class SchedUintParameter extends SchedParameter {
 	public String getTypeAsString(){
 		return "VIR_DOMAIN_SCHED_FIELD_UINT";
 	}
+	
+    public int getType() {
+        return 3 ;
+    }	
 }
diff --git a/src/org/libvirt/SchedUlongParameter.java b/src/org/libvirt/SchedUlongParameter.java
index 96c1812..419c1a8 100644
--- a/src/org/libvirt/SchedUlongParameter.java
+++ b/src/org/libvirt/SchedUlongParameter.java
@@ -11,6 +11,15 @@ public final class SchedUlongParameter extends SchedParameter{
 	 * The parameter value
 	 */
 	public long value;
+	
+    public SchedUlongParameter() {
+        
+    }
+
+    public SchedUlongParameter(long value)
+    {
+        this.value = value;
+    }       	
 
 	public String getValueAsString(){
 		return Long.toString(value);
@@ -19,4 +28,8 @@ public final class SchedUlongParameter extends SchedParameter{
 	public String getTypeAsString(){
 		return "VIR_DOMAIN_SCHED_FIELD_ULLONG";
 	}
+	
+    public int getType() {
+        return 4 ;
+    }	
 }
diff --git a/src/org/libvirt/VcpuInfo.java b/src/org/libvirt/VcpuInfo.java
index 55490e2..b10c07d 100644
--- a/src/org/libvirt/VcpuInfo.java
+++ b/src/org/libvirt/VcpuInfo.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virVcpuInfo;
+
 public class VcpuInfo {
 	public int number;
 	public VcpuState state;
@@ -10,4 +12,15 @@ public class VcpuInfo {
 		VIR_VCPU_OFFLINE,
 		VIR_VCPU_RUNNING,
 		VIR_VCPU_BLOCKED};
+		
+	public VcpuInfo() {
+	    
+	}
+	
+	public VcpuInfo(virVcpuInfo vVcpu) {
+	    this.number = vVcpu.number ;
+	    this.cpuTime = vVcpu.cpuTime ;
+	    this.cpu = vVcpu.cpu ;
+	    this.state = VcpuState.values()[vVcpu.state] ;
+	}
 }
diff --git a/src/org/libvirt/jna/Libvirt.java b/src/org/libvirt/jna/Libvirt.java
index 8727447..ec67c6f 100644
--- a/src/org/libvirt/jna/Libvirt.java
+++ b/src/org/libvirt/jna/Libvirt.java
@@ -4,6 +4,7 @@ package org.libvirt.jna;
 import com.sun.jna.Callback;
 import com.sun.jna.Library ;
 import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
 import com.sun.jna.Pointer;
 import com.sun.jna.Structure.ByReference;
 import com.sun.jna.ptr.IntByReference;
@@ -16,7 +17,8 @@ public interface Libvirt extends Library
     
     // Constants we need
     public static int VIR_UUID_BUFLEN = 16 ;
-    public static int VIR_UUID_STRING_BUFLEN = (36+1) ;    
+    public static int VIR_UUID_STRING_BUFLEN = (36+1) ;
+    public static int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80 ;
     
     // Global functions
     public int virCopyLastError(virError error) ;
@@ -69,13 +71,45 @@ public interface Libvirt extends Library
     public int virNetworkUndefine(Pointer virConnectPtr) ;       
     
     // Domain functions
+    public int virDomainAttachDevice(Pointer virDomainPtr, String deviceXML) ;    
+    public int virDomainBlockStats(Pointer virDomainPtr, String path, virDomainBlockStats stats, int size) ;
+    public int virDomainCreate(Pointer virDomainPtr) ;       
     public Pointer virDomainCreateLinux(Pointer virConnectPtr, String xmlDesc, int flags) ;    
     public Pointer virDomainCreateXML(Pointer virConnectPtr, String xmlDesc, int flags) ;
-    public Pointer virDomainDefineXML(Pointer virConnectPtr, String xmlDesc) ;       
+    public int virDomainCoreDump(Pointer virDomainPtr, String to, int flags) ;
+    public Pointer virDomainDefineXML(Pointer virConnectPtr, String xmlDesc) ; 
+    public int virDomainDetachDevice(Pointer virDomainPtr, String deviceXML) ;  
+    public int virDomainDestroy(Pointer virDomainPtr) ;        
+    public int virDomainFree(Pointer virDomainPtr) ;       
+    public int virDomainGetAutostart(Pointer virDomainPtr, IntByReference value) ;
+    public int virDomainGetID(Pointer virDomainPtr) ;      
+    public int virDomainGetInfo(Pointer virDomainPtr, virDomainInfo vInfo) ;
+    public NativeLong virDomainGetMaxMemory(Pointer virDomainPtr) ;
+    public int virDomainGetMaxVcpus(Pointer virDomainPtr) ;
+    public String virDomainGetName(Pointer virDomainPtr) ;    
+    public String virDomainGetOSType(Pointer virDomainPtr) ;        
+    public int virDomainGetUUID(Pointer virDomainPtr, byte[] uuidString) ;    
+    public int virDomainGetUUIDString(Pointer virDomainPtr, byte[] uuidString) ;    
+    public String virDomainGetXMLDesc(Pointer virDomainPtr, int flags) ;
+    public String virDomainGetSchedulerType(Pointer virDomainPtr, IntByReference nparams) ;
+    public int virDomainGetSchedulerParameters(Pointer virDomainPtr, virSchedParameter[] params, IntByReference nparams) ;
+    public int virDomainGetVcpus(Pointer virDomainPtr, virVcpuInfo[] info, int maxInfo, byte[] cpumaps, int maplen) ;
+    public int virDomainInterfaceStats(Pointer virDomainPtr, String path, virDomainInterfaceStats stats, int size) ;
     public Pointer virDomainLookupByID(Pointer virConnectPtr, int id) ;
     public Pointer virDomainLookupByName(Pointer virConnectPtr, String name) ;    
     public Pointer virDomainLookupByUUID(Pointer virConnectPtr, String uuidstr) ;    
     public Pointer virDomainLookupByUUIDString(Pointer virConnectPtr, String uuidstr) ;
-      
-
+    public Pointer virDomainMigrate(Pointer virDomainPtr, Pointer virConnectPtr, NativeLong flags, String dname, String uri, NativeLong bandwidth) ;
+    public int virDomainPinVcpu(Pointer virDomainPtr, int vcpu, byte[] cpumap, int maplen) ;    
+    public int virDomainReboot(Pointer virDomainPtr, int flags) ;
+    public int virDomainResume(Pointer virDomainPtr) ;    
+    public int virDomainSave(Pointer virDomainPtr, String to) ; 
+    public int virDomainSetAutostart(Pointer virDomainPtr, int autoStart) ;
+    public int virDomainSetSchedulerParameters(Pointer virDomainPtr, virSchedParameter[] params, IntByReference nparams) ;     
+    public int virDomainSetMaxMemory(Pointer virDomainPtr, NativeLong maxMemory) ;
+    public int virDomainSetMemory(Pointer virDomainPtr, NativeLong maxMemory) ;    
+    public int virDomainSetVcpus(Pointer virDomainPtr, int nvcpus) ;    
+    public int virDomainShutdown(Pointer virDomainPtr) ;        
+    public int virDomainSuspend(Pointer virDomainPtr) ;    
+    public int virDomainUndefine(Pointer virDomainPtr) ;   
 }
diff --git a/src/org/libvirt/jna/virDomainBlockStats.java b/src/org/libvirt/jna/virDomainBlockStats.java
new file mode 100644
index 0000000..446e016
--- /dev/null
+++ b/src/org/libvirt/jna/virDomainBlockStats.java
@@ -0,0 +1,12 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virDomainBlockStats extends Structure
+{
+    public long rd_req ;
+    public long rd_bytes ;    
+    public long wr_req ;
+    public long wr_bytes ;    
+    public long errs ;    
+}
diff --git a/src/org/libvirt/jna/virDomainInfo.java b/src/org/libvirt/jna/virDomainInfo.java
new file mode 100644
index 0000000..15d4836
--- /dev/null
+++ b/src/org/libvirt/jna/virDomainInfo.java
@@ -0,0 +1,13 @@
+package org.libvirt.jna;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Structure ;
+
+public class virDomainInfo extends Structure
+{
+    public int state ;
+    public NativeLong maxMem ;
+    public NativeLong memory ;    
+    public short nrVirtCpu ;
+    public long cpuTime ;  
+}
diff --git a/src/org/libvirt/jna/virDomainInterfaceStats.java b/src/org/libvirt/jna/virDomainInterfaceStats.java
new file mode 100644
index 0000000..3fda2dd
--- /dev/null
+++ b/src/org/libvirt/jna/virDomainInterfaceStats.java
@@ -0,0 +1,16 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virDomainInterfaceStats extends Structure
+{
+    public long rx_bytes;
+    public long rx_packets;
+    public long rx_errs;
+    public long rx_drop;
+    public long tx_bytes;
+    public long tx_packets;
+    public long tx_errs;
+    public long tx_drop;
+    
+}
diff --git a/src/org/libvirt/jna/virSchedParameter.java b/src/org/libvirt/jna/virSchedParameter.java
new file mode 100644
index 0000000..f8440e1
--- /dev/null
+++ b/src/org/libvirt/jna/virSchedParameter.java
@@ -0,0 +1,11 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virSchedParameter extends Structure 
+{
+    public byte field[] = new byte[Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH] ;
+    public int type ;
+    public virSchedParameterValue value ;
+    
+}
diff --git a/src/org/libvirt/jna/virSchedParameterValue.java b/src/org/libvirt/jna/virSchedParameterValue.java
new file mode 100644
index 0000000..ff2cdfc
--- /dev/null
+++ b/src/org/libvirt/jna/virSchedParameterValue.java
@@ -0,0 +1,13 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virSchedParameterValue extends Structure
+{
+        public int i;                          /* data for integer case */
+        public int ui;        /* data for unsigned integer case */
+        public long  l;        /* data for long long integer case */
+        public long  ul;      /* data for unsigned long long integer case */
+        public double d;       /* data for double case */
+        public byte b;         /* data for char case */
+}
diff --git a/src/org/libvirt/jna/virVcpuInfo.java b/src/org/libvirt/jna/virVcpuInfo.java
new file mode 100644
index 0000000..ba72ce8
--- /dev/null
+++ b/src/org/libvirt/jna/virVcpuInfo.java
@@ -0,0 +1,12 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virVcpuInfo extends Structure
+{
+    public int number ;
+    public int state ;
+    public long cpuTime ;
+    public int cpu ;
+ 
+}
diff --git a/src/test.java b/src/test.java
index a7d7ec8..40e0afc 100644
--- a/src/test.java
+++ b/src/test.java
@@ -177,81 +177,93 @@ public class test {
 		
 		//Domain stuff
 		
-//		try{
+		try{
 //
 //			
 //			//Domain lookup
-//			//Domain testDomain=conn.domainLookupByID(1);
-//			//Domain testDomain=conn.domainLookupByName("test");
-//			//Domain testDomain=conn.domainLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e69");
+			//Domain testDomain=conn.domainLookupByID(1);
+			//Domain testDomain=conn.domainLookupByName("test");
+			//Domain testDomain=conn.domainLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e69");
+		    Domain testDomain = conn.domainLookupByID(1);
+		    System.out.println("domainLookupByID: " + testDomain) ;
+            testDomain = conn.domainLookupByName("test");
+            System.out.println("domainLookupByName: " + testDomain) ;		    
 //			Domain testDomain=conn.domainLookupByUUID(UUID);
-//			
-//			//Exercise the getter methods on the default domain
-//			System.out.println("virDomainGetXMLDesc:" + testDomain.getXMLDesc(0));
-//			System.out.println("virDomainGetAutostart:" + testDomain.getAutostart());
-//			System.out.println("virDomainGetConnect:" + testDomain.getConnect());
-//			System.out.println("virDomainGetIDt:" + testDomain.getID());
-//			System.out.println("virDomainGetInfo:" + testDomain.getInfo());
-//			System.out.println("virDomainGetMaxMemory:" + testDomain.getMaxMemory());
-//			//Should fail, test driver does not support it
-//			//System.out.println("virDomainGetMaxVcpus:" + testDomain.getMaxVcpus());
-//			System.out.println("virDomainGetName:" + testDomain.getName());
-//			System.out.println("virDomainGetOSType:" + testDomain.getOSType());
-//			System.out.println("virDomainGetSchedulerType:" + testDomain.getSchedulerType());
-//			System.out.println("virDomainGetSchedulerParameters:" + testDomain.getSchedulerParameters());
-//			//Iterate over the parameters the painful way
-//			for(SchedParameter c: testDomain.getSchedulerParameters()){
-//				if (c instanceof SchedIntParameter)
-//					System.out.println("Int:" + ((SchedIntParameter)c).field +":"+ ((SchedIntParameter)c).value);
-//				if (c instanceof SchedUintParameter)
-//					System.out.println("Uint:" + ((SchedUintParameter)c).field  +":"+  ((SchedUintParameter)c).value);
-//				if (c instanceof SchedLongParameter)
-//					System.out.println("Long:" + ((SchedLongParameter)c).field  +":"+  ((SchedLongParameter)c).value);
-//				if (c instanceof SchedUlongParameter)
-//					System.out.println("Ulong:" + ((SchedUlongParameter)c).field  +":"+  ((SchedUlongParameter)c).value);
-//				if (c instanceof SchedDoubleParameter)
-//					System.out.println("Double:" + ((SchedDoubleParameter)c).field  +":"+  ((SchedDoubleParameter)c).value);
-//				if (c instanceof SchedBooleanParameter)
-//					System.out.println("Boolean:" + ((SchedBooleanParameter)c).field  +":"+  ((SchedBooleanParameter)c).value);
-//			}
-//			//Iterate over the parameters the easy way
-//			for(SchedParameter c: testDomain.getSchedulerParameters()){
-//				System.out.println(c.getTypeAsString() +":"+ c.field +":"+  c.getValueAsString());
-//			}
-//			System.out.println("virDomainGetUUID:" + testDomain.getUUID());
-//			for(int c: testDomain.getUUID())
-//				System.out.print(Integer.toHexString(c));
-//			System.out.println();
-//			System.out.println("virDomainGetUUIDString:" + testDomain.getUUIDString());
-//			//Should fail, unimplemented in test driver		
-//			//System.out.println("virDomainGetVcpusInfo:" + testDomain.getVcpusInfo());
-//			//Same as above
-//			//System.out.println("virDomainGetVcpusCpuMap:" + testDomain.getVcpusCpuMaps());
-//			//Should test pinVcpu, when we test with real xen
-//			//Here
-//			//Attach default network to test domain
-//			//System.out.println("virDomainGetVcpusCpuMap:" + testDomain.getVcpusCpuMaps());
-//			
-//			//Should test interfacestats and blockstats with real xen
-//			
-//			//Close the connection
-//			
-//			conn.close();
-//		} catch (LibvirtException e){
-//			System.out.println("exception caught:"+e);
-//			System.out.println(e.getError());
-//		}
-//		
-//		
-//		
-//		try{
-//			//We should get an exception, not a crash
-//			System.out.println(conn.getHostName());
-//		}catch (LibvirtException e){
-//			System.out.println("exception caught:"+e);
-//			System.out.println(e.getError());
-//		}
-//		System.out.println();
+//          System.out.println("domainLookupByUUID: " + testDomain) ;               
+			
+			//Exercise the getter methods on the default domain
+			System.out.println("virDomainGetXMLDesc:" + testDomain.getXMLDesc(0));
+			System.out.println("virDomainGetAutostart:" + testDomain.getAutostart());
+			System.out.println("virDomainGetConnect:" + testDomain.getConnect());
+			System.out.println("virDomainGetID:" + testDomain.getID());
+			System.out.println("virDomainGetInfo:" + testDomain.getInfo());
+			System.out.println("virDomainGetMaxMemory:" + testDomain.getMaxMemory());
+			//Should fail, test driver does not support it
+			try {
+			    System.out.println("virDomainGetMaxVcpus:" + testDomain.getMaxVcpus());
+	            System.out.println(FIXME) ;     
+			}
+			catch (LibvirtException e) {
+			    
+			}
+			System.out.println("virDomainGetName:" + testDomain.getName());
+			System.out.println("virDomainGetOSType:" + testDomain.getOSType());
+			System.out.println("virDomainGetSchedulerType:" + testDomain.getSchedulerType());
+			System.out.println("virDomainGetSchedulerParameters:" + testDomain.getSchedulerParameters());
+			//Iterate over the parameters the painful way
+			for(SchedParameter c: testDomain.getSchedulerParameters()){
+				if (c instanceof SchedIntParameter)
+					System.out.println("Int:" + ((SchedIntParameter)c).field +":"+ ((SchedIntParameter)c).value);
+				if (c instanceof SchedUintParameter)
+					System.out.println("Uint:" + ((SchedUintParameter)c).field  +":"+  ((SchedUintParameter)c).value);
+				if (c instanceof SchedLongParameter)
+					System.out.println("Long:" + ((SchedLongParameter)c).field  +":"+  ((SchedLongParameter)c).value);
+				if (c instanceof SchedUlongParameter)
+					System.out.println("Ulong:" + ((SchedUlongParameter)c).field  +":"+  ((SchedUlongParameter)c).value);
+				if (c instanceof SchedDoubleParameter)
+					System.out.println("Double:" + ((SchedDoubleParameter)c).field  +":"+  ((SchedDoubleParameter)c).value);
+				if (c instanceof SchedBooleanParameter)
+					System.out.println("Boolean:" + ((SchedBooleanParameter)c).field  +":"+  ((SchedBooleanParameter)c).value);
+			}
+			//Iterate over the parameters the easy way
+			for(SchedParameter c: testDomain.getSchedulerParameters()){
+				System.out.println(c.getTypeAsString() +":"+ c.field +":"+  c.getValueAsString());
+			}
+			System.out.println("virDomainGetUUID:" + testDomain.getUUID());
+            System.out.println(FIXME) ;   			
+			for(int c: testDomain.getUUID())
+				System.out.print(String.format("%02x", c));
+			System.out.println();
+			System.out.println("virDomainGetUUIDString:" + testDomain.getUUIDString());
+			//Should fail, unimplemented in test driver		
+			//System.out.println("virDomainGetVcpusInfo:" + testDomain.getVcpusInfo());
+			//Same as above
+			//System.out.println("virDomainGetVcpusCpuMap:" + testDomain.getVcpusCpuMaps());
+			//Should test pinVcpu, when we test with real xen
+			//Here
+			//Attach default network to test domain
+			//System.out.println("virDomainGetVcpusCpuMap:" + testDomain.getVcpusCpuMaps());
+			
+			//Should test interfacestats and blockstats with real xen
+			
+			//Close the connection
+			
+			conn.close();
+		} catch (LibvirtException e){
+			System.out.println("exception caught:"+e);
+			System.out.println(e.getError());
+		}
+		
+		
+		
+		try{
+			//We should get an exception, not a crash
+			System.out.println(conn.getHostName());
+		}catch (LibvirtException e){
+			System.out.println("exception caught:"+e);
+			System.out.println(e.getError());
+		}
+		System.out.println("Fini!");
 	}
 
 }
-- 
1.6.0.6




More information about the libvir-list mailing list