Hi Bryan,
I've applied and tested the PATCH and still does not work.
Here is the console output:
-> [chipiron04, Domain-0, XenTest, XenTest2, chipiron03]
Dec 15, 2009 9:49:14 AM net.emotivecloud.virtmonitor.VirtMonitor getCPUPriority
SEVERE: Error: getting CPU priority of "XenTest".class java.lang.NullPointerException
java.lang.NullPointerException
at org.libvirt.SchedParameter.create(Unknown Source)
at org.libvirt.Domain.getSchedulerParameters(Unknown Source)
at net.emotivecloud.virtmonitor.VirtMonitor.getCPUPriority(VirtMonitor.java:495)
at net.emotivecloud.virtmonitor.VirtMonitor.main(VirtMonitor.java:775)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:636)
-1
Dec 15, 2009 9:49:14 AM net.emotivecloud.virtmonitor.VirtMonitor getCPUCapacity
SEVERE: Error: getting CPU capacity of "XenTest".
java.lang.NullPointerException
at org.libvirt.SchedParameter.create(Unknown Source)
at org.libvirt.Domain.getSchedulerParameters(Unknown Source)
at net.emotivecloud.virtmonitor.VirtMonitor.getCPUCapacity(VirtMonitor.java:470)
at net.emotivecloud.virtmonitor.VirtMonitor.main(VirtMonitor.java:776)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:636)
-1
Both GetCPUCapacity and GetCPUPriority use the schedparameter type. Here is the code and the main.
getDomain method just returns the domain object itself and I've also tested it's not null value at this point of the code:
public int getCPUCapacity(String name) {
int ret = -1;
try {
Domain d = getDomain(name);
SchedParameter[] pars= d.getSchedulerParameters();
for (SchedParameter pri : pars) {
if (pri.field=="cap")
ret=Integer.parseInt(pri.getValueAsString());
}
} catch (Exception e) {
log.error(" Error: getting CPU capacity of \""+name+"\".");
e.printStackTrace();
}
return ret;
}
/**
* Returns CPU Priority assigned to VM name
* @param name
* @return
*/
public int getCPUPriority(String name) {
int res=-1;
try {
Domain d = getDomain(name);
SchedParameter[] pars = d.getSchedulerParameters();
for (SchedParameter pri : pars) {
if (pri.field=="weight")
res=Integer.parseInt(pri.getValueAsString());
}
} catch (Exception e) {
log.error(" Error: getting CPU priority of \""+name+"\"." + e.getClass());
e.printStackTrace();
}
return res;
}
public static void main(String args[]) {
VirtMonitor virt = new VirtMonitor();
System.out.println(" -> " + virt.getDomains());
System.out.println(virt.getCPUPriority("XenTest"));
System.out.println(virt.getCPUCapacity("XenTest"));
}
Thanks in advance,
Marc Gonzalez Mateo
marcg@ac.upc.edu
Universitat Politècnica de Catalunya
El 14/12/2009, a las 16:41, Bryan Kearney escribió:
Can you send me more info on the use case.. and I will try and recreate it? In the mean time.. tell me if the patched jar file at:
http://bkearney.fedorapeople.org/libvirt-0.4.0-PATCH.jar
works. You will need to download this and copy it into
/usr/share/java/libvirt-0.4.0.jar
-- bk
On 12/14/2009 04:22 AM, Marc Gonzalez Mateo wrote:
OK, let's see if Bryan has an idea/solution about this.
Thanks guys!
MARC
El 11/12/2009, a las 14:29, Daniel Veillard escribió:
On Fri, Dec 11, 2009 at 02:01:36PM +0100, Marc Gonzalez Mateo wrote:
Hi everyvody,
I'm developing a new API based on libvirt.
I'm currently stucked using getSchedulerParameters, always is returning a
nullpointerexception, no matter which Xen Domain I'm passing to the
function.
Enclosing both the code and the error console:
public int getCPUPriority(String name) {
int res=-1;
try {
Domain d = getDomain(name);
SchedParameter[] pars = d.getSchedulerParameters();
Hum, it seems
Domain.getSchedulerParameters()
does
SchedParameter[] returnValue = new SchedParameter[0];
and
public static SchedParameter create(virSchedParameter vParam) {
SchedParameter returnValue = null;
switch (vParam.type) {
case (1):
and the create method getting there gets a null pointer as the
initialization argument, which it first dereference ...
so not surprizing looking at the code, maybe Bryan has an idea of what
is going on there, I'm a bit lost in this initialization process ...
Daniel
for (SchedParameter pri : pars) {
if (pri.field=="weight")
res=Integer.parseInt(pri.getValueAsString());
}
} catch (LibvirtException e) {
log.error(" Error: getting CPU priority of \""+name+"\"." +
e.getClass());
e.printStackTrace();
}
return res;
}
Dec 11, 2009 1:04:18 PM net.emotivecloud.virtmonitor.VirtMonitor
getCPUCapacity
SEVERE: Error: getting CPU capacity of "XenTest".
java.lang.NullPointerException
at org.libvirt.SchedParameter.create(Unknown Source)
at org.libvirt.Domain.getSchedulerParameters(Unknown Source)
at
net.emotivecloud.virtmonitor.VirtMonitor.getCPUCapacity(VirtMonitor.java:462)
at net.emotivecloud.virtmonitor.VirtMonitor.main(VirtMonitor.java:763)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:636)
Any ideas?
Thanks in advance,
Marc Gonzalez Mateo
--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/