From: Mohan Kanakam <mo...@hasolutions.in>

---
 src/amf/amfd/su.cc | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/amf/amfd/su.cc b/src/amf/amfd/su.cc
index 81cfbf7..0c95f8b 100644
--- a/src/amf/amfd/su.cc
+++ b/src/amf/amfd/su.cc
@@ -1114,8 +1114,24 @@ void AVD_SU::lock_instantiation(SaImmOiHandleT 
immoi_handle,
     goto done;
   }
 
-  if ((saAmfSUPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED) ||
-      (saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATION_FAILED) ||
+  if ((saAmfSUPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED) {
+  for (const auto &comp : list_of_comp) {
+  if (comp->saAmfCompPresenceState != SA_AMF_PRESENCE_UNINSTANTIATED)
+  {
+    LOG_NO("comp->saAmfCompPresenceState : %d ", comp->saAmfCompPresenceState);
+    report_admin_op_error(immoi_handle, invocation, SA_AIS_ERR_TRY_AGAIN,
+                          nullptr, "'%s' presence state is '%u'", name.c_str(),
+                          saAmfSUPresenceState);
+    goto done;
+  }
+  }
+    set_admin_state(SA_AMF_ADMIN_LOCKED_INSTANTIATION);
+    avd_saImmOiAdminOperationResult(immoi_handle, invocation, SA_AIS_OK);
+    set_term_state(true);
+    goto done;
+  }
+
+  if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATION_FAILED) ||
       (saAmfSUPresenceState == SA_AMF_PRESENCE_TERMINATION_FAILED)) {
     /* No need to terminate the SUs in Unins/Inst Failed/Term Failed state */
     set_admin_state(SA_AMF_ADMIN_LOCKED_INSTANTIATION);
-- 
2.7.4



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to