
On 03/14/2014 01:56 PM, John Ferlan wrote:
From: Xu Wang <gesaint@linux.vnet.ibm.com>
Support being able to convert the Controller RASD into a virtual device Signed-off-by: Xu Wang <gesaint@linux.vnet.ibm.com>
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/Virt_VirtualSystemManagementService.c | 76 +++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+)
diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c index 3e7785e..26de59d 100644 --- a/src/Virt_VirtualSystemManagementService.c +++ b/src/Virt_VirtualSystemManagementService.c @@ -1838,6 +1838,53 @@ static const char *input_rasd_to_vdev(CMPIInstance *inst, return NULL; }
+static const char *controller_rasd_to_vdev(CMPIInstance *inst, + struct virt_device *dev) +{ + const char *val = NULL; + const char *msg = NULL; + int ret; + + if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) { + msg = "ControllerRASD ResourceSubType field not valid"; + goto out; + } + dev->dev.controller.type = strdup(val); + + /* Required fields */ + if (cu_get_u64_prop(inst, "Index", + &dev->dev.controller.index) != CMPI_RC_OK) { + msg = "ControllerRASD Index field not valid"; + goto out; + } As I wrote elsewhere this is going to prevent the libvirt-cim user from using the libvirt auto assignment for the index.
+ + /* Formulate our instance id from controller, controller type, + * and index value. This should be unique enough. + */
...
@@ -3029,6 +3102,7 @@ static CMPIStatus resource_del(struct domain *dominfo, if (STREQ(dev->id, devid)) { if ((type == CIM_RES_TYPE_GRAPHICS) || (type == CIM_RES_TYPE_CONSOLE) || + (type == CIM_RES_TYPE_CONTROLLER) || What is the reason for adding the controller here?
(type == CIM_RES_TYPE_INPUT)) cu_statusf(_BROKER, &s, CMPI_RC_OK, ""); else { @@ -3111,6 +3185,7 @@ static CMPIStatus resource_add(struct domain *dominfo,
Why is the controller instance not added to a running domain? Instead of restricting it in the if statement below all I think should be done is this (before the if in the patch below.) if (type == CIM_RES_TYPE_CONTROLLER && dev != NULL && dev->id == NULL) { cu_statusf(_BROKER, &s, CMPI_RC_ERR_FAILED, "Add resource failed: Index property is required."); goto out; }
if ((type == CIM_RES_TYPE_GRAPHICS) || (type == CIM_RES_TYPE_INPUT) || + (type == CIM_RES_TYPE_CONTROLLER) || (type == CIM_RES_TYPE_CONSOLE)) { (*count)++; cu_statusf(_BROKER, &s, CMPI_RC_OK, ""); @@ -3188,6 +3263,7 @@ static CMPIStatus resource_mod(struct domain *dominfo,
if ((type == CIM_RES_TYPE_GRAPHICS) || (type == CIM_RES_TYPE_INPUT) || + (type == CIM_RES_TYPE_CONTROLLER) ||
What is the reason for adding the controller here?
(type == CIM_RES_TYPE_CONSOLE)) cu_statusf(_BROKER, &s, CMPI_RC_OK, ""); else {
-- Mit freundlichen Grüßen/Kind regards Boris Fiuczynski IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Martina Köderitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294