src/amf/amfd/ndfsm.cc | 4 +-- src/amf/amfd/sg.cc | 71 +++++++------------------------------------------- src/amf/amfd/sg.h | 3 +- 3 files changed, 13 insertions(+), 65 deletions(-)
The patch #2112 has been pushed that makes both amfds as earlier applier/implementer, so there's no need to add avd_sg_read_headless_fsm_state_cached_rta which was introduced in ticket #1987 diff --git a/src/amf/amfd/ndfsm.cc b/src/amf/amfd/ndfsm.cc --- a/src/amf/amfd/ndfsm.cc +++ b/src/amf/amfd/ndfsm.cc @@ -133,12 +133,10 @@ void avd_process_state_info_queue(AVD_CL // Reading sg must be after reading susi if (found_state_info == true) { LOG_NO("Enter restore headless cached RTAs from IMM"); - // Read SG Fsm state to recover nodegroup operation - avd_sg_read_headless_fsm_state_cached_rta(cb); // Read all cached susi, includes ABSENT SUSI with IMM fsm state avd_susi_read_headless_cached_rta(cb); // Read SUOperationList, set ABSENT fsm state for ABSENT SUSI - avd_sg_read_headless_su_oper_list_cached_rta(cb); + avd_sg_read_headless_cached_rta(cb); // Read SUSwitch of SU, validate toggle depends on SUSI fsm state avd_su_read_headless_cached_rta(cb); // Clean compcsi object of ABSENT SUSI diff --git a/src/amf/amfd/sg.cc b/src/amf/amfd/sg.cc --- a/src/amf/amfd/sg.cc +++ b/src/amf/amfd/sg.cc @@ -375,6 +375,15 @@ static AVD_SG *sg_create(const std::stri if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSGAdminState"), attributes, 0, &sg->saAmfSGAdminState) != SA_AIS_OK) { sg->saAmfSGAdminState = SA_AMF_ADMIN_UNLOCKED; } + // only read SG FSM State for non-ncs SG + if (sg_name.find("safApp=OpenSAF") == std::string::npos) { + if (immutil_getAttr(const_cast<SaImmAttrNameT>("osafAmfSGFsmState"), + attributes, 0, &sg->sg_fsm_state) != SA_AIS_OK) { + sg->sg_fsm_state = AVD_SG_FSM_STABLE; + } + TRACE("sg_fsm_state(%u) read from osafAmfSGFsmState", sg->sg_fsm_state); + } + /* TODO use value in type instead? */ sg->sg_redundancy_model = sgt->saAmfSgtRedundancyModel; @@ -422,6 +431,7 @@ SaAisErrorT avd_sg_config_get(const std: const_cast<SaImmAttrNameT>("saAmfSGSuRestartProb"), const_cast<SaImmAttrNameT>("saAmfSGSuRestartMax"), const_cast<SaImmAttrNameT>("saAmfSGAdminState"), + const_cast<SaImmAttrNameT>("osafAmfSGFsmState"), nullptr }; @@ -2098,66 +2108,7 @@ uint32_t AVD_SG::curr_non_instantiated_s (su->saAmfSUPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED));})); } -void avd_sg_read_headless_fsm_state_cached_rta(AVD_CL_CB *cb) -{ - - SaAisErrorT rc; - SaImmSearchHandleT searchHandle; - SaImmSearchParametersT_2 searchParam; - - SaNameT sg_dn; - AVD_SG *sg; - const SaImmAttrValuesT_2 **attributes; - AVD_SG_FSM_STATE imm_sg_fsm_state; - const char *className = "SaAmfSG"; - const SaImmAttrNameT searchAttributes[] = { - const_cast<SaImmAttrNameT>("osafAmfSGFsmState"), - NULL - }; - - TRACE_ENTER(); - - osafassert(cb->scs_absence_max_duration > 0); - - searchParam.searchOneAttr.attrName = const_cast<SaImmAttrNameT>("SaImmAttrClassName"); - searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT; - searchParam.searchOneAttr.attrValue = &className; - - if ((rc = immutil_saImmOmSearchInitialize_2(cb->immOmHandle, NULL, SA_IMM_SUBTREE, - SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_SOME_ATTR, &searchParam, - searchAttributes, &searchHandle)) != SA_AIS_OK) { - - LOG_ER("%s: saImmOmSearchInitialize_2 failed: %u", __FUNCTION__, rc); - goto done; - } - - while ((rc = immutil_saImmOmSearchNext_2(searchHandle, &sg_dn, - (SaImmAttrValuesT_2 ***)&attributes)) == SA_AIS_OK) { - sg = sg_db->find(Amf::to_string(&sg_dn)); - if (sg && sg->sg_ncs_spec == false) { - if (sg->headless_validation == false) { - continue; - } - if (sg->any_assignment_in_progress() == false && - sg->any_assignment_assigned() == false) { - continue; - } - // Read sg fsm state - rc = immutil_getAttr(const_cast<SaImmAttrNameT>("osafAmfSGFsmState"), - attributes, 0, &imm_sg_fsm_state); - osafassert(rc == SA_AIS_OK); - sg->set_fsm_state(imm_sg_fsm_state, false); - } - } - - (void)immutil_saImmOmSearchFinalize(searchHandle); - -done: - TRACE_LEAVE(); - -} - -void avd_sg_read_headless_su_oper_list_cached_rta(AVD_CL_CB *cb) +void avd_sg_read_headless_cached_rta(AVD_CL_CB *cb) { SaAisErrorT rc; diff --git a/src/amf/amfd/sg.h b/src/amf/amfd/sg.h --- a/src/amf/amfd/sg.h +++ b/src/amf/amfd/sg.h @@ -581,8 +581,7 @@ private: #define m_AVD_SET_SG_ADMIN_SI(cb,si) (si)->sg_of_si->set_admin_si((si)) #define m_AVD_CLEAR_SG_ADMIN_SI(cb,sg) (sg)->clear_admin_si() #define m_AVD_CHK_OPLIST(i_su,flag) (flag) = (i_su)->sg_of_su->in_su_oper_list(i_su) -void avd_sg_read_headless_fsm_state_cached_rta(AVD_CL_CB *cb); -void avd_sg_read_headless_su_oper_list_cached_rta(AVD_CL_CB *cb); +void avd_sg_read_headless_cached_rta(AVD_CL_CB *cb); bool avd_sg_validate_headless_cached_rta(AVD_CL_CB *cb); extern void avd_sg_delete(AVD_SG *sg); extern void avd_sg_db_add(AVD_SG *sg); ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel