osaf/services/saf/amf/amfd/include/su.h | 2 +- osaf/services/saf/amf/amfd/node.cc | 4 +- osaf/services/saf/amf/amfd/sg_2n_fsm.cc | 12 ++++---- osaf/services/saf/amf/amfd/sg_nway_fsm.cc | 2 +- osaf/services/saf/amf/amfd/sgproc.cc | 31 ++++++++++---------- osaf/services/saf/amf/amfd/su.cc | 46 +++++++++++++++++------------- 6 files changed, 51 insertions(+), 46 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/include/su.h b/osaf/services/saf/amf/amfd/include/su.h --- a/osaf/services/saf/amf/amfd/include/su.h +++ b/osaf/services/saf/amf/amfd/include/su.h @@ -110,6 +110,7 @@ class AVD_SU { struct avd_sutype *su_type; AVD_SU *su_list_su_type_next; + void readiness_state_set(SaAmfReadinessStateT readiness_state); void oper_state_set(SaAmfOperationalStateT state); void delete_all_susis(void); void set_all_susis_assigned_quiesced(void); @@ -207,7 +208,6 @@ void avd_su_del_avnd_list(AVD_CL_CB *cb, extern SaAisErrorT avd_su_config_get(const SaNameT *sg_name, struct avd_sg_tag *sg); extern void avd_su_pres_state_set(AVD_SU *su, SaAmfPresenceStateT pres_state); -extern void avd_su_readiness_state_set(AVD_SU *su, SaAmfReadinessStateT readiness_state); extern void avd_su_admin_state_set(AVD_SU *su, SaAmfAdminStateT admin_state); /** diff --git a/osaf/services/saf/amf/amfd/node.cc b/osaf/services/saf/amf/amfd/node.cc --- a/osaf/services/saf/amf/amfd/node.cc +++ b/osaf/services/saf/amf/amfd/node.cc @@ -887,7 +887,7 @@ void avd_node_admin_lock_unlock_shutdown * state, so AMFND will not assign the role to components. Anyway when SU gets * instantiated, then assignment will be given to components/SU. */ - avd_su_readiness_state_set(su, SA_AMF_READINESS_IN_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); su->sg_of_su->su_insvc(cb, su); @@ -1005,7 +1005,7 @@ void avd_node_admin_lock_unlock_shutdown su = node->list_of_su; while (su != NULL) { is_assignments_done = false; - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if (su->list_of_susi != AVD_SU_SI_REL_NULL) { is_assignments_done = true; su->sg_of_su->su_admin_down(cb, su, node); diff --git a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc --- a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc +++ b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc @@ -1375,7 +1375,7 @@ uint32_t avd_sg_2n_su_fault_func(AVD_CL_ o_susi = AVD_SU_SI_REL_NULL; a_su = su->sg_of_su->list_of_su; while (a_su != NULL) { - avd_su_readiness_state_set(a_su, SA_AMF_READINESS_OUT_OF_SERVICE); + a_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if ((a_su->list_of_susi != AVD_SU_SI_REL_NULL) && (avd_su_state_determine(a_su) == SA_AMF_HA_STANDBY)){ o_susi = a_su->list_of_susi; @@ -1404,7 +1404,7 @@ uint32_t avd_sg_2n_su_fault_func(AVD_CL_ o_susi = AVD_SU_SI_REL_NULL; a_su = su->sg_of_su->list_of_su; while (a_su != NULL) { - avd_su_readiness_state_set(a_su, SA_AMF_READINESS_OUT_OF_SERVICE); + a_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if ((a_su->list_of_susi != AVD_SU_SI_REL_NULL) && (avd_su_state_determine(a_su) == SA_AMF_HA_STANDBY)){ o_susi = a_su->list_of_susi; @@ -2567,7 +2567,7 @@ uint32_t avd_sg_2n_susi_sucss_func(AVD_C avd_sg_admin_state_set(su->sg_of_su, SA_AMF_ADMIN_LOCKED); a_su = su->sg_of_su->list_of_su; while (a_su != NULL) { - avd_su_readiness_state_set(a_su, SA_AMF_READINESS_OUT_OF_SERVICE); + a_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); a_su = a_su->sg_list_su_next; } } /* if ((susi == AVD_SU_SI_REL_NULL) && (act == AVSV_SUSI_ACT_MOD) && @@ -2596,7 +2596,7 @@ uint32_t avd_sg_2n_susi_sucss_func(AVD_C avd_sg_admin_state_set(su->sg_of_su, SA_AMF_ADMIN_LOCKED); a_su = su->sg_of_su->list_of_su; while (a_su != NULL) { - avd_su_readiness_state_set(a_su, SA_AMF_READINESS_OUT_OF_SERVICE); + a_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); a_su = a_su->sg_list_su_next; } } else { @@ -2889,7 +2889,7 @@ uint32_t avd_sg_2n_susi_fail_func(AVD_CL avd_sg_admin_state_set(su->sg_of_su, SA_AMF_ADMIN_LOCKED); a_su = su->sg_of_su->list_of_su; while (a_su != NULL) { - avd_su_readiness_state_set(a_su, SA_AMF_READINESS_OUT_OF_SERVICE); + a_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); a_su = a_su->sg_list_su_next; } @@ -3660,7 +3660,7 @@ void avd_sg_2n_node_fail_func(AVD_CL_CB i_su = su->sg_of_su->list_of_su; while (i_su != NULL) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); i_su = i_su->sg_list_su_next; } } /* if (avd_su_state_determine(su) == SA_AMF_HA_QUIESCING) */ diff --git a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc --- a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc +++ b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc @@ -1815,7 +1815,7 @@ uint32_t avd_sg_nway_su_fault_sg_realign (SA_AMF_ADMIN_SHUTTING_DOWN == su_node_ptr->saAmfNodeAdminState)) { if (su->saAmfSUAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) { avd_su_admin_state_set(su, SA_AMF_ADMIN_LOCKED); - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); } else if (su_node_ptr->saAmfNodeAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) { m_AVD_IS_NODE_LOCK((su_node_ptr), flag); if (flag == true) { diff --git a/osaf/services/saf/amf/amfd/sgproc.cc b/osaf/services/saf/amf/amfd/sgproc.cc --- a/osaf/services/saf/amf/amfd/sgproc.cc +++ b/osaf/services/saf/amf/amfd/sgproc.cc @@ -291,7 +291,7 @@ static uint32_t sg_su_failover_func(AVD_ } su->oper_state_set(SA_AMF_OPERATIONAL_DISABLED); - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if (su->saAmfSUAdminState == SA_AMF_ADMIN_LOCKED) su_complete_admin_op(su, SA_AIS_OK); else @@ -481,7 +481,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb if (cb->init_state == AVD_INIT_DONE) { su->oper_state_set(SA_AMF_OPERATIONAL_DISABLED); - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if (n2d_msg->msg_info.n2d_opr_state.node_oper_state == SA_AMF_OPERATIONAL_DISABLED) { /* Mark the node operational state as disable and make all the * application SUs in the node as O.O.S. @@ -490,14 +490,14 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb node->recvr_fail_sw = true; i_su = node->list_of_su; while (i_su != NULL) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); i_su = i_su->avnd_list_su_next; } } /* if (n2d_msg->msg_info.n2d_opr_state.node_oper_state == SA_AMF_OPERATIONAL_DISABLED) */ } /* if(cb->init_state == AVD_INIT_DONE) */ else if (cb->init_state == AVD_APP_STATE) { su->oper_state_set(SA_AMF_OPERATIONAL_DISABLED); - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if (n2d_msg->msg_info.n2d_opr_state.node_oper_state == SA_AMF_OPERATIONAL_DISABLED) { /* Mark the node operational state as disable and make all the * application SUs in the node as O.O.S. Also call the SG FSM @@ -528,7 +528,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb case SA_AMF_NODE_SWITCHOVER: i_su = node->list_of_su; while (i_su != NULL) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); if (i_su->list_of_susi != AVD_SU_SI_REL_NULL) { /* Delay Node reboot if: a)Faulted SU has saAmfSUFailover set but @@ -653,7 +653,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb if (su->sg_of_su->sg_ncs_spec == true) { m_AVD_GET_SU_NODE_PTR(cb, su, su_node_ptr); if (su->saAmfSUAdminState == SA_AMF_ADMIN_UNLOCKED) { - avd_su_readiness_state_set(su, SA_AMF_READINESS_IN_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); /* Run the SG FSM */ if (su->sg_of_su->su_insvc(cb, su) == NCSCC_RC_FAILURE) { /* Bad situation. Free the message and return since @@ -661,7 +661,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb * comeback which we can then process. */ LOG_ER("%s:%d %s", __FUNCTION__, __LINE__, su->name.value); - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); goto done; } } @@ -678,8 +678,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb } if (m_AVD_APP_SU_IS_INSVC(su, su_node_ptr)) { - - avd_su_readiness_state_set(su, SA_AMF_READINESS_IN_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); if ((cb->init_state == AVD_APP_STATE) && (old_state == SA_AMF_READINESS_OUT_OF_SERVICE)) { /* An application SU has become in service call SG FSM */ if (su->sg_of_su->su_insvc(cb, su) == NCSCC_RC_FAILURE) { @@ -1297,7 +1296,7 @@ void avd_sg_app_node_su_inst_func(AVD_CL m_AVD_GET_SU_NODE_PTR(cb, i_su, su_node_ptr); if (m_AVD_APP_SU_IS_INSVC(i_su, su_node_ptr)) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_IN_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); } } } @@ -1379,7 +1378,7 @@ uint32_t avd_sg_app_su_inst_func(AVD_CL_ m_AVD_GET_SU_NODE_PTR(cb, i_su, su_node_ptr); if (m_AVD_APP_SU_IS_INSVC(i_su, su_node_ptr)) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_IN_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); i_su->sg_of_su->su_insvc(cb, i_su); if (i_su->list_of_susi != AVD_SU_SI_REL_NULL) { @@ -1476,7 +1475,7 @@ uint32_t avd_sg_app_sg_admin_func(AVD_CL ((i_su->saAmfSUPreInstantiable) ? (i_su->saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATED):true)) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_IN_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); } } @@ -1484,7 +1483,7 @@ uint32_t avd_sg_app_sg_admin_func(AVD_CL /* set all the SUs to OOS return failure */ for (i_su = sg->list_of_su; i_su != NULL; i_su = i_su->sg_list_su_next) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); } goto done; @@ -1502,7 +1501,7 @@ uint32_t avd_sg_app_sg_admin_func(AVD_CL } for (i_su = sg->list_of_su; i_su != NULL; i_su = i_su->sg_list_su_next) { - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); } break; @@ -1554,7 +1553,7 @@ void avd_node_down_mw_susi_failover(AVD_ while (i_su != NULL) { i_su->oper_state_set(SA_AMF_OPERATIONAL_DISABLED); avd_su_pres_state_set(i_su, SA_AMF_PRESENCE_UNINSTANTIATED); - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); su_complete_admin_op(i_su, SA_AIS_ERR_TIMEOUT); su_disable_comps(i_su, SA_AIS_ERR_TIMEOUT); @@ -1605,7 +1604,7 @@ void avd_node_down_appl_susi_failover(AV while (i_su != NULL) { i_su->oper_state_set(SA_AMF_OPERATIONAL_DISABLED); avd_su_pres_state_set(i_su, SA_AMF_PRESENCE_UNINSTANTIATED); - avd_su_readiness_state_set(i_su, SA_AMF_READINESS_OUT_OF_SERVICE); + i_su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); /* Check if there was any admin operations going on this SU. */ su_complete_admin_op(i_su, SA_AIS_ERR_TIMEOUT); diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc --- a/osaf/services/saf/amf/amfd/su.cc +++ b/osaf/services/saf/amf/amfd/su.cc @@ -808,28 +808,32 @@ void AVD_SU::oper_state_set(SaAmfOperati * @param su * @param readiness_state */ -void avd_su_readiness_state_set(AVD_SU *su, SaAmfReadinessStateT readiness_state) -{ +void AVD_SU::readiness_state_set(SaAmfReadinessStateT readiness_state) { + if (this->saAmfSuReadinessState == readiness_state) + return; + AVD_COMP *comp = NULL; - if (su->saAmfSuReadinessState == readiness_state) - return; osafassert(readiness_state <= SA_AMF_READINESS_STOPPING); - TRACE_ENTER2("'%s' %s", su->name.value, avd_readiness_state_name[readiness_state]); - saflog(LOG_NOTICE, amfSvcUsrName, "%s ReadinessState %s => %s", su->name.value, - avd_readiness_state_name[su->saAmfSuReadinessState], avd_readiness_state_name[readiness_state]); - su->saAmfSuReadinessState = readiness_state; - avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUReadinessState", - SA_IMM_ATTR_SAUINT32T, &su->saAmfSuReadinessState); - m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, su, AVSV_CKPT_SU_READINESS_STATE); + TRACE_ENTER2("'%s' %s", this->name.value, + avd_readiness_state_name[readiness_state]); + saflog(LOG_NOTICE, amfSvcUsrName, "%s ReadinessState %s => %s", + this->name.value, + avd_readiness_state_name[this->saAmfSuReadinessState], + avd_readiness_state_name[readiness_state]); + this->saAmfSuReadinessState = readiness_state; + avd_saImmOiRtObjectUpdate(&this->name, "saAmfSUReadinessState", + SA_IMM_ATTR_SAUINT32T, &this->saAmfSuReadinessState); + m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_READINESS_STATE); - /* Since Su readiness state has changed, we need to change it for all the component in this SU.*/ - comp = su->list_of_comp; + /* Since Su readiness state has changed, we need to change it for all the + * component in this SU.*/ + comp = this->list_of_comp; while (comp != NULL) { SaAmfReadinessStateT saAmfCompReadinessState; - if ((su->saAmfSuReadinessState == SA_AMF_READINESS_IN_SERVICE) && + if ((this->saAmfSuReadinessState == SA_AMF_READINESS_IN_SERVICE) && (comp->saAmfCompOperState == SA_AMF_OPERATIONAL_ENABLED)) { saAmfCompReadinessState = SA_AMF_READINESS_IN_SERVICE; - } else if((su->saAmfSuReadinessState == SA_AMF_READINESS_STOPPING) && + } else if((this->saAmfSuReadinessState == SA_AMF_READINESS_STOPPING) && (comp->saAmfCompOperState == SA_AMF_OPERATIONAL_ENABLED)) { saAmfCompReadinessState = SA_AMF_READINESS_STOPPING; } else @@ -838,6 +842,8 @@ void avd_su_readiness_state_set(AVD_SU * avd_comp_readiness_state_set(comp, saAmfCompReadinessState); comp = comp->su_comp_next; } + + TRACE_LEAVE(); } void avd_su_admin_state_set(AVD_SU *su, SaAmfAdminStateT admin_state) @@ -987,7 +993,7 @@ static void su_admin_op_cb(SaImmOiHandle * node oper state and SU oper state are marked enabled after they gets assignments. * So, we cann't check compatibility with m_AVD_APP_SU_IS_INSVC for them. */ - avd_su_readiness_state_set(su, SA_AMF_READINESS_IN_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_IN_SERVICE); if (su->sg_of_su->su_insvc(cb, su) != NCSCC_RC_SUCCESS) is_oper_successful = false; @@ -1006,7 +1012,7 @@ static void su_admin_op_cb(SaImmOiHandle goto done; } } else { - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); avd_su_admin_state_set(su, SA_AMF_ADMIN_LOCKED); report_admin_op_error(immoi_handle, invocation, SA_AIS_ERR_FAILED_OPERATION, NULL, "SG redundancy model specific handler failed"); @@ -1021,7 +1027,7 @@ static void su_admin_op_cb(SaImmOiHandle case SA_AMF_ADMIN_LOCK: if (su->list_of_susi == NULL) { - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); avd_su_admin_state_set(su, SA_AMF_ADMIN_LOCKED); avd_sg_app_su_inst_func(cb, su->sg_of_su); avd_saImmOiAdminOperationResult(immoi_handle, invocation, SA_AIS_OK); @@ -1030,7 +1036,7 @@ static void su_admin_op_cb(SaImmOiHandle back_red_state = su->saAmfSuReadinessState; back_admin_state = su->saAmfSUAdminState; - avd_su_readiness_state_set(su, SA_AMF_READINESS_OUT_OF_SERVICE); + su->readiness_state_set(SA_AMF_READINESS_OUT_OF_SERVICE); avd_su_admin_state_set(su, adm_state); if (su->sg_of_su->su_admin_down(cb, su, node) != NCSCC_RC_SUCCESS) @@ -1048,7 +1054,7 @@ static void su_admin_op_cb(SaImmOiHandle avd_saImmOiAdminOperationResult(immoi_handle, invocation, SA_AIS_OK); } } else { - avd_su_readiness_state_set(su, back_red_state); + su->readiness_state_set(back_red_state); avd_su_admin_state_set(su, back_admin_state); report_admin_op_error(immoi_handle, invocation, SA_AIS_ERR_FAILED_OPERATION, NULL, "SG redundancy model specific handler failed"); ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel