osaf/services/saf/amf/amfd/nodegroup.cc |  31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)


If a lock-in operation is ordered on a nodegroup, only perform this on a node
if the node is in 'locked' state.

If an unlock-in operation is ordered on a nodegroup, only perform this on a node
if it's in the 'locked instantiation' state.

diff --git a/osaf/services/saf/amf/amfd/nodegroup.cc 
b/osaf/services/saf/amf/amfd/nodegroup.cc
--- a/osaf/services/saf/amf/amfd/nodegroup.cc
+++ b/osaf/services/saf/amf/amfd/nodegroup.cc
@@ -970,16 +970,10 @@
                for (std::set<std::string>::const_iterator iter = 
ng->saAmfNGNodeList.begin();
                     iter != ng->saAmfNGNodeList.end(); ++iter) {
                        AVD_AVND *node = avd_node_get(*iter);
-                       node->su_cnt_admin_oper = 0;
-                       node->admin_ng = ng;
-                       node_sus_termstate_set(node, true);
-                       if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED)
+
+                       if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED) {
                                continue;
-                       node_admin_state_set(node, 
SA_AMF_ADMIN_LOCKED_INSTANTIATION);
-               }
-               for (std::set<std::string>::const_iterator iter = 
ng->saAmfNGNodeList.begin();
-                    iter != ng->saAmfNGNodeList.end(); ++iter) {
-                       AVD_AVND *node = avd_node_get(*iter);
+                       }
                        if (node->node_info.member == false) {
                                LOG_NO("'%s' LOCK_INSTANTIATION: CLM node is 
not member", node->name.value);
                                continue;
@@ -988,6 +982,17 @@
                                LOG_NO("'%s' LOCK_INSTANTIATION: AMF node oper 
state disabled", node->name.value);
                                continue;
                        }
+                       if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED) {
+                               LOG_NO("'%s' LOCK_INSTANTIATION: AMF node admin 
state is not LOCKED", node->name.value);
+                               continue;
+                       }
+
+                       node->su_cnt_admin_oper = 0;
+                       node->admin_ng = ng;
+                       node_sus_termstate_set(node, true);
+
+                       node_admin_state_set(node, 
SA_AMF_ADMIN_LOCKED_INSTANTIATION);
+
                        avd_node_admin_lock_instantiation(node);
                        TRACE("node:'%s', su_cnt_admin_oper:%u",
                                        node->name.value, 
node->su_cnt_admin_oper);
@@ -1037,11 +1042,13 @@
                for (std::set<std::string>::const_iterator iter = 
ng->saAmfNGNodeList.begin();
                     iter != ng->saAmfNGNodeList.end(); ++iter) {
                        AVD_AVND *node = avd_node_get(*iter);
+                       if (node->saAmfNodeAdminState != 
SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
+                               LOG_NO("'%s' UNLOCK_INSTANTIATION: AMF node 
admin state is not LOCK_INSTANTIATION", node->name.value);
+                               continue;
+                       }
                        node->su_cnt_admin_oper = 0;
                        node->admin_ng = ng;
-                       node_sus_termstate_set(node, false);  
-                       if (node->saAmfNodeAdminState != 
SA_AMF_ADMIN_LOCKED_INSTANTIATION)
-                               continue;
+                       node_sus_termstate_set(node, false);
                        node_admin_state_set(node, SA_AMF_ADMIN_LOCKED);
                }
                ng_admin_unlock_inst(ng);

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to