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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel