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