[Libvirt-cim] cu_parse_embedded_instance() different results on sfcb & pegasus

Zhengang Li zli at linux.vnet.ibm.com
Mon Oct 29 09:52:20 UTC 2007


The VSMS.defineSystem method on pegasus currently blocks on the this 
difference:
After cu_parse_embedded_instance(), I can get a correct value on those 
integer type
property (e.g. ResourceType) with a sfcb CIMOM. But I failed to get any 
value from
a pegasus CIMOM. Try the following patch:

diff -r 0868c5ff8fd7 src/Virt_VirtualSystemManagementService.c
--- a/src/Virt_VirtualSystemManagementService.c Thu Oct 25 09:39:46 2007 
-0700
+++ b/src/Virt_VirtualSystemManagementService.c Mon Oct 29 17:42:52 2007 
+0800
@@ -56,8 +56,21 @@ static int parse_str_inst_array(CMPIArra
                                         _BROKER,
                                         &inst);

-                if (ret == 0)
+                if (ret == 0) {
+                        int tret = 0;
+                        char * mystr = NULL;
+                        uint16_t myint = 0;
+                        tret = cu_get_str_prop(inst, "InstanceID", &mystr);
+                       if (tret == 0) {
+                              printf("InstanceID = %s\n", mystr);
+                              free(mystr);
+                        }
+                        tret = cu_get_u16_prop(inst, "ResourceType", 
&myint);
+                       if (tret == 0) {
+                              printf("ResourceType = %d\n", myint);
+                        }
                         inst_list_add(list, inst);
+                }
         }

         return 1;

The actual code that breaks lives in the function classify_resources(), 
I added the patch
above to the function parse_str_inst_array(), right after a successful 
cu_parse_embedded_instance().
On sfcb, you'll see both lines (InstanceID & ResourceType). But on 
pegasus, only the InstanceID lines.

I turned on the EODEBUG macro. Messages from libcmpiutil told me that 
the integer types are set
as SINT64 type. The lexer & parser also take all the integer types as 
sint64 type. Is that the cause?

-- 
- Zhengang





More information about the Libvirt-cim mailing list