Reputation: 1301
I'm using the following program:
public class minitest {
public static void main(String[] args) {
Connect conn=null;
try{
int i;
conn = new Connect("xen:///", true);
int[] id = conn.listDomains();
int no=conn.numOfDomains();
System.out.println("length " +id.length);
}
}
}
The program lists the No of virtual machines for KVM (in which case the Connect statement would vary to Connect("qemu:///system",true)
but fails for Xen. An array out of bounds exception occurs whenever I try to access id[0]. There are sufficient virtual machines running.
Only listDomain() doesn't work.
Other functions work fine on Xen and KVM.
Thanks!
Upvotes: 1
Views: 332
Reputation: 7633
Use these functions for XEN in Java
Connect conn = null;
Domain d = null;
ConnectAuth defaultAuth = new ConnectAuthDefault();
conn = new Connect("xen:///", defaultAuth, 0);
System.out.println("Capabilities: " + conn.getCapabilities());
System.out.println("hostname: " + conn.getHostName());
System.out.println("version: " + conn.getLibVirVersion());
System.out.println("isSecure: " + conn.isSecure());
System.out.println("isEncrypted: " + conn.isEncrypted());
System.out.println("numOfDomains: " + conn.numOfDomains());
System.out.println("active Domains: " + conn.listDomains().length);
int[] ids = conn.listDomains();
System.out.println("Domains informations");
for (int i : ids) {
System.out.println(DASH);
System.out.println("Domain name = " + d.getName() + " | ID = " + d.getID() + " | OSType = " + d.getOSType());
System.out.println("MaxMemory = " + d.getMaxMemory() + " | " + d.getMaxVcpus());
System.out.println("UUID = " + d.getUUIDString());
System.out.println("Active? = " + d.isActive());
System.out.println("Persistent? = " + d.isPersistent());
DomainInfo df = d.getInfo();
System.out.println("CPUTime = " + df.cpuTime);
System.out.println("MaxMem = " + df.maxMem);
System.out.println("memory = " + df.memory);
System.out.println("nrVirtCpu = " + df.nrVirtCpu);
System.out.println("state = " + df.state);
}
...
d = conn.domainLookupByID(idToDelete);
d.destroy();
...
// create a domain
System.out.println("conn.domainCreateLinux:" + conn.domainCreateLinux(xml_file, 0));
Upvotes: 1