---
src/org/libvirt/Connect.java | 336 +++++++++++++++++++---------------
src/org/libvirt/Domain.java | 183 +++++++++++--------
src/org/libvirt/Error.java | 21 ++
src/org/libvirt/ErrorHandler.java | 22 +++
src/org/libvirt/Network.java | 74 +++++---
src/org/libvirt/NodeInfo.java | 16 ++
src/org/libvirt/jna/Libvirt.java | 66 +++++++
src/org/libvirt/jna/virError.java | 19 ++
src/org/libvirt/jna/virNodeInfo.java | 19 ++
src/test.java | 237 ++++++++++++------------
10 files changed, 630 insertions(+), 363 deletions(-)
create mode 100644 src/org/libvirt/ErrorHandler.java
create mode 100644 src/org/libvirt/jna/Libvirt.java
create mode 100644 src/org/libvirt/jna/virError.java
create mode 100644 src/org/libvirt/jna/virNodeInfo.java
diff --git a/src/org/libvirt/Connect.java b/src/org/libvirt/Connect.java
index 4271937..bc560d0 100644
--- a/src/org/libvirt/Connect.java
+++ b/src/org/libvirt/Connect.java
@@ -3,6 +3,14 @@ package org.libvirt;
import org.libvirt.LibvirtException;
import org.libvirt.StoragePool;
import org.libvirt.StorageVol;
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virError;
+import org.libvirt.jna.virNodeInfo;
+
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.ByReference;
+import com.sun.jna.ptr.LongByReference;
/**
* The Connect object represents a connection to a local or remote hypervisor/driver.
@@ -14,17 +22,20 @@ public class Connect {
// Load the native part
static {
- System.loadLibrary("virt_jni");
- _virInitialize();
+ Libvirt.INSTANCE.virInitialize() ;
+ Libvirt.INSTANCE.virSetErrorFunc(0, ErrorHandler.INSTANCE) ;
}
-
/**
* the native virConnectPtr.
*/
- long VCP;
+ protected Pointer VCP;
- private static native int _virInitialize();
+
+ /**
+ * The libvirt library
+ */
+ Libvirt libvirt = Libvirt.INSTANCE ;
/**
* Construct a Connect object from a known native virConnectPtr
@@ -32,8 +43,9 @@ public class Connect {
*
* @param VCP the virConnectPtr pointing to an existing native virConnect structure
*/
+ @Deprecated
Connect(long VCP) {
- this.VCP = VCP;
+ throw new RuntimeException("No longer supported") ;
}
/**
@@ -46,10 +58,13 @@ public class Connect {
*/
public Connect(String uri, boolean readOnly) throws LibvirtException {
if (readOnly) {
- VCP = _openReadOnly(uri);
+ VCP = libvirt.virConnectOpenReadOnly(uri) ;
} else {
- VCP = _open(uri);
+ VCP = libvirt.virConnectOpen(uri) ;
}
+ // Check for an error
+// processError(libvirt.virGetLastError()) ;
+ libvirt.virConnSetErrorFunc(VCP,0,ErrorHandler.INSTANCE) ;
}
/**
@@ -63,7 +78,8 @@ public class Connect {
* @see <a
href="http://libvirt.org/uri.html">The URI
documentation</a>
*/
public Connect(String uri, ConnectAuth auth, int flags) throws LibvirtException {
- VCP = _openAuth(uri, auth, flags);
+ throw new RuntimeException("Not Implemented") ;
+// VCP = _openAuth(uri, auth, flags);
}
/**
@@ -74,7 +90,7 @@ public class Connect {
* @see <a
href="http://libvirt.org/uri.html">The URI
documentation</a>
*/
public Connect(String uri) throws LibvirtException {
- VCP = _open(uri);
+ VCP = libvirt.virConnectOpen(uri) ;
}
public void finalize() throws LibvirtException {
@@ -88,15 +104,13 @@ public class Connect {
* @throws LibvirtException
*/
public void close() throws LibvirtException {
- _close(VCP);
+ libvirt.virConnectClose(VCP) ;
// If leave an invalid pointer dangling around JVM crashes and burns if
// someone tries to call a method on us
// We rely on the underlying libvirt error handling to detect that it's called with
a null virConnectPointer
- VCP = 0;
+ VCP = null;
}
- private native int _close(long VCP) throws LibvirtException;
-
/**
* Provides capabilities of the hypervisor / driver.
@@ -107,11 +121,9 @@ public class Connect {
*
*/
public String getCapabilities() throws LibvirtException {
- return _getCapabilities(VCP);
+ return libvirt.virConnectGetCapabilities(VCP) ;
}
- private native String _getCapabilities(long VCP) throws LibvirtException;
-
/**
* Returns the system hostname on which the hypervisor is running.
@@ -122,11 +134,11 @@ public class Connect {
* @throws LibvirtException
*/
public String getHostName() throws LibvirtException {
- return _getHostName(VCP);
+ String returnValue = libvirt.virConnectGetHostname(VCP) ;
+ return returnValue ;
+
}
- private native String _getHostName(long VCP) throws LibvirtException;
-
/**
* Provides the maximum number of virtual CPUs supported for a guest VM of a specific
type.
@@ -137,12 +149,9 @@ public class Connect {
* @throws LibvirtException
*/
public int getMaxVcpus(String type) throws LibvirtException {
- return _getMaxVcpus(VCP, type);
+ return libvirt.virConnectGetMaxVcpus(VCP, type) ;
}
- private native int _getMaxVcpus(long VCP, String type)
- throws LibvirtException;
-
/**
* Gets the name of the Hypervisor software used.
@@ -151,11 +160,10 @@ public class Connect {
* @throws LibvirtException
*/
public String getType() throws LibvirtException {
- return _getType(VCP);
+ return libvirt.virConnectGetType(VCP) ;
}
- private native String _getType(long VCP) throws LibvirtException;
-
+
/**
* Returns the URI (name) of the hypervisor connection.
@@ -166,10 +174,9 @@ public class Connect {
* @throws LibvirtException
*/
public String getURI() throws LibvirtException {
- return _getURI(VCP);
+ return libvirt.virConnectGetURI(VCP) ;
}
- private native String _getURI(long VCP) throws LibvirtException;
/**
@@ -181,24 +188,25 @@ public class Connect {
* @throws LibvirtException
*/
public long getVersion() throws LibvirtException {
- return _getVersion(VCP);
+ LongByReference hvVer = new LongByReference() ;
+ libvirt.virConnectGetVersion(VCP, hvVer) ;
+ return hvVer.getValue();
}
- private native long _getVersion(long VCP) throws LibvirtException;
-
/**
* Gets the version of the native libvirt library that the JNI part is linked to.
*
-// * @return major * 1,000,000 + minor * 1,000 + release
+ * @return major * 1,000,000 + minor * 1,000 + release
* @throws LibvirtException
*/
public long getLibVirVersion() throws LibvirtException {
- return _virGetLibVirVersion();
+ LongByReference libVer = new LongByReference() ;
+ LongByReference typeVer = new LongByReference() ;
+ libvirt.virGetVersion(libVer, null, typeVer) ;
+ return libVer.getValue();
}
- private native long _virGetLibVirVersion() throws LibvirtException;
-
/**
* Returns the version of the hypervisor against which the library was compiled.
@@ -209,12 +217,12 @@ public class Connect {
* @throws LibvirtException
*/
public long GetHypervisorVersion(String type) throws LibvirtException {
- return _virGetHypervisorVersion(type);
+ LongByReference libVer = new LongByReference() ;
+ LongByReference typeVer = new LongByReference() ;
+ libvirt.virGetVersion(libVer, type, typeVer) ;
+ return libVer.getValue();
}
- private native long _virGetHypervisorVersion(String type)
- throws LibvirtException;
-
/**
* Lists the names of the defined but inactive domains
@@ -223,12 +231,14 @@ public class Connect {
* @throws LibvirtException
*/
public String[] listDefinedDomains() throws LibvirtException {
- return _listDefinedDomains(VCP);
+ int maxnames = this.numOfDefinedDomains() ;
+ String[] names = new String[maxnames] ;
+ if (maxnames > 0) {
+ libvirt.virConnectListDefinedDomains(VCP, names, maxnames) ;
+ }
+ return names ;
}
- private native String[] _listDefinedDomains(long VCP)
- throws LibvirtException;
-
/**
* Lists the inactive networks
@@ -237,12 +247,15 @@ public class Connect {
* @throws LibvirtException
*/
public String[] listDefinedNetworks() throws LibvirtException {
- return _listDefinedNetworks(VCP);
+ int maxnames = this.numOfDefinedNetworks() ;
+ String[] names = new String[maxnames] ;
+
+ if (maxnames > 0) {
+ libvirt.virConnectListDefinedNetworks(VCP, names, maxnames) ;
+ }
+ return names ;
}
- private native String[] _listDefinedNetworks(long VCP)
- throws LibvirtException;
-
/**
* Lists the active domains.
@@ -251,10 +264,15 @@ public class Connect {
* @throws LibvirtException
*/
public int[] listDomains() throws LibvirtException {
- return _listDomains(VCP);
+ int maxids = this.numOfDomains() ;
+ int[] ids = new int[maxids] ;
+
+ if (maxids > 0) {
+ libvirt.virConnectListDomains(VCP, ids, maxids) ;
+ }
+ return ids ;
}
- private native int[] _listDomains(long VCP) throws LibvirtException;
/**
* Lists the active networks.
@@ -263,11 +281,15 @@ public class Connect {
* @throws LibvirtException
*/
public String[] listNetworks() throws LibvirtException {
- return _listNetworks(VCP);
+ int maxnames = this.numOfNetworks() ;
+ String[] names = new String[maxnames] ;
+
+ if (maxnames > 0) {
+ libvirt.virConnectListNetworks(VCP, names, maxnames) ;
+ }
+ return names ;
}
- private native String[] _listNetworks(long VCP) throws LibvirtException;
-
/**
* Provides the number of inactive domains.
@@ -276,10 +298,9 @@ public class Connect {
* @throws LibvirtException
*/
public int numOfDefinedDomains() throws LibvirtException {
- return _numOfDefinedDomains(VCP);
+ return libvirt.virConnectNumOfDefinedDomains(VCP) ;
}
- private native int _numOfDefinedDomains(long VCP) throws LibvirtException;
/**
@@ -289,11 +310,10 @@ public class Connect {
* @throws LibvirtException
*/
public int numOfDefinedNetworks() throws LibvirtException {
- return _numOfDefinedNetworks(VCP);
+ return libvirt.virConnectNumOfDefinedNetworks(VCP) ;
}
- private native int _numOfDefinedNetworks(long VCP) throws LibvirtException;
-
+
/**
* Provides the number of active domains.
*
@@ -301,11 +321,9 @@ public class Connect {
* @throws LibvirtException
*/
public int numOfDomains() throws LibvirtException {
- return _numOfDomains(VCP);
+ return libvirt.virConnectNumOfDomains(VCP) ;
}
- private native int _numOfDomains(long VCP) throws LibvirtException;
-
/**
* Provides the number of active networks.
@@ -314,19 +332,9 @@ public class Connect {
* @throws LibvirtException
*/
public int numOfNetworks() throws LibvirtException {
- return _numOfNetworks(VCP);
+ return libvirt.virConnectNumOfNetworks(VCP) ;
}
- private native int _numOfNetworks(long VCP) throws LibvirtException;
-
- // open
- private native long _open(String uri) throws LibvirtException;
-
- // openReadOnly
- private native long _openReadOnly(String uri) throws LibvirtException;
-
- // openAuth
- private native long _openAuth(String uri, ConnectAuth auth, int flags) throws
LibvirtException;
// virNetwork stuff
@@ -339,12 +347,9 @@ public class Connect {
*/
public Network networkLookupByName(String name)
throws LibvirtException {
- return new Network(this, _virNetworkLookupByName(VCP, name));
+ return new Network(this, libvirt.virNetworkLookupByName(VCP, name));
}
- private native long _virNetworkLookupByName(long VCP, String name)
- throws LibvirtException;
-
/**
* Looks up a network based on its UUID represented as an int array.
@@ -356,11 +361,14 @@ public class Connect {
*/
public Network networkLookupByUUID(int[] UUID)
throws LibvirtException {
- return new Network(this, _virNetworkLookupByUUID(VCP, UUID));
+ StringBuilder uuidString = new StringBuilder() ;
+ for (int i : UUID) {
+ uuidString.append(i) ;
+ }
+ return new Network(this, libvirt.virNetworkLookupByUUID(VCP, uuidString.toString()));
}
- private native long _virNetworkLookupByUUID(long VCP, int[] UUID);
-
+
/**
* Looks up a network based on its UUID represented as a String.
*
@@ -370,11 +378,11 @@ public class Connect {
*/
public Network networkLookupByUUIDString(String UUID)
throws LibvirtException {
- return new Network(this, _virNetworkLookupByUUIDString(VCP, UUID));
+ return new Network(this, libvirt.virNetworkLookupByUUIDString(VCP, UUID));
}
- private native long _virNetworkLookupByUUIDString(long VCP, String UUID)
- throws LibvirtException;
+// private native long _virNetworkLookupByUUIDString(long VCP, String UUID)
+// throws LibvirtException;
/**
@@ -388,12 +396,9 @@ public class Connect {
*/
public Network networkCreateXML(String xmlDesc)
throws LibvirtException {
- return new Network(this, _virNetworkCreateXML(VCP, xmlDesc));
+ return new Network(this, libvirt.virNetworkCreateXML(VCP, xmlDesc));
}
- private native long _virNetworkCreateXML(long VCP, String xmlDesc)
- throws LibvirtException;
-
/**
* Defines a network, but does not create it.
@@ -406,12 +411,10 @@ public class Connect {
*/
public Network networkDefineXML(String xmlDesc)
throws LibvirtException {
- return new Network(this, _virNetworkDefineXML(VCP, xmlDesc));
+ return new Network(this, libvirt.virNetworkDefineXML(VCP, xmlDesc));
}
- private native long _virNetworkDefineXML(long VCP, String xmlDesc)
- throws LibvirtException;
-
+
/**
* Finds a domain based on the hypervisor ID number.
*
@@ -420,11 +423,12 @@ public class Connect {
* @throws LibvirtException
*/
public Domain domainLookupByID(int id) throws LibvirtException {
- return new Domain(this, _virDomainLookupByID(VCP, id));
+ throw new RuntimeException("Not Implemented") ;
+// return new Domain(this, _virDomainLookupByID(VCP, id));
}
- private native long _virDomainLookupByID(long VCP, int id)
- throws LibvirtException;
+// private native long _virDomainLookupByID(long VCP, int id)
+// throws LibvirtException;
/**
* Looks up a domain based on its name.
@@ -434,11 +438,12 @@ public class Connect {
* @throws LibvirtException
*/
public Domain domainLookupByName(String name) throws LibvirtException {
- return new Domain(this, _virDomainLookupByName(VCP, name));
+ throw new RuntimeException("Not Implemented") ;
+// return new Domain(this, _virDomainLookupByName(VCP, name));
}
- private native long _virDomainLookupByName(long VCP, String name)
- throws LibvirtException;
+// private native long _virDomainLookupByName(long VCP, String name)
+// throws LibvirtException;
/**
@@ -450,11 +455,12 @@ public class Connect {
* @throws LibvirtException
*/
public Domain domainLookupByUUID(int[] UUID) throws LibvirtException {
- return new Domain(this, _virDomainLookupByUUID(VCP, UUID));
+ throw new RuntimeException("Not Implemented") ;
+// return new Domain(this, _virDomainLookupByUUID(VCP, UUID));
}
- private native long _virDomainLookupByUUID(long VCP, int[] UUID)
- throws LibvirtException;
+// private native long _virDomainLookupByUUID(long VCP, int[] UUID)
+// throws LibvirtException;
/**
* Looks up a domain based on its UUID in String form.
@@ -465,11 +471,9 @@ public class Connect {
*/
public Domain domainLookupByUUIDString(String UUID)
throws LibvirtException {
- return new Domain(this, _virDomainLookupByUUIDString(VCP, UUID));
+ return new Domain(this, libvirt.virDomainLookupByUUIDString(VCP, UUID));
}
- private native long _virDomainLookupByUUIDString(long VCP, String UUID)
- throws LibvirtException;
/**
* Launches a new Linux guest domain.
@@ -484,11 +488,9 @@ public class Connect {
*/
public Domain domainCreateLinux(String xmlDesc, int flags)
throws LibvirtException {
- return new Domain(this, _virDomainCreateLinux(VCP, xmlDesc, flags));
+ return new Domain(this, libvirt.virDomainCreateLinux(VCP, xmlDesc, flags));
}
- private native long _virDomainCreateLinux(long VCP, String xmlDesc,
- int flags) throws LibvirtException;
/**
* Defines a domain, but does not start it
@@ -499,11 +501,21 @@ public class Connect {
* @see <a
href="http://libvirt.org/format.html#Normal1" > The XML
format description </a>
*/
public Domain domainDefineXML(String xmlDesc) throws LibvirtException {
- return new Domain(this, _virDomainDefineXML(VCP, xmlDesc));
+ return new Domain(this, libvirt.virDomainDefineXML(VCP, xmlDesc));
}
-
- private native long _virDomainDefineXML(long VCP, String xmlDesc)
- throws LibvirtException;
+
+
+ /**
+ * Launch a new guest domain, based on an XML description
+ *
+ * @param xmlDesc
+ * @return the Domain object
+ * @throws LibvirtException
+ * @see <a
href="http://libvirt.org/format.html#Normal1" > The XML
format description </a>
+ */
+ public Domain domainCreateXML(String xmlDesc, int flags) throws LibvirtException {
+ return new Domain(this, libvirt.virDomainCreateXML(VCP, xmlDesc, flags));
+ }
/**
@@ -513,11 +525,12 @@ public class Connect {
* @throws LibvirtException
*/
public void restore(String from) throws LibvirtException {
- _virDomainRestore(VCP, from);
+ throw new RuntimeException("Not Implemented") ;
+// _virDomainRestore(VCP, from);
}
- private native int _virDomainRestore(long VCP, String from)
- throws LibvirtException;
+// private native int _virDomainRestore(long VCP, String from)
+// throws LibvirtException;
/**
* Returns a NodeInfo object describing the hardware configuration of the node.
@@ -526,11 +539,12 @@ public class Connect {
* @throws LibvirtException
*/
public NodeInfo nodeInfo() throws LibvirtException {
- return _virNodeInfo(VCP);
+ virNodeInfo vInfo = new virNodeInfo();
+ libvirt.virNodeGetInfo(VCP,vInfo) ;
+ return new NodeInfo(vInfo) ;
}
- private native NodeInfo _virNodeInfo(long VCP) throws LibvirtException;
-
+
/**
* change the amount of memory reserved to Domain0.
* Domain0 is the domain where the application runs.
@@ -540,10 +554,11 @@ public class Connect {
* @throws LibvirtException
*/
public void setDom0Memory(long memory) throws LibvirtException {
- _setDom0Memory(memory);
+ throw new RuntimeException("Not Implemented") ;
+// _setDom0Memory(memory);
}
- private native int _setDom0Memory(long memory) throws LibvirtException;
+// private native int _setDom0Memory(long memory) throws LibvirtException;
/**
* Provides the number of inactive storage pools
@@ -552,10 +567,11 @@ public class Connect {
* @throws LibvirtException
*/
public int numOfDefinedStoragePools() throws LibvirtException {
- return _numOfDefinedStoragePools(VCP);
+ throw new RuntimeException("Not Implemented") ;
+// return _numOfDefinedStoragePools(VCP);
}
- private native int _numOfDefinedStoragePools(long VCP) throws LibvirtException;
+// private native int _numOfDefinedStoragePools(long VCP) throws LibvirtException;
/**
* Provides the number of active storage pools
@@ -564,10 +580,11 @@ public class Connect {
* @throws LibvirtException
*/
public int numOfStoragePools() throws LibvirtException {
- return _numOfStoragePools(VCP);
+ throw new RuntimeException("Not Implemented") ;
+// return _numOfStoragePools(VCP);
}
- private native int _numOfStoragePools(long VCP) throws LibvirtException;
+// private native int _numOfStoragePools(long VCP) throws LibvirtException;
/**
* Provides the list of names of inactive storage pools.
@@ -576,11 +593,12 @@ public class Connect {
* @throws LibvirtException
*/
public String[] listDefinedStoragePools() throws LibvirtException {
- return _listDefinedStoragePools(VCP);
+ throw new RuntimeException("Not Implemented") ;
+// return _listDefinedStoragePools(VCP);
}
- private native String[] _listDefinedStoragePools(long VCP)
- throws LibvirtException;
+// private native String[] _listDefinedStoragePools(long VCP)
+// throws LibvirtException;
/**
* Provides the list of names of active storage pools.
@@ -589,11 +607,12 @@ public class Connect {
* @throws LibvirtException
*/
public String[] listStoragePools() throws LibvirtException {
- return _listStoragePools(VCP);
+ throw new RuntimeException("Not Implemented") ;
+// return _listStoragePools(VCP);
}
- private native String[] _listStoragePools(long VCP)
- throws LibvirtException;
+// private native String[] _listStoragePools(long VCP)
+// throws LibvirtException;
/**
* Create a new storage based on its XML description.
@@ -606,11 +625,12 @@ public class Connect {
*/
public StoragePool storagePoolCreateXML(String xmlDesc, int flags)
throws LibvirtException {
- return new StoragePool(this, _virStoragePoolCreateXML(VCP, xmlDesc, flags));
+ throw new RuntimeException("Not Implemented") ;
+// return new StoragePool(this, _virStoragePoolCreateXML(VCP, xmlDesc, flags));
}
- private native long _virStoragePoolCreateXML(long VCP, String xmlDesc, int flags)
- throws LibvirtException;
+// private native long _virStoragePoolCreateXML(long VCP, String xmlDesc, int flags)
+// throws LibvirtException;
/**
* Define a new inactive storage pool based on its XML description.
@@ -623,11 +643,12 @@ public class Connect {
*/
public StoragePool storagePoolDefineXML(String xml, int flags)
throws LibvirtException {
- return new StoragePool(this, _virStoragePoolDefineXML(VCP, xml, flags));
+ throw new RuntimeException("Not Implemented") ;
+// return new StoragePool(this, _virStoragePoolDefineXML(VCP, xml, flags));
}
- private native long _virStoragePoolDefineXML(long VCP, String xml, int flags)
- throws LibvirtException;
+// private native long _virStoragePoolDefineXML(long VCP, String xml, int flags)
+// throws LibvirtException;
/**
* Fetch a storage pool based on its unique name
@@ -638,11 +659,12 @@ public class Connect {
*/
public StoragePool storagePoolLookupByName(String name)
throws LibvirtException {
- return new StoragePool(this, _virStoragePoolLookupByName(VCP, name));
+ throw new RuntimeException("Not Implemented") ;
+// return new StoragePool(this, _virStoragePoolLookupByName(VCP, name));
}
- private native long _virStoragePoolLookupByName(long VCP, String name)
- throws LibvirtException;
+// private native long _virStoragePoolLookupByName(long VCP, String name)
+// throws LibvirtException;
/**
* Fetch a storage pool based on its globally unique id
@@ -653,10 +675,11 @@ public class Connect {
*/
public StoragePool storagePoolLookupByUUID(int[] UUID)
throws LibvirtException {
- return new StoragePool(this, _virStoragePoolLookupByUUID(VCP, UUID));
+ throw new RuntimeException("Not Implemented") ;
+// return new StoragePool(this, _virStoragePoolLookupByUUID(VCP, UUID));
}
- private native long _virStoragePoolLookupByUUID(long VCP, int[] UUID);
+// private native long _virStoragePoolLookupByUUID(long VCP, int[] UUID);
/**
* Fetch a storage pool based on its globally unique id
@@ -667,11 +690,12 @@ public class Connect {
*/
public StoragePool storagePoolLookupByUUIDString(String UUID)
throws LibvirtException {
- return new StoragePool(this, _virStoragePoolLookupByUUIDString(VCP, UUID));
+ throw new RuntimeException("Not Implemented") ;
+// return new StoragePool(this, _virStoragePoolLookupByUUIDString(VCP, UUID));
}
- private native long _virStoragePoolLookupByUUIDString(long VCP, String UUID)
- throws LibvirtException;
+// private native long _virStoragePoolLookupByUUIDString(long VCP, String UUID)
+// throws LibvirtException;
/**
* Fetch a a storage volume based on its globally unique key
@@ -680,10 +704,11 @@ public class Connect {
* @return a storage volume
*/
public StorageVol storageVolLookupByKey(String key){
- return new StorageVol(this, _virStorageVolLookupByKey(VCP, key));
+ throw new RuntimeException("Not Implemented") ;
+// return new StorageVol(this, _virStorageVolLookupByKey(VCP, key));
}
- private native long _virStorageVolLookupByKey(long VCP, String key);
+// private native long _virStorageVolLookupByKey(long VCP, String key);
/**
* Fetch a storage volume based on its locally (host) unique path
@@ -692,10 +717,23 @@ public class Connect {
* @return a storage volume
*/
public StorageVol storageVolLookupByPath(String path){
- return new StorageVol(this, _virStorageVolLookupByPath(VCP, path));
- }
-
- private native long _virStorageVolLookupByPath(long VCP, String path);
-
-
+ throw new RuntimeException("Not Implemented") ;
+// return new StorageVol(this, _virStorageVolLookupByPath(VCP, path));
+ }
+
+// private native long _virStorageVolLookupByPath(long VCP, String path);
+
+// @Override
+// public void handleError(Pointer userData, virError error) throws LibvirtException
{
+// System.out.println("Hello") ;
+// this.processError(error) ;
+// }
+//
+// protected void processError(virError vError) throws LibvirtException {
+// System.out.println("Hello") ;
+// if (vError != null) {
+// Error error = new Error(vError) ;
+// throw new LibvirtException(error) ;
+// }
+// }
}
diff --git a/src/org/libvirt/Domain.java b/src/org/libvirt/Domain.java
index 8e7fa74..e9b5d57 100644
--- a/src/org/libvirt/Domain.java
+++ b/src/org/libvirt/Domain.java
@@ -1,5 +1,7 @@
package org.libvirt;
+import com.sun.jna.Pointer;
+
public class Domain {
static final class CreateFlags{
@@ -27,7 +29,7 @@ public class Domain {
/**
* the native virDomainPtr.
*/
- private long VDP;
+ private Pointer VDP;
/**
* The Connect Object that represents the Hypervisor of this Domain
@@ -42,7 +44,7 @@ public class Domain {
* @param virConnect the Domain's hypervisor
* @param VDP the native virDomainPtr
*/
- Domain(Connect virConnect, long VDP){
+ Domain(Connect virConnect, Pointer VDP){
this.virConnect = virConnect;
this.VDP = VDP;
}
@@ -57,10 +59,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);
+// return _getXMLDesc(VDP, flags);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getXMLDesc(long VDP, int flags) throws LibvirtException;
+// 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.
@@ -69,11 +72,12 @@ public class Domain {
* @throws LibvirtException
*/
public boolean getAutostart() throws LibvirtException{
- return _getAutostart(VDP);
+// return _getAutostart(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native boolean _getAutostart(long VDP) throws LibvirtException;
+// private native boolean _getAutostart(long VDP) throws LibvirtException;
/**
* Configures the network to be automatically started when the host machine boots.
@@ -82,10 +86,11 @@ public class Domain {
* @throws LibvirtException
*/
public void setAutostart(boolean autostart) throws LibvirtException{
- _setAutostart(VDP, autostart);
+// _setAutostart(VDP, autostart);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _setAutostart(long VDP, boolean autostart) throws LibvirtException;
+// private native int _setAutostart(long VDP, boolean autostart) throws
LibvirtException;
/**
* Provides the connection object associated with a domain.
@@ -103,10 +108,11 @@ public class Domain {
* @throws LibvirtException
*/
public int getID() throws LibvirtException{
- return _getID(VDP);
+// return _getID(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _getID(long VDP) throws LibvirtException;
+// private native int _getID(long VDP) throws LibvirtException;
/**
@@ -117,10 +123,11 @@ public class Domain {
* @throws LibvirtException
*/
public DomainInfo getInfo() throws LibvirtException{
- return _getInfo(VDP);
+// return _getInfo(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native DomainInfo _getInfo(long VDP) throws LibvirtException;
+// private native DomainInfo _getInfo(long VDP) throws LibvirtException;
/**
* Retrieve the maximum amount of physical memory allocated to a domain.
@@ -129,10 +136,11 @@ public class Domain {
* @throws LibvirtException
*/
public long getMaxMemory() throws LibvirtException{
- return _getMaxMemory(VDP);
+// return _getMaxMemory(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native long _getMaxMemory(long VDP) throws LibvirtException;
+// private native long _getMaxMemory(long VDP) throws LibvirtException;
/**
* * Dynamically change the maximum amount of physical memory allocated to a domain.
@@ -142,10 +150,11 @@ public class Domain {
* @throws LibvirtException
*/
public void setMaxMemory(long memory) throws LibvirtException{
- _setMaxMemory(VDP, memory);
+// _setMaxMemory(VDP, memory);
+ throw new RuntimeException("Not Implemented") ;
}
- private native long _setMaxMemory(long VDP, long memory) throws LibvirtException;
+// private native long _setMaxMemory(long VDP, long memory) throws LibvirtException;
/**
@@ -157,10 +166,11 @@ public class Domain {
* @throws LibvirtException
*/
public int getMaxVcpus() throws LibvirtException{
- return _getMaxVcpus(VDP);
+// return _getMaxVcpus(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _getMaxVcpus(long VDP) throws LibvirtException;
+// private native int _getMaxVcpus(long VDP) throws LibvirtException;
/**
@@ -170,10 +180,11 @@ public class Domain {
* @throws LibvirtException
*/
public String getName() throws LibvirtException{
- return _getName(VDP);
+// return _getName(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getName(long VDP) throws LibvirtException;
+// private native String _getName(long VDP) throws LibvirtException;
/**
* Gets the type of domain operation system.
@@ -182,10 +193,11 @@ public class Domain {
* @throws LibvirtException
*/
public String getOSType() throws LibvirtException{
- return _getOSType(VDP);
+// return _getOSType(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getOSType(long VDP) throws LibvirtException;
+// private native String _getOSType(long VDP) throws LibvirtException;
/**
@@ -195,10 +207,11 @@ public class Domain {
* @throws LibvirtException
*/
public SchedParameter[] getSchedulerParameters() throws LibvirtException{
- return _getSchedulerParameters(VDP);
+// return _getSchedulerParameters(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native SchedParameter[] _getSchedulerParameters (long VDP) throws
LibvirtException;
+// private native SchedParameter[] _getSchedulerParameters (long VDP) throws
LibvirtException;
/**
* Changes the scheduler parameters
@@ -207,10 +220,11 @@ public class Domain {
* @throws LibvirtException
*/
public void setSchedulerParameters(SchedParameter[] params) throws LibvirtException{
- _setSchedulerParameters(VDP, params);
+// _setSchedulerParameters(VDP, params);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _setSchedulerParameters(long VDP, SchedParameter[] params) throws
LibvirtException;
+// 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,
@@ -222,10 +236,11 @@ public class Domain {
* @throws LibvirtException
*/
public String[] getSchedulerType() throws LibvirtException{
- return _getSchedulerType(VDP);
+// return _getSchedulerType(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String[] _getSchedulerType(long VDP) throws LibvirtException;
+// private native String[] _getSchedulerType(long VDP) throws LibvirtException;
/**
* Get the UUID for this domain.
@@ -235,10 +250,11 @@ public class Domain {
* @see <a
href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
*/
public int[] getUUID() throws LibvirtException{
- return _getUUID(VDP);
+// return _getUUID(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int[] _getUUID(long VDP) throws LibvirtException;
+// private native int[] _getUUID(long VDP) throws LibvirtException;
/**
* Gets the UUID for this domain as string.
@@ -248,10 +264,11 @@ public class Domain {
* @see <a
href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
*/
public String getUUIDString() throws LibvirtException{
- return _getUUIDString(VDP);
+// return _getUUIDString(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getUUIDString(long VDP) throws LibvirtException;
+// private native String _getUUIDString(long VDP) throws LibvirtException;
/**
* Extracts information about virtual CPUs of this domain
@@ -260,10 +277,11 @@ public class Domain {
* @throws LibvirtException
*/
public VcpuInfo[] getVcpusInfo() throws LibvirtException{
- return _getVcpusInfo(VDP);
+// return _getVcpusInfo(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native VcpuInfo[] _getVcpusInfo(long VDP) throws LibvirtException;
+// private native VcpuInfo[] _getVcpusInfo(long VDP) throws LibvirtException;
/**
* Returns the cpumaps for this domain
@@ -273,10 +291,11 @@ public class Domain {
* @throws LibvirtException
*/
public int[] getVcpusCpuMaps() throws LibvirtException{
- return _getVcpusCpuMaps(VDP);
+// return _getVcpusCpuMaps(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int[] _getVcpusCpuMaps(long VDP) throws LibvirtException;
+// private native int[] _getVcpusCpuMaps(long VDP) throws LibvirtException;
/**
@@ -288,10 +307,11 @@ public class Domain {
* @throws LibvirtException
*/
public void pinVcpu(int vcpu, int[] cpumap) throws LibvirtException{
- _pinVcpu(VDP, vcpu, cpumap);
+// _pinVcpu(VDP, vcpu, cpumap);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _pinVcpu(long VDP, int vcpu, int[]cpumap) throws LibvirtException;
+// private native int _pinVcpu(long VDP, int vcpu, int[]cpumap) throws LibvirtException;
/**
* Dynamically changes the number of virtual CPUs used by this domain.
@@ -302,10 +322,11 @@ public class Domain {
* @throws LibvirtException
*/
public void setVcpus(int nvcpus) throws LibvirtException{
- _setVcpus(VDP, nvcpus);
+// _setVcpus(VDP, nvcpus);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _setVcpus(long VDP, int nvcpus) throws LibvirtException;
+// private native int _setVcpus(long VDP, int nvcpus) throws LibvirtException;
/**
* Creates a virtual device attachment to backend.
@@ -314,10 +335,11 @@ public class Domain {
* @throws LibvirtException
*/
public void attachDevice(String xmlDesc) throws LibvirtException{
- _attachDevice(VDP, xmlDesc);
+// _attachDevice(VDP, xmlDesc);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _attachDevice(long VDP, String xmlDesc) throws LibvirtException;
+// private native int _attachDevice(long VDP, String xmlDesc) throws LibvirtException;
/**
* Destroys a virtual device attachment to backend.
@@ -326,10 +348,11 @@ public class Domain {
* @throws LibvirtException
*/
public void detachDevice(String xmlDesc) throws LibvirtException{
- _detachDevice(VDP, xmlDesc);
+// _detachDevice(VDP, xmlDesc);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _detachDevice(long VDP, String xmlDesc) throws LibvirtException;
+// private native int _detachDevice(long VDP, String xmlDesc) throws LibvirtException;
/**
@@ -345,10 +368,11 @@ public class Domain {
* @throws LibvirtException
*/
public DomainBlockStats blockStats(String path) throws LibvirtException{
- return _blockStats(VDP, path);
+// return _blockStats(VDP, path);
+ throw new RuntimeException("Not Implemented") ;
}
- private native DomainBlockStats _blockStats(long VDP, String path) throws
LibvirtException;
+// private native DomainBlockStats _blockStats(long VDP, String path) throws
LibvirtException;
/**
* Returns network interface stats for interfaces attached to this domain.
@@ -362,10 +386,11 @@ public class Domain {
* @throws LibvirtException
*/
public DomainInterfaceStats interfaceStats(String path) throws LibvirtException{
- return _interfaceStats(VDP, path);
+// return _interfaceStats(VDP, path);
+ throw new RuntimeException("Not Implemented") ;
}
- private native DomainInterfaceStats _interfaceStats(long VDP, String path) throws
LibvirtException;
+// private native DomainInterfaceStats _interfaceStats(long VDP, String path) throws
LibvirtException;
/**
* Dumps the core of this domain on a given file for analysis.
@@ -376,10 +401,11 @@ public class Domain {
* @throws LibvirtException
*/
public void coreDump(String to, int flags) throws LibvirtException{
- _coreDump(VDP, to, flags);
+// _coreDump(VDP, to, flags);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _coreDump(long VDP, String to, int flags) throws LibvirtException;
+// private native int _coreDump(long VDP, String to, int flags) throws LibvirtException;
/**
* Launches this defined domain.
@@ -388,10 +414,11 @@ public class Domain {
* @throws LibvirtException
*/
public void create() throws LibvirtException{
- _create(VDP);
+// _create(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _create(long VDP) throws LibvirtException;
+// private native int _create(long VDP) throws LibvirtException;
/**
* Destroys this domain object.
@@ -402,10 +429,11 @@ public class Domain {
* @throws LibvirtException
*/
public void destroy() throws LibvirtException{
- _destroy(VDP);
+// _destroy(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _destroy(long VDP) throws LibvirtException;
+// private native int _destroy(long VDP) throws LibvirtException;
/**
* Frees this domain object.
@@ -415,11 +443,12 @@ public class Domain {
* @throws LibvirtException
*/
public void free() throws LibvirtException{
- _free(VDP);
- VDP=0;
+// _free(VDP);
+// VDP=0;
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _free(long VDP) throws LibvirtException;
+// private native int _free(long VDP) throws LibvirtException;
/**
@@ -449,10 +478,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));
+// return new Domain(dconn, _migrate(VDP, dconn, flags, dname, uri, bandwidth));
+ throw new RuntimeException("Not Implemented") ;
}
- private native long _migrate(long VDP, Connect dconn, long flags, String dname, String
uri, long bandwidth) throws LibvirtException;
+// 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.
@@ -462,10 +492,11 @@ public class Domain {
* @throws LibvirtException
*/
public void reboot(int flags) throws LibvirtException{
- _reboot(VDP, flags);
+// _reboot(VDP, flags);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _reboot(long VDP, int flags) throws LibvirtException;
+// 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.
@@ -474,10 +505,11 @@ public class Domain {
* @throws LibvirtException
*/
public void suspend() throws LibvirtException{
- _suspend(VDP);
+// _suspend(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _suspend(long VDP) throws LibvirtException;
+// 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().
@@ -486,10 +518,11 @@ public class Domain {
* @throws LibvirtException
*/
public void resume() throws LibvirtException{
- _resume(VDP);
+// _resume(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _resume(long VDP) throws LibvirtException;
+// private native int _resume(long VDP) throws LibvirtException;
/**
* Suspends this domain and saves its memory contents to a file on disk.
@@ -500,10 +533,11 @@ public class Domain {
* @throws LibvirtException
*/
public void save(String to) throws LibvirtException{
- _save(VDP, to);
+// _save(VDP, to);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _save(long VDP, String to) throws LibvirtException;
+// 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.
@@ -513,10 +547,11 @@ public class Domain {
* @throws LibvirtException
*/
public void shutdown() throws LibvirtException{
- _shutdown(VDP);
+// _shutdown(VDP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _shutdown(long VDP) throws LibvirtException;
+// private native int _shutdown(long VDP) throws LibvirtException;
/**
* undefines this domain but does not stop it if it is running
@@ -524,10 +559,11 @@ public class Domain {
* @throws LibvirtException
*/
public void undefine() throws LibvirtException{
- _undefine(VDP);
+ throw new RuntimeException("Not Implemented") ;
+// _undefine(VDP);
}
- private native int _undefine(long VDP) throws LibvirtException;
+// private native int _undefine(long VDP) throws LibvirtException;
/**
* Dynamically changes the target amount of physical memory allocated to this domain.
@@ -537,10 +573,11 @@ public class Domain {
* @throws LibvirtException
*/
public void setMemory(long memory) throws LibvirtException{
- _setMemory(VDP, memory);
+ throw new RuntimeException("Not Implemented") ;
+// _setMemory(VDP, memory);
}
- private native int _setMemory(long VDP, long memory) throws LibvirtException;
+// private native int _setMemory(long VDP, long memory) throws LibvirtException;
}
diff --git a/src/org/libvirt/Error.java b/src/org/libvirt/Error.java
index ef05702..ada7be8 100644
--- a/src/org/libvirt/Error.java
+++ b/src/org/libvirt/Error.java
@@ -2,6 +2,8 @@ package org.libvirt;
import java.io.Serializable;
+import org.libvirt.jna.virError;
+
public class Error implements Serializable {
public static enum ErrorDomain {
@@ -308,6 +310,25 @@ public class Error implements Serializable {
int int1;
int int2;
long VNP; /* Deprecated */
+
+ public Error() {
+
+ }
+
+ public Error(virError vError) {
+ code = ErrorNumber.values()[vError.code] ;
+ domain = ErrorDomain.values()[vError.domain] ;
+ level = ErrorLevel.values()[vError.level] ;
+ message = vError.message ;
+ str1 = vError.str1 ;
+ str2 = vError.str2 ;
+ str3 = vError.str3 ;
+ int1 = vError.int1 ;
+ int2 = vError.int2 ;
+ VCP = vError.conn ;
+ VDP = vError.dom ;
+ VNP =
vError.net ;
+ }
/**
* Gets he error code
diff --git a/src/org/libvirt/ErrorHandler.java b/src/org/libvirt/ErrorHandler.java
new file mode 100644
index 0000000..dca47a5
--- /dev/null
+++ b/src/org/libvirt/ErrorHandler.java
@@ -0,0 +1,22 @@
+package org.libvirt;
+
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virError;
+
+import com.sun.jna.Pointer;
+
+public class ErrorHandler implements Libvirt.virErrorFunc
+{
+ public static ErrorHandler INSTANCE = new ErrorHandler() ;
+
+ @Override
+ public void handleError(Pointer userData, virError vError) throws LibvirtException
+ {
+ System.out.println("Hello") ;
+ if (vError != null) {
+ Error error = new Error(vError) ;
+ throw new LibvirtException(error) ;
+ }
+
+ }
+}
diff --git a/src/org/libvirt/Network.java b/src/org/libvirt/Network.java
index 6fda985..a194ca7 100644
--- a/src/org/libvirt/Network.java
+++ b/src/org/libvirt/Network.java
@@ -1,15 +1,25 @@
package org.libvirt;
+import org.libvirt.jna.Libvirt;
+
+import com.sun.jna.Pointer;
+
public class Network {
/**
* The native virNetworkPtr
*/
- private long VNP;
+ protected Pointer VNP;
+
/**
* The Connect Object that represents the Hypervisor of this Network
*/
- private Connect virConnect;
+ protected Connect virConnect;
+
+ /**
+ * The libvirt connection from the hypervisor
+ */
+ protected Libvirt libvirt ;
/**
* Constructs a Network object from a known native virNetworkPtr, and a Connect object.
@@ -18,9 +28,10 @@ public class Network {
* @param virConnect
* @param VNP
*/
- Network(Connect virConnect, long VNP){
+ Network(Connect virConnect, Pointer VNP){
this.virConnect = virConnect;
this.VNP = VNP;
+ this.libvirt = virConnect.libvirt ;
}
public void finalize() throws LibvirtException{
@@ -36,10 +47,11 @@ public class Network {
* @throws LibvirtException
*/
public String getXMLDesc(int flags) throws LibvirtException{
- return _getXMLDesc(VNP, flags);
+// return _getXMLDesc(VNP, flags);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getXMLDesc(long VNP, int flags) throws LibvirtException;
+// private native String _getXMLDesc(long VNP, int flags) throws LibvirtException;
/**
* Provides a boolean value indicating whether this network is configured to be
automatically started when the host machine boots.
@@ -48,10 +60,11 @@ public class Network {
* @throws LibvirtException
*/
public boolean getAutostart() throws LibvirtException{
- return _getAutostart(VNP);
+// return _getAutostart(VNP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native boolean _getAutostart(long VNP) throws LibvirtException;
+// private native boolean _getAutostart(long VNP) throws LibvirtException;
/**
@@ -61,10 +74,11 @@ public class Network {
* @throws LibvirtException
*/
public void setAutostart(boolean autostart) throws LibvirtException{
- _setAutostart(VNP, autostart);
+// _setAutostart(VNP, autostart);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _setAutostart(long VNP, boolean autostart) throws LibvirtException;
+// private native int _setAutostart(long VNP, boolean autostart) throws
LibvirtException;
/**
* Provides a bridge interface name to which a domain may connect a network interface in
order to join this network.
@@ -73,10 +87,12 @@ public class Network {
* @throws LibvirtException
*/
public String getBridgeName() throws LibvirtException{
- return _getBridgeName(VNP);
+// return _getBridgeName(VNP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getBridgeName(long VNP) throws LibvirtException;
+// private native String _getBridgeName(long VNP) throws LibvirtException;
+
/**
@@ -96,10 +112,10 @@ public class Network {
* @throws LibvirtException
*/
public String getName() throws LibvirtException{
- return _getName(VNP);
+ return libvirt.virNetworkGetName(VNP);
}
- private native String _getName(long VNP) throws LibvirtException;
+// private native String _getName(long VNP) throws LibvirtException;
/**
* Gets the UUID for this network
@@ -109,10 +125,11 @@ public class Network {
* @see <a
href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
*/
public int[] getUUID() throws LibvirtException{
- return _getUUID(VNP);
+// return _getUUID(VNP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int[] _getUUID(long VNP) throws LibvirtException;
+// private native int[] _getUUID(long VNP) throws LibvirtException;
/**
* Gets the UUID for a network as string.
@@ -122,10 +139,11 @@ public class Network {
* @see <a
href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
*/
public String getUUIDString() throws LibvirtException{
- return _getUUIDString(VNP);
+// return _getUUIDString(VNP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native String _getUUIDString(long VNP) throws LibvirtException;
+// private native String _getUUIDString(long VNP) throws LibvirtException;
/**
* Creates and starts this defined network.
@@ -134,10 +152,11 @@ public class Network {
* @throws LibvirtException
*/
public void create() throws LibvirtException{
- _create(VNP);
+// _create(VNP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _create(long VNP) throws LibvirtException;
+// private native int _create(long VNP) throws LibvirtException;
/**
* Destroy this network object.
@@ -148,10 +167,11 @@ public class Network {
* @throws LibvirtException
*/
public void destroy() throws LibvirtException{
- _destroy(VNP);
+// _destroy(VNP);
+ throw new RuntimeException("Not Implemented") ;
}
- private native int _destroy(long VNP) throws LibvirtException;
+// private native int _destroy(long VNP) throws LibvirtException;
/**
* Frees this network object.
@@ -161,11 +181,12 @@ public class Network {
* @throws LibvirtException
*/
public void free() throws LibvirtException{
- _free(VNP);
- VNP=0;
+ throw new RuntimeException("Not Implemented") ;
+// _free(VNP);
+// VNP=0;
}
- private native int _free(long VNP) throws LibvirtException;
+// private native int _free(long VNP) throws LibvirtException;
/**
* Undefines this network but does not stop it if it is running
@@ -173,9 +194,10 @@ public class Network {
* @throws LibvirtException
*/
public void undefine() throws LibvirtException{
- _undefine(VNP);
+ throw new RuntimeException("Not Implemented") ;
+// _undefine(VNP);
}
- private native int _undefine(long VNP) throws LibvirtException;
+// private native int _undefine(long VNP) throws LibvirtException;
}
diff --git a/src/org/libvirt/NodeInfo.java b/src/org/libvirt/NodeInfo.java
index b7e2840..16855ca 100644
--- a/src/org/libvirt/NodeInfo.java
+++ b/src/org/libvirt/NodeInfo.java
@@ -1,5 +1,7 @@
package org.libvirt;
+import org.libvirt.jna.virNodeInfo;
+
public class NodeInfo {
/**
* string indicating the CPU model
@@ -34,6 +36,20 @@ public class NodeInfo {
*/
public int threads;
+
+ public NodeInfo() {
+ }
+
+ public NodeInfo(virNodeInfo vInfo) {
+// this.model = new String(vInfo.model) ;
+ this.memory = vInfo.memory.longValue() ;
+ this.cpus = vInfo.cpus ;
+ this.mhz = vInfo.mhz ;
+ this.nodes = vInfo.nodes ;
+ this.sockets = vInfo.sockets ;
+ this.cores = vInfo.cores ;
+ this.threads = vInfo.threads ;
+ }
/**
* @return the total number of CPUs supported but not neccessarily active in the host.
*/
diff --git a/src/org/libvirt/jna/Libvirt.java b/src/org/libvirt/jna/Libvirt.java
new file mode 100644
index 0000000..1874d3e
--- /dev/null
+++ b/src/org/libvirt/jna/Libvirt.java
@@ -0,0 +1,66 @@
+package org.libvirt.jna;
+
+
+import com.sun.jna.Callback;
+import com.sun.jna.Library ;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure.ByReference;
+import com.sun.jna.ptr.LongByReference;
+import com.sun.jna.ptr.PointerByReference;
+
+public interface Libvirt extends Library
+{
+ Libvirt INSTANCE = (Libvirt) Native.loadLibrary("libvirt", Libvirt.class)
;
+
+ //Callbacks
+ interface virErrorFunc extends Callback {
+ void handleError(Pointer userData, virError error) throws Exception ;
+ }
+
+ // Global functions
+ public virError virGetLastError() ;
+ public int virGetVersion(LongByReference libVer, String type, LongByReference
typeVer) ;
+ public int virInitialize() ;
+ public void virSetErrorFunc(long userData, virErrorFunc handler) ;
+
+ //Connection Functions
+ public int virConnCopyLastError(Pointer virConnectPtr) ;
+ public int virConnectClose(Pointer virConnectPtr) ;
+ public String virConnectGetCapabilities(Pointer virConnectPtr) ;
+ public String virConnectGetHostname(Pointer virConnectPtr) ;
+ public virError virConnGetLastError(Pointer virConnectPtr) ;
+ public int virConnectGetMaxVcpus(Pointer virConnectPtr, String type) ;
+ public String virConnectGetType(Pointer virConnectPtr) ;
+ public String virConnectGetURI(Pointer virConnectPtr) ;
+ public int virConnectGetVersion(Pointer virConnectPtr, LongByReference hvVer) ;
+ public int virConnectListDomains(Pointer virConnectPtr, int[] ids, int maxnames) ;
+ public int virConnectListNetworks(Pointer virConnectPtr, String[] name, int maxnames)
;
+ public int virConnectListDefinedDomains(Pointer virConnectPtr, String[] name, int
maxnames) ;
+ public int virConnectListDefinedNetworks(Pointer virConnectPtr, String[] name, int
maxnames) ;
+ public int virConnectNumOfDomains(Pointer virConnectPtr) ;
+ public int virConnectNumOfDefinedDomains(Pointer virConnectPtr) ;
+ public int virConnectNumOfDefinedNetworks(Pointer virConnectPtr) ;
+ public int virConnectNumOfNetworks(Pointer virConnectPtr) ;
+ public Pointer virConnectOpen(String name) ;
+ public Pointer virConnectOpenReadOnly(String name) ;
+ public void virConnSetErrorFunc(Pointer virConnectPtr, long userData, virErrorFunc
handler) ;
+
+ // Node functions
+ public int virNodeGetInfo(Pointer virConnectPtr, virNodeInfo virNodeInfo) ;
+
+ // Network functions
+ public Pointer virNetworkCreateXML(Pointer virConnectPtr, String xmlDesc) ;
+ public Pointer virNetworkDefineXML(Pointer virConnectPtr, String xmlDesc) ;
+ public String virNetworkGetName(Pointer virNetorkPtr) ;
+ public Pointer virNetworkLookupByName(Pointer virConnectPtr, String name) ;
+ public Pointer virNetworkLookupByUUIDString(Pointer virConnectPtr, String uuidstr) ;
+ public Pointer virNetworkLookupByUUID(Pointer virConnectPtr, String uuidstr) ;
+
+ // Domain functions
+ 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 Pointer virDomainLookupByUUIDString(Pointer virConnectPtr, String uuidstr) ;
+
+}
diff --git a/src/org/libvirt/jna/virError.java b/src/org/libvirt/jna/virError.java
new file mode 100644
index 0000000..db462fa
--- /dev/null
+++ b/src/org/libvirt/jna/virError.java
@@ -0,0 +1,19 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure ;
+
+public class virError extends Structure
+{
+ public int code ;
+ public int domain ;
+ public String message ;
+ public int level ;
+ public long conn ;
+ public long dom ;
+ public String str1 ;
+ public String str2 ;
+ public String str3 ;
+ public int int1 ;
+ public int int2 ;
+ public long net ;
+}
diff --git a/src/org/libvirt/jna/virNodeInfo.java b/src/org/libvirt/jna/virNodeInfo.java
new file mode 100644
index 0000000..5a6449e
--- /dev/null
+++ b/src/org/libvirt/jna/virNodeInfo.java
@@ -0,0 +1,19 @@
+package org.libvirt.jna;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Structure;
+
+public class virNodeInfo extends Structure
+{
+ public class ByValue extends virNodeInfo implements Structure.ByValue {};
+ public class ByReference extends virNodeInfo implements Structure.ByReference {};
+
+ public byte model[] = new byte[32];
+ public NativeLong memory ;
+ public int cpus ;
+ public int mhz ;
+ public int nodes ;
+ public int sockets ;
+ public int cores ;
+ public int threads ;
+}
\ No newline at end of file
diff --git a/src/test.java b/src/test.java
index 73f4eb7..2ca6a92 100644
--- a/src/test.java
+++ b/src/test.java
@@ -18,20 +18,21 @@ public class test {
Integer.decode("0xf0"), Integer.decode("0x3c"),
Integer.decode("0x87"), Integer.decode("0xd2"),
Integer.decode("0x1e"), Integer.decode("0x69")} ;
//For testing the authentication
- ConnectAuth defaultAuth = new ConnectAuthDefault();
+// ConnectAuth defaultAuth = new ConnectAuthDefault();
//You need to configure your libvirtd for remote/authenticated connections, and adjust
the URL below
//for this to work. Otherwise, you'll get an error
- try{
- conn = new Connect("test+tcp://localhost/default", defaultAuth, 0);
- System.out.println("Encrypted connection successful!");
- } catch (LibvirtException e){
- System.out.println("exception caught:"+e);
- System.out.println(e.getError());
- }
+// try{
+// conn = new Connect("test+tcp://localhost/default", defaultAuth, 0);
+// System.out.println("Encrypted connection successful!");
+// } catch (LibvirtException e){
+// System.out.println("exception caught:"+e);
+// System.out.println(e.getError());
+// }
try{
conn = new Connect("test:///default", false);
+ //conn = new Connect("qemu:///system", false) ;
} catch (LibvirtException e){
System.out.println("exception caught:"+e);
System.out.println(e.getError());
@@ -54,11 +55,12 @@ public class test {
System.out.println("getType:" + conn.getType());
System.out.println("getURI:" + conn.getURI());
System.out.println("getVersion:" + conn.getVersion());
+ System.out.println("getLibVirVersion:" +
conn.getLibVirVersion());
//By default, there are 1 created and 0 defined networks
//Create a new network to test the create method
- System.out.println("conn.networkCreateXML:"+conn.networkCreateXML("<network>"
+
+ System.out.println("conn.networkCreateXML:
"+conn.networkCreateXML("<network>" +
" <name>createst</name>"+
" <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e68</uuid>"+
" <bridge name='createst'/>"+
@@ -71,7 +73,7 @@ public class test {
"</network>"));
//Same for the define method
- System.out.println("conn.networkDefineXML:"+conn.networkDefineXML("<network>"
+
+ System.out.println("conn.networkDefineXML:
"+conn.networkDefineXML("<network>" +
" <name>deftest</name>"+
" <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e67</uuid>"+
" <bridge name='deftest'/>"+
@@ -87,11 +89,11 @@ public class test {
System.out.println("numOfDefinedNetworks:" + conn.numOfDefinedNetworks());
System.out.println("listDefinedNetworks:" + conn.listDefinedNetworks());
for(String c: conn.listDefinedNetworks())
- System.out.println(" "+c);
+ System.out.println(" -> "+c);
System.out.println("numOfNetworks:" + conn.numOfNetworks());
System.out.println("listNetworks:" + conn.listNetworks());
for(String c: conn.listNetworks())
- System.out.println(" "+c);
+ System.out.println(" -> "+c);
//Define a new Domain
System.out.println("conn.domainDefineXML:"+conn.domainDefineXML("<domain
type='test' id='2'>"+
@@ -99,6 +101,7 @@ public class test {
" <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e70</uuid>"+
" <memory>8388608</memory>"+
" <vcpu>2</vcpu>"+
+ " <os><type arch='i686'>hvm</type></os>"
+
" <on_reboot>restart</on_reboot>"+
" <on_poweroff>destroy</on_poweroff>"+
" <on_crash>restart</on_crash>"+
@@ -109,6 +112,7 @@ public class test {
" <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e71</uuid>"+
" <memory>8388608</memory>"+
" <vcpu>2</vcpu>"+
+ " <os><type
arch='i686'>hvm</type></os>" +
" <on_reboot>restart</on_reboot>"+
" <on_poweroff>destroy</on_poweroff>"+
" <on_crash>restart</on_crash>"+
@@ -122,7 +126,7 @@ public class test {
System.out.println("numOfDomains:" + conn.numOfDomains());
System.out.println("listDomains:" + conn.listDomains());
for(int c: conn.listDomains())
- System.out.println(" "+c);
+ System.out.println(" -> "+c);
} catch (LibvirtException e){
@@ -133,116 +137,119 @@ public class test {
//Network Object
try{
- //Choose one, they should have the exact same effect
- //Network testNetwork=conn.networkLookupByName("default");
- //Network
testNetwork=conn.networkLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e69");
- System.out.println("about to call networkLookupByUUID");
+ //Choose one, they should have the exact same effect
+ testNetwork = conn.networkLookupByName("deftest") ;
+ System.out.println("networkLookupByName: " + testNetwork.getName()) ;
+
+ testNetwork =
conn.networkLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e67");
+ System.out.println("networkLookupByUUIDString: " +
testNetwork.getName()) ;
testNetwork=conn.networkLookupByUUID(UUID);
-
- //Exercise the getter methods on the default network
- System.out.println("virNetworkGetXMLDesc:" + testNetwork.getXMLDesc(0));
- System.out.println("virNetworkLookupByName:" + testNetwork);
- System.out.println("virNetworkGetAutostart:" + testNetwork.getAutostart());
- System.out.println("virNetworkGetBridgeName:" +
testNetwork.getBridgeName());
- System.out.println("virNetworkGetName:" + testNetwork.getName());
- System.out.println("virNetworkGetUUID:" + testNetwork.getUUID() + "
");
- for(int c: testNetwork.getUUID())
- System.out.print(Integer.toHexString(c));
- System.out.println();
- System.out.println("virNetworkGetName:" + testNetwork.getUUIDString());
-
- //Destroy and create the network
- System.out.println("virNetworkDestroy:"); testNetwork.destroy();
- System.out.println("virNetworkCreate:"); testNetwork.create();
- } catch (LibvirtException e){
- System.out.println("exception caught:"+e);
- System.out.println(e.getError());
- }
- //This should raise an excpetion
- try{
- System.out.println("virNetworkCreate:"); testNetwork.create();
+ System.out.println("networkLookupByUUID: " + testNetwork.getName())
;
+//
+// //Exercise the getter methods on the default network
+// System.out.println("virNetworkGetXMLDesc:" + testNetwork.getXMLDesc(0));
+// System.out.println("virNetworkLookupByName:" + testNetwork);
+// System.out.println("virNetworkGetAutostart:" +
testNetwork.getAutostart());
+// System.out.println("virNetworkGetBridgeName:" +
testNetwork.getBridgeName());
+// System.out.println("virNetworkGetName:" + testNetwork.getName());
+// System.out.println("virNetworkGetUUID:" + testNetwork.getUUID() + "
");
+// for(int c: testNetwork.getUUID())
+// System.out.print(Integer.toHexString(c));
+// System.out.println();
+// System.out.println("virNetworkGetName:" + testNetwork.getUUIDString());
+//
+// //Destroy and create the network
+// System.out.println("virNetworkDestroy:"); testNetwork.destroy();
+// System.out.println("virNetworkCreate:"); testNetwork.create();
} catch (LibvirtException e){
System.out.println("exception caught:"+e);
System.out.println(e.getError());
}
+// //This should raise an excpetion
+// try{
+// System.out.println("virNetworkCreate:"); testNetwork.create();
+// } catch (LibvirtException e){
+// System.out.println("exception caught:"+e);
+// System.out.println(e.getError());
+// }
//Domain stuff
- 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.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();
+// 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.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();
}
}
--
1.6.0.6