osaf/tools/safimm/immcfg/imm_cfg.c |  65 +++++++++++++++++++++++---------
 1 files changed, 46 insertions(+), 19 deletions(-)


enable or disable notififications using immcfg does not work on a system 
running 2PBE.
In the 2PBE the IMM internal object opensafImm=opensafImm,safApp=safImmService 
has admin owner safImmService.
To modify the IMM object the adminoner has to be set to safImmService.

diff --git a/osaf/tools/safimm/immcfg/imm_cfg.c 
b/osaf/tools/safimm/immcfg/imm_cfg.c
--- a/osaf/tools/safimm/immcfg/imm_cfg.c
+++ b/osaf/tools/safimm/immcfg/imm_cfg.c
@@ -40,6 +40,7 @@
 
 #include <saAis.h>
 #include <saImmOm.h>
+#include <immsv_api.h>
 #include <immutil.h>
 #include <saf_error.h>
 
@@ -49,6 +50,7 @@ int verbose = 0;
 int ccb_safe = 1;
 
 int transaction_mode = 0;
+int useAdminOwner = 1;
 SaImmHandleT immHandle = 0;
 SaImmAdminOwnerNameT adminOwnerName = NULL;
 SaImmAdminOwnerHandleT ownerHandle = 0;
@@ -382,7 +384,7 @@ static SaImmAttrValuesT_2 *new_attr_valu
  * @return int
  */
 int object_create(const SaNameT **objectNames, const SaImmClassNameT className,
-       SaImmAdminOwnerHandleT ownerHandle, char **optargs, int optargs_len)
+        char **optargs, int optargs_len)
 {
        SaAisErrorT error;
        int i;
@@ -399,11 +401,20 @@ int object_create(const SaNameT **object
        SaImmClassCategoryT classCategory;
        SaImmAttrDefinitionT_2 **attrDefinitions = NULL;
 
+
+       if((ownerHandle == 0) && useAdminOwner)
+               if((error = immutil_saImmOmAdminOwnerInitialize(immHandle, 
adminOwnerName, SA_TRUE, &ownerHandle))!= SA_AIS_OK) {
+                       fprintf(stderr, "error - saImmOmAdminOwnerInitialize 
FAILED: %s\n", saf_error(error));
+                       return rc;
+               }
+
+
        if((error = saImmOmClassDescriptionGet_2(immHandle, className, 
&classCategory, &attrDefinitions)) != SA_AIS_OK) {
                fprintf(stderr, "error - saImmOmClassDescriptionGet_2. FAILED: 
%s\n", saf_error(error));
                goto done;
        }
 
+
        for (i = 0; i < optargs_len; i++) {
                VERBOSE_INFO("object_create optargs[%d]: '%s'\n", i, 
optargs[i]);
                if ((attrValue = new_attr_value(attrDefinitions, optargs[i], 
0)) == NULL){
@@ -536,7 +547,7 @@ done:
  *
  * @return int
  */
-int object_modify(const SaNameT **objectNames, SaImmAdminOwnerHandleT 
ownerHandle, char **optargs, int optargs_len)
+int object_modify(const SaNameT **objectNames, char **optargs, int optargs_len)
 {
        SaAisErrorT error;
        int i;
@@ -546,6 +557,13 @@ int object_modify(const SaNameT **object
        SaImmAttrModificationT_2 **attrMods = NULL;
        const SaStringT* errStrings=NULL;
 
+       if((ownerHandle == 0) && useAdminOwner)
+               if((error = immutil_saImmOmAdminOwnerInitialize(immHandle, 
adminOwnerName, SA_TRUE, &ownerHandle))!= SA_AIS_OK) {
+                       fprintf(stderr, "error - saImmOmAdminOwnerInitialize 
FAILED: %s\n", saf_error(error));
+                       return rc;
+               }
+
+
        for (i = 0; i < optargs_len; i++) {
                if ((attrMod = new_attr_mod(objectNames[0], optargs[i])) == 
NULL) {
                        fprintf(stderr, "error - creating attribute from 
'%s'\n", optargs[i]);
@@ -621,13 +639,19 @@ int object_modify(const SaNameT **object
  *
  * @return int
  */
-int object_delete(const SaNameT **objectNames, SaImmAdminOwnerHandleT 
ownerHandle)
+int object_delete(const SaNameT **objectNames)
 {
        SaAisErrorT error;
        int rc = EXIT_FAILURE;
        int i = 0;
        const SaStringT* errStrings=NULL;
 
+       if((ownerHandle == 0) && useAdminOwner)
+               if((error = immutil_saImmOmAdminOwnerInitialize(immHandle, 
adminOwnerName, SA_TRUE, &ownerHandle))!= SA_AIS_OK) {
+                       fprintf(stderr, "error - saImmOmAdminOwnerInitialize 
FAILED: %s\n", saf_error(error));
+                       return rc;
+               }
+
        if ((error = immutil_saImmOmAdminOwnerSet(ownerHandle, (const SaNameT 
**)objectNames,
                SA_IMM_SUBTREE)) != SA_AIS_OK) {
 
@@ -734,8 +758,7 @@ static int admin_owner_clear(const SaNam
        return 0;
 }
 
-static int class_change(SaImmHandleT immHandle, const SaImmAdminOwnerNameT 
adminOwnerName,
-               const SaImmClassNameT className, const char **attributeNames, 
attr_notify_t attrNotify)
+static int class_change(SaImmHandleT immHandle, const SaImmClassNameT 
className,                                                       const char 
**attributeNames, attr_notify_t attrNotify)
 {
        SaAisErrorT error;
        SaImmAccessorHandleT accessorHandle;
@@ -753,6 +776,19 @@ static int class_change(SaImmHandleT imm
 
        int attrNum = 0;
 
+       if(transaction_mode){
+                       fprintf(stderr, "enable or disable notififications in 
transaction mode is not supported");
+               return -1;
+       }
+
+       if((ownerHandle == 0) && useAdminOwner){
+               strcpy(adminOwnerName, OPENSAF_IMM_SERVICE_NAME);
+               if((error = immutil_saImmOmAdminOwnerInitialize(immHandle, 
adminOwnerName, SA_TRUE, &ownerHandle))!= SA_AIS_OK) {
+                       fprintf(stderr, "error - saImmOmAdminOwnerInitialize 
FAILED: %s\n", saf_error(error));
+                       return rc;
+               }
+       }
+
        /* Check if the schema change is enabled (isSchemaChangeEnabled = 1).
         * If PBE is not enabled, then this information cannot be retrieved 
from IMM,
         * and in that case, the schema change is enabled by default 
(isSchemaChangeEnabled = 2)
@@ -1103,7 +1139,6 @@ static int imm_operation(int argc, char 
                {0, 0, 0, 0}
        };
        SaAisErrorT error;
-       int useAdminOwner = 1;
        SaNameT **objectNames = NULL;
        int objectNames_len = 1;
 
@@ -1385,25 +1420,17 @@ static int imm_operation(int argc, char 
                        goto done_om_finalize;
                }
 
-               if(useAdminOwner) {
-                       error = immutil_saImmOmAdminOwnerInitialize(immHandle, 
adminOwnerName, SA_TRUE, &ownerHandle);
-                       if (error != SA_AIS_OK) {
-                               fprintf(stderr, "error - 
saImmOmAdminOwnerInitialize FAILED: %s\n", saf_error(error));
-                               rc = EXIT_FAILURE;
-                               goto done_om_finalize;
-                       }
-               }
        }
 
        switch (op) {
        case CREATE_OBJECT:
-               rc = object_create((const SaNameT **)objectNames, className, 
ownerHandle, optargs, optargs_len);
+               rc = object_create((const SaNameT **)objectNames, className, 
optargs, optargs_len);
                break;
        case DELETE_OBJECT:
-               rc = object_delete((const SaNameT **)objectNames, ownerHandle);
+               rc = object_delete((const SaNameT **)objectNames);
                break;
        case MODIFY_OBJECT:
-               rc = object_modify((const SaNameT **)objectNames, ownerHandle, 
optargs, optargs_len);
+               rc = object_modify((const SaNameT **)objectNames, optargs, 
optargs_len);
                break;
        case DELETE_CLASS:
                rc = class_delete(classNames, immHandle);
@@ -1412,7 +1439,7 @@ static int imm_operation(int argc, char 
                rc = admin_owner_clear((const SaNameT **)objectNames, 
immHandle);
                break;
        case CHANGE_CLASS :
-               rc = class_change(immHandle, adminOwnerName, className, (const 
char **)attributeNames, attrNotify);
+               rc = class_change(immHandle, className, (const char 
**)attributeNames, attrNotify);
                break;
        case TRANSACTION_MODE :
                rc = start_cmd();
@@ -1459,7 +1486,7 @@ static int imm_operation(int argc, char 
                        }
                }
 
-               if(useAdminOwner) {
+               if(useAdminOwner && ownerHandle) {
                        error = immutil_saImmOmAdminOwnerFinalize(ownerHandle);
                        if (SA_AIS_OK != error) {
                                fprintf(stderr, "error - 
saImmOmAdminOwnerFinalize FAILED: %s\n", saf_error(error));

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to