[libvirt] [ruby PATCH] Fix default values for node_cpu_stats() and node_memory_stats()

Cole Robinson crobinso at redhat.com
Thu Nov 14 21:57:49 UTC 2019


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 at 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 at atech.media>
> Signed-off-by: Stefano Garzarella <sgarzare at 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




More information about the libvir-list mailing list