osaf/services/saf/amf/amfd/si.cc | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-)
In the reported issue, amfd crashes during deletion of MW NoRed SI while standby SC is coming up. Here requirement is to bring down a payload node and delete its related configuration like node, MW SI, MW SU etc. As per AMF PR doc section 7.1.4 , SI must be locked before deleting it. Also AMF allows deletion of SI in unlocked state if it is unassigned, but it is not the recommended way. Since lock operation on NoRed MW SI is not allowed, the only way to delete is when it is unassigned. This imposes another criterion to bring down the node or lock NoRed SU so that its MW SI gets unassigned and its deletion can proceed. Even in this case also, AMF can pick the same SI and assign it to some other unassigned node or any node joining the cluster that time. Thus there is no gaurantee that SI will remain unassigned. Patch allows lock and unlock admin op on MW NoRed SI accept the one assigned on active SC. 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 @@ -800,11 +800,29 @@ static void si_admin_op_cb(SaImmOiHandle si = avd_si_get(objectName); - if ((operationId != SA_AMF_ADMIN_SI_SWAP) && (si->sg_of_si->sg_ncs_spec == true)) { + if ((operationId != SA_AMF_ADMIN_SI_SWAP) && (operationId != SA_AMF_ADMIN_LOCK) && + (operationId != SA_AMF_ADMIN_UNLOCK) && (si->sg_of_si->sg_ncs_spec == true)) { report_admin_op_error(immOiHandle, invocation, SA_AIS_ERR_NOT_SUPPORTED, nullptr, "Admin operation %llu on MW SI is not allowed", operationId); goto done; } + if (((operationId == SA_AMF_ADMIN_LOCK) || (operationId == SA_AMF_ADMIN_UNLOCK)) && + (si->sg_of_si->sg_ncs_spec == true)) { + if (si->sg_of_si->sg_redundancy_model == SA_AMF_2N_REDUNDANCY_MODEL) { + report_admin_op_error(immOiHandle, invocation, + SA_AIS_ERR_NOT_SUPPORTED, nullptr, + "Admin operation %llu on MW 2N SI is not allowed", operationId); + goto done; + } else if ((si->sg_of_si->sg_redundancy_model == SA_AMF_NO_REDUNDANCY_MODEL) && + (si->list_of_sisu != nullptr) && (operationId == SA_AMF_ADMIN_LOCK) && + (avd_cb->node_id_avd == si->list_of_sisu->su->su_on_node->node_info.nodeId)) { + //No specific reason, but conforming to existing notions for active SC. + report_admin_op_error(immOiHandle, invocation, + SA_AIS_ERR_NOT_SUPPORTED, nullptr, + "Admin lock of MW SI assigned on Active SC is not allowed"); + 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)) { report_admin_op_error(immOiHandle, invocation, SA_AIS_ERR_TRY_AGAIN, nullptr, ------------------------------------------------------------------------------ Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel