osaf/services/saf/immsv/immloadd/imm_loader.cc |  10 ++++++++--
 osaf/services/saf/immsv/immpbed/immpbe.cc      |  15 +++++++++++----
 2 files changed, 19 insertions(+), 6 deletions(-)


The patch contains osafimmpbed and osafimmloadd code that is needed for 
supporting cloud resilience feature.

diff --git a/osaf/services/saf/immsv/immloadd/imm_loader.cc 
b/osaf/services/saf/immsv/immloadd/imm_loader.cc
--- a/osaf/services/saf/immsv/immloadd/imm_loader.cc
+++ b/osaf/services/saf/immsv/immloadd/imm_loader.cc
@@ -293,11 +293,12 @@ void opensafClassCreate(SaImmHandleT imm
 {
     SaAisErrorT err = SA_AIS_OK;
     int retries=0;
-    SaImmAttrDefinitionT_2 d1, d2, d3, d4, d5, d6, d7, d8;
+    SaImmAttrDefinitionT_2 d1, d2, d3, d4, d5, d6, d7, d8, d9;
     SaUint32T nost_flags_default = 0;
     SaUint32T batch_size_default = IMMSV_DEFAULT_MAX_SYNC_BATCH_SIZE;
     SaUint32T extended_names_enabled_default = 0;
     SaUint32T access_control_mode_default = IMM_ACCESS_CONTROL_MODE;
+    SaUint32T absent_scs_allowed_default = 0;
 
     d1.attrName = (char *) OPENSAF_IMM_ATTR_RDN;
     d1.attrValueType = SA_IMM_ATTR_SANAMET;
@@ -340,8 +341,13 @@ void opensafClassCreate(SaImmHandleT imm
     d8.attrFlags = SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_WRITABLE;
     d8.attrDefaultValue = NULL;
 
+    d9.attrName = (char *) OPENSAF_IMM_SC_ABSENCE_ALLOWED;
+    d9.attrValueType = SA_IMM_ATTR_SAUINT32T;
+    d9.attrFlags = SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED | 
SA_IMM_ATTR_PERSISTENT;
+    d9.attrDefaultValue = &absent_scs_allowed_default;
+
     const SaImmAttrDefinitionT_2* attrDefs[] =
-       {&d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, 0};
+           {&d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, 0};
 
 
     do {/* Create the class */
diff --git a/osaf/services/saf/immsv/immpbed/immpbe.cc 
b/osaf/services/saf/immsv/immpbed/immpbe.cc
--- a/osaf/services/saf/immsv/immpbed/immpbe.cc
+++ b/osaf/services/saf/immsv/immpbed/immpbe.cc
@@ -93,6 +93,7 @@ int main(int argc, char* argv[])
        int c;
        struct option long_options[] = {
                {"recover", no_argument, 0, 'r'},
+               {"check-objects", no_argument, 0, 'O'},
                {"pbe", required_argument, 0, 'p'},
                {"pbe2A", required_argument, 0, 'A'},
                {"pbe2B", required_argument, 0, 'B'},
@@ -115,6 +116,7 @@ int main(int argc, char* argv[])
        bool pbeRecoverFile = false;
        bool pbe2 = false;
        bool pbe2BCase = false;
+       bool pbeVerifyObjects = false;
        void* dbHandle=NULL;
        const char* dump_trace_label = "osafimmpbed";
        const char* trace_label = dump_trace_label;
@@ -142,7 +144,7 @@ int main(int argc, char* argv[])
                /* We allow the dump to execute anyway. */
        }
 
-       if (argc < 2 || argc > 4)
+       if (argc < 2 || argc > 5)
        {
                usage(basename(argv[0]));
                exit(EXIT_FAILURE);
@@ -155,7 +157,7 @@ int main(int argc, char* argv[])
        }
 
        while (1) {
-               if ((c = getopt_long(argc, argv, "rp:", long_options, NULL)) == 
-1)
+               if ((c = getopt_long(argc, argv, "rOp:", long_options, NULL)) 
== -1)
                        break;
 
                switch (c) {
@@ -180,6 +182,9 @@ int main(int argc, char* argv[])
                                }
                                break;
 
+                       case 'O':
+                               pbeVerifyObjects = true;
+                               break;
 
                        default:
                                LOG_ER("Invalid argument to %s.", argv[0]);
@@ -190,7 +195,9 @@ int main(int argc, char* argv[])
 
        checkParentProcess();
 
-       if(pbeRecoverFile && argc == 4)
+       if(pbeRecoverFile && argc == 5)
+               filename.append(argv[4]);
+       else if(pbeRecoverFile && argc == 4)
                filename.append(argv[3]);
        else if(!pbeRecoverFile && argc == 3)
                filename.append(argv[2]);
@@ -222,7 +229,7 @@ int main(int argc, char* argv[])
                dbHandle = pbeRepositoryInit(filename.c_str(), false, 
localTmpFilename);
                /* getClassIdMap */
                if(dbHandle) {
-                       objCount = verifyPbeState(immHandle, &classIdMap, 
dbHandle);
+                       objCount = verifyPbeState(immHandle, &classIdMap, 
dbHandle, pbeVerifyObjects);
                        TRACE("Classes Verified?:%d", objCount);
                        if(objCount <= 0) {dbHandle = NULL;} 
                }

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to