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

Reply via email to