
diff -r 849171d2fbc0 -r e18c6d4d2ea4 src/Virt_VSSD.c --- a/src/Virt_VSSD.c Mon Jun 01 14:01:21 2009 -0700 +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 @@ -38,20 +38,91 @@
const static CMPIBroker *_BROKER;
-static void _set_fv_prop(struct domain *dominfo, - CMPIInstance *inst) +static CMPIStatus _set_fv_prop(const CMPIBroker *broker, + struct domain *dominfo, + CMPIInstance *inst) { bool fv = true; + CMPIArray *array; + CMPICount bl_ct; + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPICount i;
if (dominfo->type == DOMAIN_XENFV) CMSetProperty(inst, "IsFullVirt", (CMPIValue *)&fv, CMPI_boolean);
- if (dominfo->os_info.fv.boot != NULL) - CMSetProperty(inst, - "BootDevice", - (CMPIValue *)dominfo->os_info.fv.boot, - CMPI_chars); + bl_ct = dominfo->os_info.fv.bootlist_ct; + if (bl_ct < 0) + return s; + + CU_DEBUG("bootlist_ct = %d", bl_ct); + + array = CMNewArray(broker, + bl_ct, + CMPI_string, + &s); + + if (s.rc != CMPI_RC_OK) { + cu_statusf(_BROKER, &s,
This should be the broker that is passed in to the function, instead of using the provider's _BROKER.
+ CMPI_RC_ERR_FAILED, + "Error creating BootDevices list"); + CU_DEBUG("CMNewArray call failed"); + + goto out; + } + + for (i = 0; i < bl_ct; i++) { + CMPIString *cm_str; + + CU_DEBUG("BootList[%u]=%s", + i, + dominfo->os_info.fv.bootlist[i]); + + cm_str = CMNewString(broker, + (const char *)dominfo->os_info. + fv.bootlist[i], + &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error creating CMPIString"); + cu_statusf(_BROKER, &s,
Same here.
+ CMPI_RC_ERR_FAILED, + "Error creating CMPIString for " + "BootDevices item"); + + goto out; + } + + s = CMSetArrayElementAt(array, + i, + (CMPIValue *)&cm_str, + CMPI_string); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetArrayElementAT call"); + cu_statusf(_BROKER, &s,
Here as well.
+ CMPI_RC_ERR_FAILED, + "Error setting BootDevices array element"); + + goto out; + } + } + + s = CMSetProperty(inst, + "BootDevices", + (CMPIValue *)&array, + CMPI_stringA); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetProperty call"); + cu_statusf(_BROKER, &s,
And here.
+ CMPI_RC_ERR_FAILED, + "Error setting BootDevices property"); + + goto out; + } + + out: + return s; }
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com