Hi,
On 2016-09-27 21:52, Nathan Scott wrote:
> ----- Original Message -----
>> On 2016-09-27 21:28, Nathan Scott wrote:
>>> ----- Original Message -----
>>>>
>>>> Consider the following example:
>>>>
>>>> #!/usr/bin/python
>>>>
>>>> from pcp import pmapi
>>>>
>>>> pmfg = pmapi.fetchgroup()
>>>> sysload = pmfg.extend_indom("kernel.all.sysfork")
>>>>
>>>> pmfg.fetch()
>>>> for inst, name, value in sysload():
>>>> print("inst: %d" % inst)
>>>>
>>>> This prints:
>>>>
>>>> inst: -1
>>>>
>>>> Is this some constant or should this be None in the land of Python?
>>>
>>> Its cpmapi.PM_IN_NULL (aka "grep PM_IN_NULL /usr/include/pcp/pmapi.h")
>>
>> $ cat ./test.py
>> #!/usr/bin/python
>> from cpmapi import PM_IN_NULL
>> print(PM_IN_NULL)
>> $ python ./test.py
>> 4294967295
>> $ grep PM_IN_NULL /usr/include/pcp/pmapi.h
>> #define PM_IN_NULL 0xffffffff
>> $
>
> Instance identifiers are unsigned integers, so I suspect its the -1 that
> is incorrectly type-encoded somewhere. Does this help...? (untested)
>
> diff --git a/src/python/pcp/pmapi.py b/src/python/pcp/pmapi.py
> index d52426b..f566d44 100644
> --- a/src/python/pcp/pmapi.py
> +++ b/src/python/pcp/pmapi.py
> @@ -2224,7 +2224,7 @@ class fetchgroup(object):
> """Allocate a single instance to receive a fetchgroup item."""
> stss_t = c_int * num
> values_t = pmAtomValue * num
> - icodes_t = c_int * num
> + icodes_t = c_uint * num
> inames_t = c_char_p * num
> self.sts = c_int()
> self.stss = stss_t()
Yes, nice, thanks, this did the trick, please install.
Cheers,
--
Marko Myllynen
|