ack/BR HansN On 11/19/13 11:36, Nagendra Kumar wrote: > Would like to push it as soon as possible. Comments ?? > > Thanks > -Nagu > -----Original Message----- > From: Nagendra Kumar > Sent: 15 November 2013 12:34 > To: hans.fe...@ericsson.com; hans.nordeb...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [devel] [PATCH 1 of 1] amfd: Add support for admin op result > strings [#85] > > Hi, > Just to inform you that I have not converted all Error cases in this > patch. > For example: > In file sg_2n_fsm.cc: function avd_sg_2n_susi_fail_func(): > avd_saImmOiAdminOperationResult(cb->immOiHandle, l_susi->si->invocation, > SA_AIS_ERR_BAD_OPERATION); > > Other places like in sgproc.cc : su_complete_admin_op(i_su, > SA_AIS_ERR_TIMEOUT); su_disable_comps(i_su, SA_AIS_ERR_TIMEOUT); > > Here we don't have any reason explicit, so response will go as usual. > > Any comments ? > > Thanks > -Nagu > > -----Original Message----- > From: Nagendra Kumar > Sent: 14 November 2013 14:32 > To: hans.fe...@ericsson.com; hans.nordeb...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: [devel] [PATCH 1 of 1] amfd: Add support for admin op result strings > [#85] > > osaf/services/saf/amf/amfd/app.cc | 24 +++--- > osaf/services/saf/amf/amfd/cluster.cc | 6 +- > osaf/services/saf/amf/amfd/comp.cc | 36 ++++------ > osaf/services/saf/amf/amfd/imm.cc | 41 +++++++++++++ > osaf/services/saf/amf/amfd/include/imm.h | 3 + > osaf/services/saf/amf/amfd/ndproc.cc | 51 +++++++--------- > osaf/services/saf/amf/amfd/node.cc | 99 > +++++++++++++++++-------------- > osaf/services/saf/amf/amfd/sg.cc | 87 +++++++++++++++------------ > osaf/services/saf/amf/amfd/sgproc.cc | 14 +-- > osaf/services/saf/amf/amfd/si.cc | 70 ++++++++++++---------- > osaf/services/saf/amf/amfd/su.cc | 86 +++++++++++++-------------- > 11 files changed, 281 insertions(+), 236 deletions(-) > > > diff --git a/osaf/services/saf/amf/amfd/app.cc > b/osaf/services/saf/amf/amfd/app.cc > --- a/osaf/services/saf/amf/amfd/app.cc > +++ b/osaf/services/saf/amf/amfd/app.cc > @@ -357,7 +357,6 @@ static void app_admin_op_cb(SaImmOiHandl > const SaNameT *object_name, SaImmAdminOperationIdT op_id, > const SaImmAdminOperationParamsT_2 **params) > { > - SaAisErrorT rc; > AVD_APP *app; > > TRACE_ENTER2("%s", object_name->value); > @@ -368,28 +367,28 @@ static void app_admin_op_cb(SaImmOiHandl > > if (op_id == SA_AMF_ADMIN_UNLOCK) { > if (app->saAmfApplicationAdminState == SA_AMF_ADMIN_UNLOCKED) { > - LOG_ER("%s is already unlocked", object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is already unlocked", > object_name->value); > goto done; > } > > if (app->saAmfApplicationAdminState == > SA_AMF_ADMIN_LOCKED_INSTANTIATION) { > - LOG_ER("%s is locked instantiation", > object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is locked instantiation", > object_name->value); > goto done; > } > } > > if (op_id == SA_AMF_ADMIN_LOCK) { > if (app->saAmfApplicationAdminState == SA_AMF_ADMIN_LOCKED) { > - LOG_ER("%s is already locked", object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is already locked", > object_name->value); > goto done; > } > > if (app->saAmfApplicationAdminState == > SA_AMF_ADMIN_LOCKED_INSTANTIATION) { > - LOG_ER("%s is locked instantiation", > object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is locked instantiation", > object_name->value); > goto done; > } > } > @@ -409,11 +408,12 @@ static void app_admin_op_cb(SaImmOiHandl > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > case SA_AMF_ADMIN_RESTART: > default: > - rc = SA_AIS_ERR_NOT_SUPPORTED; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Not supported"); > break; > } > - done: > - avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > +done: > + TRACE_LEAVE(); > } > > static SaAisErrorT app_rt_attr_cb(SaImmOiHandleT immOiHandle, > diff --git a/osaf/services/saf/amf/amfd/cluster.cc > b/osaf/services/saf/amf/amfd/cluster.cc > --- a/osaf/services/saf/amf/amfd/cluster.cc > +++ b/osaf/services/saf/amf/amfd/cluster.cc > @@ -177,8 +177,6 @@ static void cluster_admin_op_cb(SaImmOiH > SaInvocationT invocation, const SaNameT *object_name, > SaImmAdminOperationIdT op_id, const SaImmAdminOperationParamsT_2 > **params) > { > - SaAisErrorT rc = SA_AIS_OK; > - > switch (op_id) { > case SA_AMF_ADMIN_SHUTDOWN: > case SA_AMF_ADMIN_UNLOCK: > @@ -187,11 +185,9 @@ static void cluster_admin_op_cb(SaImmOiH > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > case SA_AMF_ADMIN_RESTART: > default: > - rc = SA_AIS_ERR_NOT_SUPPORTED; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, "Not supported"); > break; > } > - > - avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > } > > /** > diff --git a/osaf/services/saf/amf/amfd/comp.cc > b/osaf/services/saf/amf/amfd/comp.cc > --- a/osaf/services/saf/amf/amfd/comp.cc > +++ b/osaf/services/saf/amf/amfd/comp.cc > @@ -701,8 +701,6 @@ static void comp_admin_op_cb(SaImmOiHand > const SaNameT *objectName, SaImmAdminOperationIdT opId, > const SaImmAdminOperationParamsT_2 **params) > { > - SaAisErrorT rc = SA_AIS_OK; > - > TRACE_ENTER2("%llu, '%s', %llu", invocation, objectName->value, > opId); > > AVD_COMP *comp = avd_comp_get(objectName); > @@ -712,24 +710,24 @@ static void comp_admin_op_cb(SaImmOiHand > /* Valid B.04 AMF comp admin operations */ > case SA_AMF_ADMIN_RESTART: > if (comp->comp_info.comp_restart == true) { > - LOG_WA("Component Restart disabled '%s'", > objectName->value); > - rc = SA_AIS_ERR_NOT_SUPPORTED; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Component Restart disabled '%s'", > objectName->value); > } > else if (comp->admin_pend_cbk.invocation != 0) { > - LOG_WA("Component undergoing admin operation '%s'", > objectName->value); > - rc = SA_AIS_ERR_TRY_AGAIN; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Component undergoing admin operation > '%s'", objectName->value); > } > else if (comp->su->pend_cbk.invocation != 0) { > - LOG_WA("SU undergoing admin operation '%s'", > objectName->value); > - rc = SA_AIS_ERR_TRY_AGAIN; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SU undergoing admin operation '%s'", > objectName->value); > } > else if (comp->su->su_on_node->admin_node_pend_cbk.invocation > != 0) { > - LOG_WA("Node undergoing admin operation '%s'", > objectName->value); > - rc = SA_AIS_ERR_TRY_AGAIN; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Node undergoing admin operation '%s'", > objectName->value); > } > else if (comp->saAmfCompPresenceState != > SA_AMF_PRESENCE_INSTANTIATED) { > - LOG_WA("Component not instantiated '%s'", > objectName->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "Component not instantiated '%s'", > objectName->value); > } > else { > /* prepare the admin op req message and queue it */ > @@ -737,11 +735,10 @@ static void comp_admin_op_cb(SaImmOiHand > static_cast<SaAmfAdminOperationIdT>(opId), > comp->su->su_on_node) == NCSCC_RC_SUCCESS) { > comp->admin_pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(opId); > comp->admin_pend_cbk.invocation = invocation; > - rc = SA_AIS_OK; > } > else { > - LOG_WA("Admin op request send failed '%s'", > objectName->value); > - rc = SA_AIS_ERR_TIMEOUT; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TIMEOUT, NULL, > + "Admin op request send failed > '%s'", objectName->value); > } > } > break; > @@ -749,15 +746,12 @@ static void comp_admin_op_cb(SaImmOiHand > case SA_AMF_ADMIN_EAM_START: > case SA_AMF_ADMIN_EAM_STOP: > default: > - LOG_WA("Unsupported admin operation '%llu'", opId); > - rc = SA_AIS_ERR_NOT_SUPPORTED; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Unsupported admin operation '%llu'", opId); > break; > } > > - if (rc != SA_AIS_OK) > - avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > - > - TRACE_LEAVE2("(%u)",rc); > + TRACE_LEAVE(); > } > > static SaAisErrorT comp_rt_attr_cb(SaImmOiHandleT immOiHandle, > diff --git a/osaf/services/saf/amf/amfd/imm.cc > b/osaf/services/saf/amf/amfd/imm.cc > --- a/osaf/services/saf/amf/amfd/imm.cc > +++ b/osaf/services/saf/amf/amfd/imm.cc > @@ -1798,4 +1798,45 @@ void report_ccb_validation_error(const C > else > LOG_WA("%s", err_str); > } > +/** > + * Respond admin op to IMM > + * @param immOiHandle > + * @param invocation > + * @param result > + * @param pend_cbk > + * @param format > + * @param ... > + */ > +void report_admin_op_error(SaImmOiHandleT immOiHandle, SaInvocationT > invocation, SaAisErrorT result, > + AVD_ADMIN_OPER_CBK *pend_cbk, const char *format, ...) > +{ > + char ao_err_string[256]; > + SaAisErrorT error; > + SaStringT p_ao_err_string = ao_err_string; > + SaImmAdminOperationParamsT_2 ao_err_param = { > + const_cast<SaStringT>(SA_IMM_PARAM_ADMOP_ERROR), > + SA_IMM_ATTR_SASTRINGT, > + const_cast<SaStringT *> (&p_ao_err_string)}; > + const SaImmAdminOperationParamsT_2 *ao_err_params[2] = { > + &ao_err_param, > + NULL }; > + ao_err_string[sizeof(ao_err_string) - 1] = 0; > > + va_list ap; > + va_start(ap, format); > + (void) vsnprintf(ao_err_string, sizeof(ao_err_string), format, ap); > + va_end(ap); > + TRACE_ENTER2("inv:%llu, res:%u, Error String: '%s'", invocation, > result, ao_err_string); > + saflog(LOG_NOTICE, amfSvcUsrName, "Admin op done for invocation: %llu, > result %u", > + invocation, result); > + > + error= saImmOiAdminOperationResult_o2(immOiHandle, invocation, result, > ao_err_params); > + if (error != SA_AIS_OK) > + LOG_ER("saImmOiAdminOperationResult_o2 for %llu failed %u", > invocation, error); > + > + if (pend_cbk) { > + pend_cbk->admin_oper = static_cast<SaAmfAdminOperationIdT>(0); > + pend_cbk->invocation = 0; > + } > + > +} > diff --git a/osaf/services/saf/amf/amfd/include/imm.h > b/osaf/services/saf/amf/amfd/include/imm.h > --- a/osaf/services/saf/amf/amfd/include/imm.h > +++ b/osaf/services/saf/amf/amfd/include/imm.h > @@ -88,5 +88,8 @@ extern void avd_saImmOiAdminOperationRes > > SaAisErrorT result); > void report_ccb_validation_error(const CcbUtilOperationData_t *opdata, > const char *format, ...) __attribute__ ((format(printf, 2, 3))); > +void report_admin_op_error(SaImmOiHandleT immOiHandle, SaInvocationT > invocation, SaAisErrorT result, > + struct admin_oper_cbk *pend_cbk, > + const char *format, ...) __attribute__ ((format(printf, 5, 6))); > > #endif > diff --git a/osaf/services/saf/amf/amfd/ndproc.cc > b/osaf/services/saf/amf/amfd/ndproc.cc > --- a/osaf/services/saf/amf/amfd/ndproc.cc > +++ b/osaf/services/saf/amf/amfd/ndproc.cc > @@ -292,15 +292,17 @@ static void comp_admin_op_report_to_imm( > if (comp->admin_pend_cbk.admin_oper == SA_AMF_ADMIN_RESTART) { > if ((comp->saAmfCompPresenceState == > SA_AMF_PRESENCE_INSTANTIATED) && > (pres != SA_AMF_PRESENCE_RESTARTING)) { > - > avd_saImmOiAdminOperationResult(cb->immOiHandle,comp->admin_pend_cbk.invocation, > SA_AIS_ERR_BAD_OPERATION); > - comp->admin_pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > - comp->admin_pend_cbk.invocation = 0; > + report_admin_op_error(cb->immOiHandle, > comp->admin_pend_cbk.invocation, > + SA_AIS_ERR_BAD_OPERATION, > &comp->admin_pend_cbk, > + "Couldn't restart Comp '%s'", > comp->comp_info.name.value); > } > else if (comp->saAmfCompPresenceState == > SA_AMF_PRESENCE_RESTARTING) { > if (pres == SA_AMF_PRESENCE_INSTANTIATED) > > avd_saImmOiAdminOperationResult(cb->immOiHandle,comp->admin_pend_cbk.invocation, > SA_AIS_OK); > else > - > avd_saImmOiAdminOperationResult(cb->immOiHandle,comp->admin_pend_cbk.invocation, > SA_AIS_ERR_REPAIR_PENDING); > + report_admin_op_error(cb->immOiHandle, > comp->admin_pend_cbk.invocation, > + SA_AIS_ERR_REPAIR_PENDING, > &comp->admin_pend_cbk, > + "Couldn't restart Comp '%s'", > comp->comp_info.name.value); > > comp->admin_pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > comp->admin_pend_cbk.invocation = 0; > @@ -328,10 +330,8 @@ static void su_admin_op_report_to_imm(AV > su->pend_cbk.invocation = 0; > su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > } else if (pres == SA_AMF_PRESENCE_TERMINATION_FAILED) { > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > su->pend_cbk.invocation, > - > SA_AIS_ERR_REPAIR_PENDING); > - su->pend_cbk.invocation = 0; > - su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > + report_admin_op_error(cb->immOiHandle, > su->pend_cbk.invocation, SA_AIS_ERR_REPAIR_PENDING, > + &su->pend_cbk, "SU '%s' moved to > 'termination failed' state", su->name.value); > } > break; > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > @@ -341,10 +341,9 @@ static void su_admin_op_report_to_imm(AV > su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > } else if ((pres == SA_AMF_PRESENCE_INSTANTIATION_FAILED) || > (pres == SA_AMF_PRESENCE_TERMINATION_FAILED)) { > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > su->pend_cbk.invocation, > - > SA_AIS_ERR_REPAIR_PENDING); > - su->pend_cbk.invocation = 0; > - su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > + report_admin_op_error(cb->immOiHandle, > su->pend_cbk.invocation, SA_AIS_ERR_REPAIR_PENDING, > + &su->pend_cbk, "SU '%s' moved to > 'instantiation/termination failed' state", > + su->name.value); > } > break; > case SA_AMF_ADMIN_REPAIRED: > @@ -354,13 +353,13 @@ static void su_admin_op_report_to_imm(AV > > /* Hand over to SG and let it do the rest */ > (void) avd_sg_app_su_inst_func(cb, su->sg_of_su); > + su->pend_cbk.invocation = 0; > + su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > } else { > - LOG_WA("Bad presence state %u after '%s' adm repaired", > pres, su->name.value); > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > - su->pend_cbk.invocation, > SA_AIS_ERR_BAD_OPERATION); > + report_admin_op_error(cb->immOiHandle, > su->pend_cbk.invocation, SA_AIS_ERR_BAD_OPERATION, > + &su->pend_cbk, "Bad presence state %u > after '%s' adm repaired", pres, > + su->name.value); > } > - su->pend_cbk.invocation = 0; > - su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > break; > default: > break; > @@ -395,11 +394,9 @@ static void node_admin_op_report_to_imm( > su->su_on_node->admin_node_pend_cbk.admin_oper > = static_cast<SaAmfAdminOperationIdT>(0); > } > } else if (pres == SA_AMF_PRESENCE_TERMINATION_FAILED) { > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > - > su->su_on_node->admin_node_pend_cbk.invocation, > - > SA_AIS_ERR_REPAIR_PENDING); > - su->su_on_node->admin_node_pend_cbk.invocation = 0; > - su->su_on_node->admin_node_pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > + report_admin_op_error(cb->immOiHandle, > su->su_on_node->admin_node_pend_cbk.invocation, > + SA_AIS_ERR_REPAIR_PENDING, > &su->su_on_node->admin_node_pend_cbk, > + "SU '%s' moved to 'termination failed' > state", su->name.value); > su->su_on_node->su_cnt_admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > } /* else do nothing > ::SA_AMF_PRESENCE_TERMINATING update is valid */ > break; > @@ -416,12 +413,10 @@ static void node_admin_op_report_to_imm( > su->su_on_node->admin_node_pend_cbk.admin_oper > = static_cast<SaAmfAdminOperationIdT>(0); > } > } else if ((pres == SA_AMF_PRESENCE_TERMINATION_FAILED) || > - (pres == SA_AMF_PRESENCE_INSTANTIATION_FAILED)) { > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > - > su->su_on_node->admin_node_pend_cbk.invocation, > - > SA_AIS_ERR_REPAIR_PENDING); > - su->su_on_node->admin_node_pend_cbk.invocation = 0; > - su->su_on_node->admin_node_pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > + (pres == SA_AMF_PRESENCE_INSTANTIATION_FAILED)) > { > + report_admin_op_error(cb->immOiHandle, > su->su_on_node->admin_node_pend_cbk.invocation, > + SA_AIS_ERR_REPAIR_PENDING, > &su->su_on_node->admin_node_pend_cbk, > + "SU '%s' moved to > 'instantiation/termination failed' state", su->name.value); > su->su_on_node->su_cnt_admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > } /* else do nothing :: > SA_AMF_PRESENCE_INSTANTIATING update is valid */ > break; > 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 > @@ -819,7 +819,8 @@ void avd_node_admin_lock_unlock_shutdown > LOG_WA("invalid sg state %u for unlock", > su->sg_of_su->sg_fsm_state); > > if (invocation != 0) > - > avd_saImmOiAdminOperationResult(cb->immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN); > + report_admin_op_error(cb->immOiHandle, > invocation, SA_AIS_ERR_TRY_AGAIN, NULL, > + "invalid sg state %u > for unlock", su->sg_of_su->sg_fsm_state); > goto end; > } > > @@ -895,7 +896,10 @@ void avd_node_admin_lock_unlock_shutdown > (new_admin_state == > SA_AMF_ADMIN_LOCKED)))) { > LOG_WA("Node lock/shutdown not > allowed with two SUs on same node"); > if (invocation != 0) > - > avd_saImmOiAdminOperationResult(cb->immOiHandle, > invocation,SA_AIS_ERR_NOT_SUPPORTED); > + > report_admin_op_error(cb->immOiHandle, invocation, > + > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Node > lock/shutdown not allowed with two SUs" > + " on > same node"); > else { > > saClmResponse_4(cb->clmHandle, node->clm_pend_inv, > SA_CLM_CALLBACK_RESPONSE_ERROR); > node->clm_pend_inv = 0; > @@ -917,7 +921,10 @@ void avd_node_admin_lock_unlock_shutdown > LOG_WA("invalid sg state %u for > lock/shutdown", > > su->sg_of_su->sg_fsm_state); > if (invocation != 0) > - > avd_saImmOiAdminOperationResult(cb->immOiHandle, > invocation,SA_AIS_ERR_TRY_AGAIN); > + > report_admin_op_error(cb->immOiHandle, invocation, > + > SA_AIS_ERR_TRY_AGAIN, NULL, > + > "invalid sg state %u for lock/shutdown", > + > su->sg_of_su->sg_fsm_state); > else { > > saClmResponse_4(cb->clmHandle, node->clm_pend_inv, > SA_CLM_CALLBACK_RESPONSE_ERROR); > node->clm_pend_inv = 0; > @@ -1037,8 +1044,8 @@ static void node_admin_op_cb(SaImmOiHand > TRACE_ENTER2("%llu, '%s', %llu", invocation, objectName->value, > operationId); > > if (avd_cb->init_state != AVD_APP_STATE) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("AVD not in APP_STATE"); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "AVD not in APP_STATE"); > goto done; > } > > @@ -1046,8 +1053,10 @@ static void node_admin_op_cb(SaImmOiHand > osafassert(node != AVD_AVND_NULL); > > if (node->admin_node_pend_cbk.admin_oper != 0) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Node undergoing admin operation"); > + /* Donot pass node->admin_node_pend_cbk here as previous > counters will get reset in > + report_admin_op_error. */ > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Node undergoing admin operation"); > goto done; > } > > @@ -1056,36 +1065,36 @@ static void node_admin_op_cb(SaImmOiHand > su = node->list_of_su; > while (su != NULL) { > if (su->pend_cbk.admin_oper != 0) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("SU on this node is undergoing admin op (%s)", > su->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SU on this node is undergoing admin op > (%s)", su->name.value); > goto done; > } > if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("SG of SU on this node not in STABLE state > (%s)", su->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SG of SU on this node not in STABLE > state (%s)", su->name.value); > goto done; > } > su = su->avnd_list_su_next; > } > > if (node->clm_pend_inv != 0) { > - LOG_NO("Clm lock operation going on"); > - rc = SA_AIS_ERR_TRY_AGAIN; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Clm lock operation going on"); > goto done; > } > > switch (operationId) { > case SA_AMF_ADMIN_SHUTDOWN: > if (node->saAmfNodeAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) { > - rc = SA_AIS_ERR_NO_OP; > - LOG_WA("'%s' Already in SHUTTING DOWN state", > node->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "'%s' Already in SHUTTING DOWN state", > node->name.value); > goto done; > } > > if (node->saAmfNodeAdminState != SA_AMF_ADMIN_UNLOCKED) { > - rc = SA_AIS_ERR_BAD_OPERATION; > - LOG_WA("'%s' Invalid Admin Operation SHUTDOWN in state > %s", > - node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "'%s' Invalid Admin Operation SHUTDOWN > in state %s", > + node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > goto done; > } > > @@ -1101,15 +1110,15 @@ static void node_admin_op_cb(SaImmOiHand > > case SA_AMF_ADMIN_UNLOCK: > if (node->saAmfNodeAdminState == SA_AMF_ADMIN_UNLOCKED) { > - rc = SA_AIS_ERR_NO_OP; > - LOG_WA("'%s' Already in UNLOCKED state", > node->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "'%s' Already in UNLOCKED state", > node->name.value); > goto done; > } > > if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED) { > - rc = SA_AIS_ERR_BAD_OPERATION; > - LOG_WA("'%s' Invalid Admin Operation UNLOCK in state > %s", > - node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "'%s' Invalid Admin Operation UNLOCK in > state %s", > + node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > goto done; > } > > @@ -1125,15 +1134,15 @@ static void node_admin_op_cb(SaImmOiHand > > case SA_AMF_ADMIN_LOCK: > if (node->saAmfNodeAdminState == SA_AMF_ADMIN_LOCKED) { > - rc = SA_AIS_ERR_NO_OP; > - LOG_WA("'%s' Already in LOCKED state", > node->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "'%s' Already in LOCKED state", > node->name.value); > goto done; > } > > if (node->saAmfNodeAdminState == > SA_AMF_ADMIN_LOCKED_INSTANTIATION) { > - rc = SA_AIS_ERR_BAD_OPERATION; > - LOG_WA("'%s' Invalid Admin Operation LOCK in state %s", > - node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "'%s' Invalid Admin Operation LOCK in > state %s", > + node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > goto done; > } > > @@ -1149,15 +1158,15 @@ static void node_admin_op_cb(SaImmOiHand > > case SA_AMF_ADMIN_LOCK_INSTANTIATION: > if (node->saAmfNodeAdminState == > SA_AMF_ADMIN_LOCKED_INSTANTIATION) { > - rc = SA_AIS_ERR_NO_OP; > - LOG_WA("'%s' Already in LOCKED INSTANTIATION state", > node->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "'%s' Already in LOCKED INSTANTIATION > state", node->name.value); > goto done; > } > > if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED) { > - rc = SA_AIS_ERR_BAD_OPERATION; > - LOG_WA("'%s' Invalid Admin Operation LOCK_INSTANTIATION > in state %s", > - node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "'%s' Invalid Admin Operation > LOCK_INSTANTIATION in state %s", > + node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > goto done; > } > > @@ -1188,8 +1197,8 @@ static void node_admin_op_cb(SaImmOiHand > else > avd_saImmOiAdminOperationResult(immOiHandle, > invocation, SA_AIS_OK); > } else { > - rc = SA_AIS_ERR_REPAIR_PENDING; > - LOG_WA("LOCK_INSTANTIATION FAILED"); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_REPAIR_PENDING, NULL, > + "LOCK_INSTANTIATION FAILED"); > avd_node_oper_state_set(node, > SA_AMF_OPERATIONAL_DISABLED); > goto done; > } > @@ -1197,15 +1206,15 @@ static void node_admin_op_cb(SaImmOiHand > > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > if (node->saAmfNodeAdminState == SA_AMF_ADMIN_LOCKED) { > - rc = SA_AIS_ERR_NO_OP; > - LOG_WA("'%s' Already in LOCKED state", > node->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "'%s' Already in LOCKED state", > node->name.value); > goto done; > } > > if (node->saAmfNodeAdminState != > SA_AMF_ADMIN_LOCKED_INSTANTIATION) { > - rc = SA_AIS_ERR_BAD_OPERATION; > - LOG_WA("'%s' Invalid Admin Operation > UNLOCK_INSTANTIATION in state %s", > - node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "'%s' Invalid Admin Operation > UNLOCK_INSTANTIATION in state %s", > + node->name.value, > avd_adm_state_name[node->saAmfNodeAdminState]); > goto done; > } > > @@ -1237,21 +1246,19 @@ static void node_admin_op_cb(SaImmOiHand > avd_saImmOiAdminOperationResult(immOiHandle, > invocation, SA_AIS_OK); > } else { > rc = SA_AIS_ERR_TIMEOUT; > - LOG_WA("UNLOCK_INSTANTIATION FAILED"); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TIMEOUT, NULL, > + "UNLOCK_INSTANTIATION FAILED"); > goto done; > } > break; > > default: > - rc = SA_AIS_ERR_NOT_SUPPORTED; > - LOG_WA("UNSUPPORTED ADMIN OPERATION (%llu)", operationId); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "UNSUPPORTED ADMIN OPERATION (%llu)", > operationId); > break; > } > > done: > - if (rc != SA_AIS_OK) > - avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > - > TRACE_LEAVE2("%u", rc); > } > > diff --git a/osaf/services/saf/amf/amfd/sg.cc > b/osaf/services/saf/amf/amfd/sg.cc > --- a/osaf/services/saf/amf/amfd/sg.cc > +++ b/osaf/services/saf/amf/amfd/sg.cc > @@ -1041,7 +1041,6 @@ static void sg_admin_op_cb(SaImmOiHandle > const SaNameT *object_name, SaImmAdminOperationIdT op_id, > const SaImmAdminOperationParamsT_2 **params) > { > - SaAisErrorT rc = SA_AIS_OK; > AVD_SG *sg; > SaAmfAdminStateT adm_state; > AVD_SU *su; > @@ -1051,14 +1050,14 @@ static void sg_admin_op_cb(SaImmOiHandle > sg = avd_sg_get(object_name); > > if (sg->sg_ncs_spec == SA_TRUE) { > - LOG_ER("Admin Op on OpenSAF MW SG is not allowed"); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "Admin Op on OpenSAF MW SG is not allowed"); > goto done; > } > > if (sg->sg_fsm_state != AVD_SG_FSM_STABLE) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("SG not in STABLE state (%s)", sg->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SG not in STABLE state (%s)", sg->name.value); > goto done; > } > > @@ -1066,14 +1065,15 @@ static void sg_admin_op_cb(SaImmOiHandle > for (su = sg->list_of_su; su != NULL; su = su->sg_list_su_next) { > m_AVD_GET_SU_NODE_PTR(avd_cb, su, node); > if (su->pend_cbk.invocation != 0) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Admin operation'%u' is already going on su'%s' > belonging to the same SG", > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Admin operation'%u' is already going > on su'%s' belonging to the same SG", > su->pend_cbk.admin_oper, > su->name.value); > goto done; > } else if (node->admin_node_pend_cbk.admin_oper != 0) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Node'%s' hosting SU'%s' belonging to the same > SG, undergoing admin operation'%u'", > - node->name.value, su->name.value, > node->admin_node_pend_cbk.admin_oper); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Node'%s' hosting SU'%s' belonging to > the same SG, undergoing admin" > + " operation'%u'", node->name.value, > su->name.value, > + node->admin_node_pend_cbk.admin_oper); > goto done; > } > } > @@ -1081,21 +1081,22 @@ static void sg_admin_op_cb(SaImmOiHandle > > /* if Tolerance timer is running for any SI's withing this SG, then > return SA_AIS_ERR_TRY_AGAIN */ > if (sg_is_tolerance_timer_running_for_any_si(sg)) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Tolerance timer is running for some of the SI's in the > SG '%s', so differing admin opr",sg->name.value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Tolerance timer is running for some of the > SI's in the SG '%s'," > + " so differing admin opr", sg->name.value); > goto done; > } > switch (op_id) { > case SA_AMF_ADMIN_UNLOCK: > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_UNLOCKED) { > - LOG_ER("%s is already unlocked", object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is already unlocked", > object_name->value); > goto done; > } > > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_LOCKED_INSTANTIATION) > { > - LOG_ER("%s is locked instantiation", > object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is locked instantiation", > object_name->value); > goto done; > } > > @@ -1103,21 +1104,22 @@ static void sg_admin_op_cb(SaImmOiHandle > avd_sg_admin_state_set(sg, SA_AMF_ADMIN_UNLOCKED); > if (avd_sg_app_sg_admin_func(avd_cb, sg) != NCSCC_RC_SUCCESS) { > avd_sg_admin_state_set(sg, adm_state); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + NULL); > goto done; > } > break; > > case SA_AMF_ADMIN_LOCK: > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_LOCKED) { > - LOG_ER("%s is already locked", object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is already locked", > object_name->value); > goto done; > } > > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_LOCKED_INSTANTIATION) > { > - LOG_ER("%s is locked instantiation", > object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is locked instantiation", > object_name->value); > goto done; > } > > @@ -1125,22 +1127,23 @@ static void sg_admin_op_cb(SaImmOiHandle > avd_sg_admin_state_set(sg, SA_AMF_ADMIN_LOCKED); > if (avd_sg_app_sg_admin_func(avd_cb, sg) != NCSCC_RC_SUCCESS) { > avd_sg_admin_state_set(sg, adm_state); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + NULL); > goto done; > } > > break; > case SA_AMF_ADMIN_SHUTDOWN: > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) { > - LOG_ER("%s is shutting down", object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is shutting down", > object_name->value); > goto done; > } > > if ((sg->saAmfSGAdminState == SA_AMF_ADMIN_LOCKED) || > (sg->saAmfSGAdminState == > SA_AMF_ADMIN_LOCKED_INSTANTIATION)) { > - LOG_ER("%s is locked (instantiation)", > object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is locked (instantiation)", > object_name->value); > goto done; > } > > @@ -1148,20 +1151,21 @@ static void sg_admin_op_cb(SaImmOiHandle > avd_sg_admin_state_set(sg, SA_AMF_ADMIN_SHUTTING_DOWN); > if (avd_sg_app_sg_admin_func(avd_cb, sg) != NCSCC_RC_SUCCESS) { > avd_sg_admin_state_set(sg, adm_state); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + NULL); > goto done; > } > break; > case SA_AMF_ADMIN_LOCK_INSTANTIATION: > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_LOCKED_INSTANTIATION) > { > - LOG_ER("%s is already locked-instantiation", > object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is already locked-instantiation", > object_name->value); > goto done; > } > > if (sg->saAmfSGAdminState != SA_AMF_ADMIN_LOCKED) { > - LOG_ER("%s is not locked", object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is not locked", object_name->value); > goto done; > } > > @@ -1169,21 +1173,22 @@ static void sg_admin_op_cb(SaImmOiHandle > avd_sg_admin_state_set(sg, SA_AMF_ADMIN_LOCKED_INSTANTIATION); > if (sg_app_sg_admin_lock_inst(avd_cb, sg) != NCSCC_RC_SUCCESS) { > avd_sg_admin_state_set(sg, adm_state); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + NULL); > goto done; > } > > break; > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > if (sg->saAmfSGAdminState == SA_AMF_ADMIN_LOCKED) { > - LOG_ER("%s is already locked", object_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "%s is already locked", > object_name->value); > goto done; > } > > if (sg->saAmfSGAdminState != SA_AMF_ADMIN_LOCKED_INSTANTIATION) > { > - LOG_ER("%s is not in locked instantiation state", > object_name->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "%s is not in locked instantiation > state", object_name->value); > goto done; > } > > @@ -1193,11 +1198,13 @@ static void sg_admin_op_cb(SaImmOiHandle > break; > case SA_AMF_ADMIN_SG_ADJUST: > default: > - rc = SA_AIS_ERR_NOT_SUPPORTED; > - break; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Admin Operation '%llu' not supported", op_id); > + goto done; > } > - done: > - avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > + avd_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_OK); > +done: > + TRACE_LEAVE(); > } > > static SaAisErrorT sg_rt_attr_cb(SaImmOiHandleT immOiHandle, > 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 > @@ -1104,11 +1104,9 @@ void avd_su_si_assign_evh(AVD_CL_CB *cb, > su->su_on_node->admin_node_pend_cbk.invocation > = 0; > su->su_on_node->admin_node_pend_cbk.admin_oper > = static_cast<SaAmfAdminOperationIdT>(0); > } else if (n2d_msg->msg_info.n2d_su_si_assign.error != > NCSCC_RC_SUCCESS) { > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > - > su->su_on_node->admin_node_pend_cbk.invocation, > - SA_AIS_ERR_REPAIR_PENDING); > - su->su_on_node->admin_node_pend_cbk.invocation > = 0; > - su->su_on_node->admin_node_pend_cbk.admin_oper > = static_cast<SaAmfAdminOperationIdT>(0); > + report_admin_op_error(cb->immOiHandle, > su->su_on_node->admin_node_pend_cbk.invocation, > + SA_AIS_ERR_REPAIR_PENDING, > &su->su_on_node->admin_node_pend_cbk, > + NULL); > su->su_on_node->su_cnt_admin_oper = 0; > } > /* else admin oper still not complete */ > @@ -1519,10 +1517,8 @@ void avd_node_down_mw_susi_failover(AVD_ > /* send pending callback for this node if any */ > if (avnd->admin_node_pend_cbk.invocation != 0) { > LOG_WA("Response to admin callback due to node fail"); > - avd_saImmOiAdminOperationResult(cb->immOiHandle, > avnd->admin_node_pend_cbk.invocation, > - SA_AIS_ERR_REPAIR_PENDING); > - avnd->admin_node_pend_cbk.invocation = 0; > - avnd->admin_node_pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(0); > + report_admin_op_error(cb->immOiHandle, > avnd->admin_node_pend_cbk.invocation, > + SA_AIS_ERR_REPAIR_PENDING, > &avnd->admin_node_pend_cbk, "node failure"); > avnd->su_cnt_admin_oper = 0; > } > > diff --git a/osaf/services/saf/amf/amfd/si.cc > b/osaf/services/saf/amf/amfd/si.cc > --- a/osaf/services/saf/amf/amfd/si.cc > +++ b/osaf/services/saf/amf/amfd/si.cc > @@ -772,39 +772,40 @@ static void si_admin_op_cb(SaImmOiHandle > const SaNameT *objectName, SaImmAdminOperationIdT operationId, > const SaImmAdminOperationParamsT_2 **params) > { > - SaAisErrorT rc = SA_AIS_OK; > uint32_t err = NCSCC_RC_FAILURE; > AVD_SI *si; > SaAmfAdminStateT adm_state = static_cast<SaAmfAdminStateT>(0); > SaAmfAdminStateT back_val; > + SaAisErrorT rc = SA_AIS_OK; > > TRACE_ENTER2("%s op=%llu", objectName->value, operationId); > > si = avd_si_get(objectName); > > if ((operationId != SA_AMF_ADMIN_SI_SWAP) && (si->sg_of_si->sg_ncs_spec > == SA_TRUE)) { > - rc = SA_AIS_ERR_NOT_SUPPORTED; > - LOG_WA("Admin operation %llu on MW SI is not allowed", > operationId); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Admin operation %llu on MW SI is not allowed", > operationId); > goto done; > } > /* if Tolerance timer is running for any SI's withing this SG, then > return SA_AIS_ERR_TRY_AGAIN */ > if (sg_is_tolerance_timer_running_for_any_si(si->sg_of_si)) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Tolerance timer is running for some of the SI's in > the SG '%s', so differing admin opr",si->sg_of_si->name.value); > - goto done; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Tolerance timer is running for some of the > SI's in the SG '%s', " > + "so differing admin > opr",si->sg_of_si->name.value); > + goto done; > } > > switch (operationId) { > case SA_AMF_ADMIN_UNLOCK: > if (SA_AMF_ADMIN_UNLOCKED == si->saAmfSIAdminState) { > - LOG_WA("SI unlock of %s failed, already unlocked", > objectName->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "SI unlock of %s failed, already > unlocked", objectName->value); > goto done; > } > > if (si->sg_of_si->sg_fsm_state != AVD_SG_FSM_STABLE) { > - LOG_WA("SI unlock of %s failed, SG not stable", > objectName->value); > - rc = SA_AIS_ERR_TRY_AGAIN; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SI unlock of %s failed, SG not > stable", objectName->value); > goto done; > } > > @@ -812,24 +813,25 @@ static void si_admin_op_cb(SaImmOiHandle > > err = si->sg_of_si->si_func(avd_cb, si); > if (err != NCSCC_RC_SUCCESS) { > - LOG_WA("SI unlock of %s failed", objectName->value); > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "SI unlock of %s failed", > objectName->value); > avd_si_admin_state_set(si, SA_AMF_ADMIN_LOCKED); > - rc = SA_AIS_ERR_BAD_OPERATION; > + goto done; > } > > break; > > case SA_AMF_ADMIN_SHUTDOWN: > if (SA_AMF_ADMIN_SHUTTING_DOWN == si->saAmfSIAdminState) { > - LOG_WA("SI unlock of %s failed, already shutting down", > objectName->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "SI unlock of %s failed, already > shutting down", objectName->value); > goto done; > } > > if ((SA_AMF_ADMIN_LOCKED == si->saAmfSIAdminState) || > (SA_AMF_ADMIN_LOCKED_INSTANTIATION == > si->saAmfSIAdminState)) { > - LOG_WA("SI unlock of %s failed, is locked > (instantiation)", objectName->value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "SI unlock of %s failed, is locked > (instantiation)", objectName->value); > goto done; > } > adm_state = SA_AMF_ADMIN_SHUTTING_DOWN; > @@ -841,8 +843,8 @@ static void si_admin_op_cb(SaImmOiHandle > adm_state = SA_AMF_ADMIN_LOCKED; > > if (SA_AMF_ADMIN_LOCKED == si->saAmfSIAdminState) { > - LOG_WA("SI lock of %s failed, already locked", > objectName->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "SI lock of %s failed, already locked", > objectName->value); > goto done; > } > > @@ -862,8 +864,8 @@ static void si_admin_op_cb(SaImmOiHandle > if ((si->sg_of_si->sg_fsm_state != AVD_SG_FSM_SI_OPER) > || > (si->saAmfSIAdminState != > SA_AMF_ADMIN_SHUTTING_DOWN) || > (adm_state != SA_AMF_ADMIN_LOCKED)) { > - LOG_WA("'%s' other semantics...", > objectName->value); > - rc = SA_AIS_ERR_TRY_AGAIN; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "'%s' other semantics...", > objectName->value); > goto done; > } > } > @@ -873,20 +875,26 @@ static void si_admin_op_cb(SaImmOiHandle > > err = si->sg_of_si->si_admin_down(avd_cb, si); > if (err != NCSCC_RC_SUCCESS) { > - LOG_WA("SI shutdown/lock of %s failed", > objectName->value); > avd_si_admin_state_set(si, back_val); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "SI shutdown/lock of %s failed", > objectName->value); > + goto done; > } > > break; > > case SA_AMF_ADMIN_SI_SWAP: > - if (si->sg_of_si->si_swap != NULL) > + if (si->sg_of_si->si_swap != NULL) { > rc = si->sg_of_si->si_swap(si, invocation); > - else { > - LOG_WA("SI SWAP of %s failed, not supported for > redundancy model", > + if (rc != SA_AIS_OK) { > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "SI Swap of %s failed", > objectName->value); > + goto done; > + } > + } else { > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "SI SWAP of %s failed, not supported > for redundancy model", > objectName->value); > - rc = SA_AIS_ERR_NOT_SUPPORTED; > goto done; > } > break; > @@ -895,14 +903,14 @@ static void si_admin_op_cb(SaImmOiHandle > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > case SA_AMF_ADMIN_RESTART: > default: > - LOG_WA("SI Admin operation %llu not supported", operationId); > - rc = SA_AIS_ERR_NOT_SUPPORTED; > - break; > + report_admin_op_error(immOiHandle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "SI Admin operation %llu not supported", > operationId); > + goto done; > } > > + if ((operationId != SA_AMF_ADMIN_SI_SWAP)) > + avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > done: > - if ((operationId != SA_AMF_ADMIN_SI_SWAP) || (rc != SA_AIS_OK)) > - avd_saImmOiAdminOperationResult(immOiHandle, invocation, rc); > TRACE_LEAVE(); > } > > 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 > @@ -875,19 +875,18 @@ static void su_admin_op_cb(SaImmOiHandle > SaAmfAdminStateT adm_state = > static_cast<SaAmfAdminStateT>(SA_AMF_ADMIN_LOCK); > SaAmfReadinessStateT back_red_state; > SaAmfAdminStateT back_admin_state; > - SaAisErrorT rc = SA_AIS_OK; > > TRACE_ENTER2("%llu, '%s', %llu", invocation, su_name->value, op_id); > > if ( op_id > SA_AMF_ADMIN_SHUTDOWN && op_id != SA_AMF_ADMIN_REPAIRED) { > - rc = SA_AIS_ERR_NOT_SUPPORTED; > - LOG_WA("Unsupported admin op for SU: %llu", op_id); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Unsupported admin op for SU: %llu", op_id); > goto done; > } > > if (cb->init_state != AVD_APP_STATE ) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("AMF (state %u) is not available for admin ops", > cb->init_state); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "AMF (state %u) is not available for admin > ops", cb->init_state); > goto done; > } > > @@ -899,29 +898,30 @@ static void su_admin_op_cb(SaImmOiHandle > > if ((su->sg_of_su->sg_ncs_spec == SA_TRUE) > && (cb->node_id_avd == su->su_on_node->node_info.nodeId)) { > - rc = SA_AIS_ERR_NOT_SUPPORTED; > - LOG_WA("Admin operation on Active middleware SU is not > allowed"); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_NOT_SUPPORTED, NULL, > + "Admin operation on Active middleware SU is not > allowed"); > goto done; > } > > /* Avoid multiple admin operations on other SUs belonging to the same > SG. */ > for (su_ptr = su->sg_of_su->list_of_su; su_ptr != NULL; su_ptr = > su_ptr->sg_list_su_next) { > if (su_ptr->pend_cbk.invocation != 0) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Admin operation is already going on (su'%s')", > su_ptr->name.value); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Admin operation is already going on > (su'%s')", su_ptr->name.value); > goto done; > } > } > > if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("SG state is not stable"); /* whatever that means... */ > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SG state is not stable"); /* whatever that > means... */ > goto done; > } > /* if Tolerance timer is running for any SI's withing this SG, then > return SA_AIS_ERR_TRY_AGAIN */ > if (sg_is_tolerance_timer_running_for_any_si(su->sg_of_su)) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Tolerance timer is running for some of the SI's in the > SG '%s', so differing admin opr",su->sg_of_su->name.value); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Tolerance timer is running for some of the > SI's in the SG '%s', " > + "so differing admin > opr",su->sg_of_su->name.value); > goto done; > } > > @@ -931,8 +931,9 @@ static void su_admin_op_cb(SaImmOiHandle > (op_id == SA_AMF_ADMIN_LOCK_INSTANTIATION)) > || > ((su->saAmfSUAdminState == SA_AMF_ADMIN_LOCKED) && (op_id == > SA_AMF_ADMIN_UNLOCK_INSTANTIATION))) { > > - rc = SA_AIS_ERR_NO_OP; > - LOG_WA("Admin operation (%llu) has no effect on current state > (%u)", op_id, su->saAmfSUAdminState); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "Admin operation (%llu) has no effect on > current state (%u)", op_id, > + su->saAmfSUAdminState); > goto done; > } > > @@ -950,16 +951,16 @@ static void su_admin_op_cb(SaImmOiHandle > ((su->saAmfSUAdminState != SA_AMF_ADMIN_UNLOCKED) && > (op_id == SA_AMF_ADMIN_SHUTDOWN))) { > > - rc = SA_AIS_ERR_BAD_OPERATION; > - LOG_WA("State transition invalid, state %u, op %llu", > su->saAmfSUAdminState, op_id); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "State transition invalid, state %u, op %llu", > su->saAmfSUAdminState, op_id); > goto done; > } > > m_AVD_GET_SU_NODE_PTR(cb, su, node); > if (node->admin_node_pend_cbk.admin_oper != 0) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("Node'%s' hosting SU'%s', undergoing admin > operation'%u'", node->name.value, su->name.value, > - node->admin_node_pend_cbk.admin_oper); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Node'%s' hosting SU'%s', undergoing admin > operation'%u'", node->name.value, > + su->name.value, > node->admin_node_pend_cbk.admin_oper); > goto done; > } > > @@ -1000,8 +1001,8 @@ static void su_admin_op_cb(SaImmOiHandle > } else { > avd_su_readiness_state_set(su, > SA_AMF_READINESS_OUT_OF_SERVICE); > avd_su_admin_state_set(su, SA_AMF_ADMIN_LOCKED); > - rc = SA_AIS_ERR_FAILED_OPERATION; > - LOG_WA("SG redundancy model specific handler failed"); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_FAILED_OPERATION, NULL, > + "SG redundancy model specific handler > failed"); > goto done; > } > > @@ -1042,8 +1043,8 @@ static void su_admin_op_cb(SaImmOiHandle > } else { > avd_su_readiness_state_set(su, back_red_state); > avd_su_admin_state_set(su, back_admin_state); > - rc = SA_AIS_ERR_FAILED_OPERATION; > - LOG_WA("SG redundancy model specific handler failed"); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_FAILED_OPERATION, NULL, > + "SG redundancy model specific handler > failed"); > goto done; > } > > @@ -1059,8 +1060,8 @@ static void su_admin_op_cb(SaImmOiHandle > } > > if ( su->list_of_susi != NULL ) { > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_WA("SIs still assigned to this SU"); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "SIs still assigned to this SU"); > goto done; > } > > @@ -1089,8 +1090,8 @@ static void su_admin_op_cb(SaImmOiHandle > > goto done; > } > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_ER("Internal error, could not send message to > avnd"); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, NULL, > + "Internal error, could not send message > to avnd"); > goto done; > } else { > avd_su_admin_state_set(su, > SA_AMF_ADMIN_LOCKED_INSTANTIATION); > @@ -1103,8 +1104,8 @@ static void su_admin_op_cb(SaImmOiHandle > case SA_AMF_ADMIN_UNLOCK_INSTANTIATION: > > if (NULL == su->list_of_comp) { > - LOG_WA("There is no component configured for SU '%s'.", > su->name.value); > - rc = SA_AIS_ERR_BAD_OPERATION; > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "There is no component configured for > SU '%s'.", su->name.value); > goto done; > } > > @@ -1119,9 +1120,9 @@ static void su_admin_op_cb(SaImmOiHandle > } > > if (su->saAmfSUPresenceState != SA_AMF_PRESENCE_UNINSTANTIATED) > { > - LOG_WA("Can't instantiate '%s', whose presense state is > '%u'", su_name->value, > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_BAD_OPERATION, NULL, > + "Can't instantiate '%s', whose presense > state is '%u'", su_name->value, > su->saAmfSUPresenceState); > - rc = SA_AIS_ERR_BAD_OPERATION; > goto done; > } > > @@ -1141,8 +1142,8 @@ static void su_admin_op_cb(SaImmOiHandle > > goto done; > } > - rc = SA_AIS_ERR_TRY_AGAIN; > - LOG_ER("Internal error, could not send message to > avnd"); > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TRY_AGAIN, &su->pend_cbk, > + "Internal error, could not send message > to avnd"); > } else { > avd_su_admin_state_set(su, SA_AMF_ADMIN_LOCKED); > avd_saImmOiAdminOperationResult(immoi_handle, > invocation, SA_AIS_OK); > @@ -1152,8 +1153,8 @@ static void su_admin_op_cb(SaImmOiHandle > break; > case SA_AMF_ADMIN_REPAIRED: > if (su->saAmfSUOperState == SA_AMF_OPERATIONAL_ENABLED) { > - LOG_NO("Admin repair request for '%s', op state already > enabled", su_name->value); > - rc = SA_AIS_ERR_NO_OP; > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_NO_OP, NULL, > + "Admin repair request for '%s', op > state already enabled", su_name->value); > goto done; > } > > @@ -1162,24 +1163,21 @@ static void su_admin_op_cb(SaImmOiHandle > su->su_on_node) == NCSCC_RC_SUCCESS) { > su->pend_cbk.admin_oper = > static_cast<SaAmfAdminOperationIdT>(op_id); > su->pend_cbk.invocation = invocation; > - rc = SA_AIS_OK; > } > else { > - LOG_WA("Admin op request send failed '%s'", > su_name->value); > - rc = SA_AIS_ERR_TIMEOUT; > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_TIMEOUT, NULL, > + "Admin op request send failed '%s'", > su_name->value); > } > break; > default: > - LOG_ER("Unsupported admin op"); > - rc = SA_AIS_ERR_INVALID_PARAM; > + report_admin_op_error(immoi_handle, invocation, > SA_AIS_ERR_INVALID_PARAM, NULL, > + "Unsupported admin op"); > break; > } > > done: > - if (rc != SA_AIS_OK) > - avd_saImmOiAdminOperationResult(immoi_handle, invocation, rc); > > - TRACE_LEAVE2("%u", rc); > + TRACE_LEAVE2(); > } > > static SaAisErrorT su_rt_attr_cb(SaImmOiHandleT immOiHandle, > > ------------------------------------------------------------------------------ > DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps > OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access > Free app hosting. Or install the open source package on any LAMP server. > Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! > http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > > ------------------------------------------------------------------------------ > DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps > OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access > Free app hosting. Or install the open source package on any LAMP server. > Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! > http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel
------------------------------------------------------------------------------ Shape the Mobile Experience: Free Subscription Software experts and developers: Be at the forefront of tech innovation. Intel(R) Software Adrenaline delivers strategic insight and game-changing conversations that shape the rapidly evolving mobile landscape. Sign up now. http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel