|
From: Chris B. <buc...@us...> - 2012-02-28 22:03:39
|
Update of /cvsroot/sblim/sfcb
In directory vz-cvs-3.sog:/tmp/cvs-serv13669
Modified Files:
interopServerProvider.c ChangeLog NEWS
Log Message:
[ 3416164 ] Don't write CIM_IndicationService to disk
Index: NEWS
===================================================================
RCS file: /cvsroot/sblim/sfcb/NEWS,v
retrieving revision 1.641
retrieving revision 1.642
diff -u -d -r1.641 -r1.642
--- NEWS 28 Feb 2012 21:36:16 -0000 1.641
+++ NEWS 28 Feb 2012 22:03:36 -0000 1.642
@@ -32,6 +32,7 @@
- 3492362 Problem with whitespace trimming if local connect only
- 3457460 PAM_RHOST set wrong
- 3495343 Bad pointer references in trace statements
+- 3416164 Don't write CIM_IndicationService to disk
Changes in 1.3.13
=================
Index: interopServerProvider.c
===================================================================
RCS file: /cvsroot/sblim/sfcb/interopServerProvider.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- interopServerProvider.c 21 Jun 2011 22:12:12 -0000 1.34
+++ interopServerProvider.c 28 Feb 2012 22:03:36 -0000 1.35
@@ -36,6 +36,7 @@
#include "native.h"
#include "control.h"
#include "config.h"
+#include "objectpath.h"
#define NEW(x) ((x *) malloc(sizeof(x)))
@@ -396,32 +397,108 @@
_SFCB_RETURN(st);
}
+static CMPIObjectPath* makeIndServiceOP() {
+
+ CMPIStatus st = { CMPI_RC_OK, 0 };
+ char str[512];
+ CMPIObjectPath* op=CMNewObjectPath(_broker,"root/interop","CIM_IndicationService",&st);
+ CMAddKey(op,"CreationClassName","CIM_IndicationService",CMPI_chars);
+ CMAddKey(op,"SystemCreationClassName","CIM_ComputerSystem",CMPI_chars);
+ str[0]=str[511]=0;
+ gethostname(str,511);
+ CMAddKey(op,"SystemName",str,CMPI_chars);
+ CMAddKey(op,"Name",getSfcbUuid(),CMPI_chars);
+
+ return op;
+}
+
+static CMPIStatus makeIndService(CMPIInstance *ci)
+{
+ CMPIStatus st = { CMPI_RC_OK, 0 };
+
+ CMPIBoolean filterCreation=1;
+ CMPIUint16 retryAttempts,subRemoval;
+ CMPIUint32 tmp,retryInterval,subRemovalInterval;
+
+
+ // Get the retry parameters from the config file
+ getControlUNum("DeliveryRetryInterval", &retryInterval);
+ getControlUNum("DeliveryRetryAttempts", &tmp);
+ if (tmp > UINT16_MAX) {
+ // Exceeded max range, set to default
+ mlogf(M_ERROR, M_SHOW, "--- Value for DeliveryRetryAttempts exceeds range, using default.\n");
+ retryAttempts=3;
+ } else {
+ retryAttempts=(CMPIUint16) tmp;
+ }
+ getControlUNum("SubscriptionRemovalTimeInterval", &subRemovalInterval);
+ getControlUNum("SubscriptionRemovalAction", &tmp);
+ if (tmp > UINT16_MAX) {
+ // Exceeded max range, set to default
+ mlogf(M_ERROR, M_SHOW, "--- Value for SubscriptionRemovalAction exceeds range, using default.\n");
+ subRemoval=2;
+ } else {
+ subRemoval= (CMPIUint16) tmp;
+ }
+
+ CMSetProperty(ci,"CreationClassName","CIM_IndicationService",CMPI_chars);
+ CMSetProperty(ci,"SystemCreationClassName","CIM_ComputerSystem",CMPI_chars);
+ CMSetProperty(ci,"Name",getSfcbUuid(),CMPI_chars);
+ CMSetProperty(ci,"FilterCreationEnabled",&filterCreation,CMPI_boolean);
+ CMSetProperty(ci,"ElementName","sfcb",CMPI_chars);
+ CMSetProperty(ci,"Description",PACKAGE_STRING,CMPI_chars);
+ CMSetProperty(ci,"DeliveryRetryAttempts",&retryAttempts,CMPI_uint16);
+ CMSetProperty(ci,"DeliveryRetryInterval",&retryInterval,CMPI_uint32);
+ CMSetProperty(ci,"SubscriptionRemovalAction",&subRemoval,CMPI_uint16);
+ CMSetProperty(ci,"SubscriptionRemovalTimeInterval",&subRemovalInterval,CMPI_uint32);
+
+ return st;
+}
+
static CMPIStatus IndServiceProviderGetInstance(CMPIInstanceMI * mi,
const CMPIContext * ctx,
const CMPIResult * rslt,
const CMPIObjectPath * ref,
const char **properties)
{
- CMPIStatus st = { CMPI_RC_OK, NULL };
- CMPIObjectPath *op;
- CMPIInstance *indService = NULL;
-
+
+ CMPIStatus st = { CMPI_RC_OK, 0 };
+ CMPIInstance* ci = NULL;
+
_SFCB_ENTER(TRACE_PROVIDERS, "IndServiceProviderGetInstance");
- CMPIContext *ctxLocal;
- ctxLocal = native_clone_CMPIContext(ctx);
- CMPIValue val;
- val.string = sfcb_native_new_CMPIString("$DefaultProvider$", NULL,0);
- ctxLocal->ft->addEntry(ctxLocal, "rerouteToProvider", &val, CMPI_string);
+ CMPIObjectPath* op = makeIndServiceOP();
- op = CMNewObjectPath(_broker, "root/interop", "CIM_IndicationService", NULL);
- indService = CBGetInstance(_broker, ctxLocal, ref, properties, &st);
+ /* compare object paths to see if we're being asked for the one we have
+ if ref is NULL, then skip it, because we're haning an ei call */
+ if ((ref !=NULL) && objectpathCompare(op, ref)) {
+ st.rc=CMPI_RC_ERR_NOT_FOUND;
+ _SFCB_RETURN(st);
+ }
- CMReturnInstance(rslt,indService);
- CMReturnDone(rslt);
-
- if(ctxLocal) CMRelease(ctxLocal);
- _SFCB_RETURN(st);
+#ifdef SETTABLERETRY
+
+ /* check if it exists first */
+ CMPIContext *ctxLocal;
+ ctxLocal = native_clone_CMPIContext(ctx);
+ CMPIValue val;
+ val.string = sfcb_native_new_CMPIString("$DefaultProvider$", NULL,0);
+ ctxLocal->ft->addEntry(ctxLocal, "rerouteToProvider", &val, CMPI_string);
+
+ ci = CBGetInstance(_broker, ctxLocal, ref, properties, &st);
+
+#else
+
+ ci = CMNewInstance(_broker, op, &st);
+
+ makeIndService(ci);
+
+#endif
+
+ CMReturnInstance(rslt,ci);
+ CMReturnDone(rslt);
+
+ _SFCB_RETURN(st);
}
static CMPIStatus IndServiceProviderEnumInstances(CMPIInstanceMI * mi,
@@ -431,16 +508,18 @@
const char **properties)
{
CMPIStatus st = { CMPI_RC_OK, NULL };
- CMPIObjectPath *op;
- CMPIEnumeration *indServices = NULL;
-
+
_SFCB_ENTER(TRACE_PROVIDERS, "IndServiceProviderEnumInstances");
- CMPIContext *ctxLocal;
- ctxLocal = native_clone_CMPIContext(ctx);
- CMPIValue val;
- val.string = sfcb_native_new_CMPIString("$DefaultProvider$", NULL,0);
- ctxLocal->ft->addEntry(ctxLocal, "rerouteToProvider", &val, CMPI_string);
+#ifdef SETTABLERETRY
+
+ CMPIObjectPath *op;
+ CMPIEnumeration *indServices = NULL;
+ CMPIContext *ctxLocal;
+ ctxLocal = native_clone_CMPIContext(ctx);
+ CMPIValue val;
+ val.string = sfcb_native_new_CMPIString("$DefaultProvider$", NULL,0);
+ ctxLocal->ft->addEntry(ctxLocal, "rerouteToProvider", &val, CMPI_string);
op = CMNewObjectPath(_broker, "root/interop", "CIM_IndicationService", NULL);
indServices = CBEnumInstances(_broker, ctxLocal, op, properties, &st);
@@ -449,8 +528,13 @@
CMReturnInstance(rslt,CMGetNext(indServices, NULL).value.inst);
}
CMReturnDone(rslt);
-
+
if(ctxLocal) CMRelease(ctxLocal);
+
+#else
+ st = IndServiceProviderGetInstance(mi, ctx, rslt, NULL, properties);
+#endif
+
_SFCB_RETURN(st);
}
@@ -770,65 +854,37 @@
return notSuppSt;
}
-void ServerProviderInitInstances(const CMPIContext * ctx) {
- CMPIStatus st = { CMPI_RC_OK, 0 };
- char str[512];
- CMPIObjectPath * op = NULL;
+void ServerProviderInitInstances(const CMPIContext* ctx) {
+
+ /* only applicable if we're relying on InternalProvider */
+#ifdef SETTABLERETRY
+
+ CMPIStatus st;
+ CMPIInstance *ci;
+ CMPIObjectPath *op;
CMPIValue val;
- CMPIInstance * ci = NULL;
- CMPIContext * ctxLocal;
- CMPIBoolean filterCreation=1;
- CMPIUint16 retryAttempts,subRemoval;
- CMPIUint32 tmp,retryInterval,subRemovalInterval;
-
- // Get the retry parameters from the config file
- getControlUNum("DeliveryRetryInterval", &retryInterval);
- getControlUNum("DeliveryRetryAttempts", &tmp);
- if (tmp > UINT16_MAX) {
- // Exceeded max range, set to default
- mlogf(M_ERROR, M_SHOW, "--- Value for DeliveryRetryAttempts exceeds range, using default.\n");
- retryAttempts=3;
- } else {
- retryAttempts=(CMPIUint16) tmp;
- }
- getControlUNum("SubscriptionRemovalTimeInterval", &subRemovalInterval);
- getControlUNum("SubscriptionRemovalAction", &tmp);
- if (tmp > UINT16_MAX) {
- // Exceeded max range, set to default
- mlogf(M_ERROR, M_SHOW, "--- Value for SubscriptionRemovalAction exceeds range, using default.\n");
- subRemoval=2;
- } else {
- subRemoval= (CMPIUint16) tmp;
- }
+ CMPIContext *ctxLocal;
ctxLocal = native_clone_CMPIContext(ctx);
val.string = sfcb_native_new_CMPIString("$DefaultProvider$", NULL,0);
ctxLocal->ft->addEntry(ctxLocal, "rerouteToProvider", &val, CMPI_string);
- op=CMNewObjectPath(_broker,"root/interop","CIM_IndicationService",&st);
- CMAddKey(op,"CreationClassName","CIM_IndicationService",CMPI_chars);
- CMAddKey(op,"SystemCreationClassName","CIM_ComputerSystem",CMPI_chars);
- str[0]=str[511]=0;
- gethostname(str,511);
- CMAddKey(op,"SystemName",str,CMPI_chars);
- CMAddKey(op,"Name",getSfcbUuid(),CMPI_chars);
- // Delete the instance so we can replace with proper values
+ op = makeIndServiceOP();
+
+ /* a brutal way to update values; because of this, changes don't persist */
CBDeleteInstance(_broker,ctxLocal,op);
+
ci = CMNewInstance(_broker, op, &st);
- CMSetProperty(ci,"CreationClassName","CIM_IndicationService",CMPI_chars);
- CMSetProperty(ci,"SystemCreationClassName","CIM_ComputerSystem",CMPI_chars);
- CMSetProperty(ci,"SystemName",str,CMPI_chars);
- CMSetProperty(ci,"Name",getSfcbUuid(),CMPI_chars);
- CMSetProperty(ci,"FilterCreationEnabled",&filterCreation,CMPI_boolean);
- CMSetProperty(ci,"ElementName","sfcb",CMPI_chars);
- CMSetProperty(ci,"Description",PACKAGE_STRING,CMPI_chars);
- CMSetProperty(ci,"DeliveryRetryAttempts",&retryAttempts,CMPI_uint16);
- CMSetProperty(ci,"DeliveryRetryInterval",&retryInterval,CMPI_uint32);
- CMSetProperty(ci,"SubscriptionRemovalAction",&subRemoval,CMPI_uint16);
- CMSetProperty(ci,"SubscriptionRemovalTimeInterval",&subRemovalInterval,CMPI_uint32);
+ makeIndService(ci);
+
+ op = CMGetObjectPath(ci, &st);
+
CBCreateInstance(_broker, ctxLocal, op, ci, &st);
CMRelease(ctxLocal);
+
+#endif
+
return;
}
Index: ChangeLog
===================================================================
RCS file: /cvsroot/sblim/sfcb/ChangeLog,v
retrieving revision 1.718
retrieving revision 1.719
diff -u -d -r1.718 -r1.719
--- ChangeLog 28 Feb 2012 21:36:16 -0000 1.718
+++ ChangeLog 28 Feb 2012 22:03:36 -0000 1.719
@@ -1,3 +1,8 @@
+2012-02-28 Chris Buccella <buc...@li...>
+
+ * interopServerProvider.c:
+ [ 3416164 ] Don't write CIM_IndicationService to disk
+
2012-02-28 Dave Heller <hel...@us...>
* cimslpSLP.c, indCIMXMLExport.c:
|