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