On 10/22/19 11:47 AM, Stefano Garzarella wrote:
ruby_libvirt_value_to_int() returns 0 if the optional value is
not defined, but in node_cpu_stats() and node_memory_stats()
the default value of cpuNum and cellNum is -1.
I know nothing about ruby or the libvirt bindings, but what you describe
makes sense and matches my reading of the code. -1 is
VIR_NODE_CPU_STATS_ALL_CPUS and VIR_NODE_MEMORY_STATS_ALL_CELLS so it
makes sense that would be the default.
Reviewed-by: Cole Robinson <crobinso(a)redhat.com>
CCing clalance who is the primary ruby-libvirt maintainer, but if he
doesn't get to it by next week then I'll figure out how to build test
it, and push
- Cole
Reported-by: Charlie Smurthwaite <charlie(a)atech.media>
Signed-off-by: Stefano Garzarella <sgarzare(a)redhat.com>
---
ext/libvirt/connect.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/ext/libvirt/connect.c b/ext/libvirt/connect.c
index 5932535..b2d041b 100644
--- a/ext/libvirt/connect.c
+++ b/ext/libvirt/connect.c
@@ -2079,7 +2079,12 @@ static VALUE libvirt_connect_node_cpu_stats(int argc, VALUE *argv,
VALUE c)
rb_scan_args(argc, argv, "02", &intparam, &flags);
- tmp = ruby_libvirt_value_to_int(intparam);
+ if (NIL_P(intparam)) {
+ tmp = -1;
+ }
+ else {
+ tmp = ruby_libvirt_value_to_int(intparam);
+ }
return ruby_libvirt_get_parameters(c, ruby_libvirt_value_to_uint(flags),
(void *)&tmp, sizeof(virNodeCPUStats),
@@ -2139,7 +2144,12 @@ static VALUE libvirt_connect_node_memory_stats(int argc, VALUE
*argv, VALUE c)
rb_scan_args(argc, argv, "02", &intparam, &flags);
- tmp = ruby_libvirt_value_to_int(intparam);
+ if (NIL_P(intparam)) {
+ tmp = -1;
+ }
+ else {
+ tmp = ruby_libvirt_value_to_int(intparam);
+ }
return ruby_libvirt_get_parameters(c, ruby_libvirt_value_to_uint(flags),
(void *)&tmp, sizeof(virNodeMemoryStats),
- Cole