# HG changeset patch
# User Dan Smith <danms(a)us.ibm.com>
# Date 1214248235 25200
# Node ID f1e816b33b5e914523b064b19b27cb8fc61ebfcd
# Parent cee13699488177020c8050cd9e4311d74d394b2c
Make ProcRASD expose stored scheduler parameters
When we're constructing a ProcRASD, open the infostore for the domain
and read out the weight and limit attributes so they can be set
in the RASD appropriately.
Signed-off-by: Dan Smith <danms(a)us.ibm.com>
diff -r cee136994881 -r f1e816b33b5e src/Virt_RASD.c
--- a/src/Virt_RASD.c Mon Jun 23 12:10:31 2008 -0700
+++ b/src/Virt_RASD.c Mon Jun 23 12:10:35 2008 -0700
@@ -33,6 +33,7 @@
#include "misc_util.h"
#include "cs_util.h"
+#include "infostore.h"
#include "Virt_RASD.h"
#include "svpc_types.h"
@@ -91,6 +92,54 @@
{
/* FIXME: Remove this */
return NULL;
+}
+
+static CMPIStatus set_proc_rasd_params(const CMPIBroker *broker,
+ const CMPIObjectPath *ref,
+ const char *domain,
+ CMPIInstance *inst)
+{
+ CMPIStatus s = {CMPI_RC_OK, NULL};
+ virConnectPtr conn = NULL;
+ virDomainPtr dom = NULL;
+ struct infostore_ctx *info;
+ uint32_t weight;
+ uint64_t limit;
+
+ conn = connect_by_classname(broker, CLASSNAME(ref), &s);
+ if (conn == NULL)
+ return s;
+
+ dom = virDomainLookupByName(conn, domain);
+ if (dom == NULL) {
+ cu_statusf(broker, &s,
+ CMPI_RC_ERR_NOT_FOUND,
+ "Domain `%s' not found while getting info",
domain);
+ goto out;
+ }
+
+ info = infostore_open(dom);
+ if (info == NULL) {
+ cu_statusf(broker, &s,
+ CMPI_RC_ERR_FAILED,
+ "Unable to open domain information store");
+ goto out;
+ }
+
+ weight = (uint32_t)infostore_get_u64(info, "weight");
+ limit = infostore_get_u64(info, "limit");
+
+ CMSetProperty(inst, "Weight",
+ (CMPIValue *)&weight, CMPI_uint32);
+ CMSetProperty(inst, "Limit",
+ (CMPIValue *)&limit, CMPI_uint64);
+
+ out:
+ virDomainFree(dom);
+ virConnectClose(conn);
+ infostore_close(info);
+
+ return s;
}
static CMPIInstance *rasd_from_vdev(const CMPIBroker *broker,
@@ -174,6 +223,7 @@
} else if (dev->type == CIM_RES_TYPE_PROC) {
CMSetProperty(inst, "VirtualQuantity",
(CMPIValue *)&dev->dev.vcpu.quantity, CMPI_uint64);
+ set_proc_rasd_params(broker, ref, host, inst);
}
/* FIXME: Put the HostResource in place */