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

Reply via email to