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