Hi bro.Minh,

I am fine with rename that original function.
Please update and help push.
Thank you.

Best Regards,
ThuanTr

-----Original Message-----
From: Minh Hon Chau <minh.c...@dektech.com.au> 
Sent: Friday, August 9, 2019 10:13 AM
To: thuan.tran <thuan.t...@dektech.com.au>; gary....@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [PATCH 1/1] amf: fix no active assignment even one in-service SU 
can be assigned [#3020]

Hi Thuan,

ack with minor comments.

Thanks

Minh

On 18/3/19 7:04 pm, thuan.tran wrote:
> AMFD should try assign SI active for other in-service SUs if fail to 
> assign for current in-service SU
> ---
>   src/amf/amfd/sg_2n_fsm.cc | 75 
> +++++++++++++++++++++++++++++------------------
>   1 file changed, 46 insertions(+), 29 deletions(-)
>
> diff --git a/src/amf/amfd/sg_2n_fsm.cc b/src/amf/amfd/sg_2n_fsm.cc 
> index 91ffc63..ba0f72e 100644
> --- a/src/amf/amfd/sg_2n_fsm.cc
> +++ b/src/amf/amfd/sg_2n_fsm.cc
> @@ -630,6 +630,43 @@ done:
>   }
>   
>   
> /*********************************************************************
> ********
> + * Function: avd_sg_2n_assign_si
> + *
> + * Purpose:  This function choose and assign SIs in the SG that dont have
> + *           active assignment.
> + *
> + * Input: cb - the AVD control block
> + *        sg - The pointer to the service group.
> + *        su - The pointer to the service unit to be assigned ACTIVE.
> + *
> + * Returns: True if assign succeed, otherwise return false
> + *
> + 
> +*********************************************************************
> +*****/ static bool avd_sg_2n_assign_si(AVD_CL_CB *cb, AVD_SG *sg, 
> +AVD_SU *su) {
[M]: This function only creates active assignment, the name could be 
avd_sg_2n_assign_act_si (or you can come up another name) to suggest what it is 
actually doing inside. And add TRACE_ENTER()/LEAVE().
> +  bool l_flag = false;
> +  AVD_SU_SI_REL *tmp_susi;
> +  /* choose and assign SIs in the SG that dont have active assignment 
> +*/
> +  for (const auto &i_si : sg->list_of_si) {
> +    if ((i_si->saAmfSIAdminState == SA_AMF_ADMIN_UNLOCKED) &&
> +        (i_si->list_of_csi != nullptr) &&
> +        (i_si->si_dep_state != AVD_SI_SPONSOR_UNASSIGNED) &&
> +        (i_si->si_dep_state != AVD_SI_UNASSIGNING_DUE_TO_DEP) &&
> +        (i_si->si_dep_state != AVD_SI_READY_TO_UNASSIGN) &&
> +        (i_si->list_of_sisu == AVD_SU_SI_REL_NULL) &&
> +        (su->saAmfSUNumCurrActiveSIs < sg->saAmfSGMaxActiveSIsperSU)) {
> +      /* found a SI that needs active assignment. */
> +      if (avd_new_assgn_susi(cb, su, i_si, SA_AMF_HA_ACTIVE, false,
> +                             &tmp_susi) == NCSCC_RC_SUCCESS) {
> +        l_flag = true;
> +      } else {
> +        LOG_ER("%s:%u: %s", __FILE__, __LINE__, i_si->name.c_str());
> +      }
> +    }
> +  }
> +  return l_flag;
> +}
> +
> +/********************************************************************
> +*********
>    * Function: avd_sg_2n_su_chose_asgn
>    *
>    * Purpose:  This function will identify the current active SU.
> @@ -675,7 +712,10 @@ static AVD_SU *avd_sg_2n_su_chose_asgn(AVD_CL_CB *cb, 
> AVD_SG *sg) {
>       for (const auto &iter : sg->list_of_su) {
>         if (iter->saAmfSuReadinessState == SA_AMF_READINESS_IN_SERVICE) {
>           a_su = iter;
> -        break;
> +        l_flag = avd_sg_2n_assign_si(cb, sg, a_su);
> +        if (l_flag == true) {
> +          break;
> +        }
>         }
>       }
>   
> @@ -683,36 +723,13 @@ static AVD_SU *avd_sg_2n_su_chose_asgn(AVD_CL_CB *cb, 
> AVD_SG *sg) {
>         TRACE("No in service SUs available in the SG");
>         goto done;
>       }
> -  } else { /* if (a_susi == AVD_SU_SI_REL_NULL) */
> -
> +  } else { /* if (a_susi != AVD_SU_SI_REL_NULL) */
>       a_su = a_susi->su;
> -  }
> -
> -  if (a_su->saAmfSuReadinessState != SA_AMF_READINESS_IN_SERVICE) {
> -    TRACE("The current active SU is OOS so return");
> -    goto done;
> -  }
> -
> -  /* check if any more active SIs can be assigned to this SU */
> -  l_flag = false;
> -
> -  /* choose and assign SIs in the SG that dont have active assignment 
> */
> -  for (const auto &i_si : sg->list_of_si) {
> -    if ((i_si->saAmfSIAdminState == SA_AMF_ADMIN_UNLOCKED) &&
> -        (i_si->list_of_csi != nullptr) &&
> -        (i_si->si_dep_state != AVD_SI_SPONSOR_UNASSIGNED) &&
> -        (i_si->si_dep_state != AVD_SI_UNASSIGNING_DUE_TO_DEP) &&
> -        (i_si->si_dep_state != AVD_SI_READY_TO_UNASSIGN) &&
> -        (i_si->list_of_sisu == AVD_SU_SI_REL_NULL) &&
> -        (a_su->saAmfSUNumCurrActiveSIs < sg->saAmfSGMaxActiveSIsperSU)) {
> -      /* found a SI that needs active assignment. */
> -      if (avd_new_assgn_susi(cb, a_su, i_si, SA_AMF_HA_ACTIVE, false,
> -                             &tmp_susi) == NCSCC_RC_SUCCESS) {
> -        l_flag = true;
> -      } else {
> -        LOG_ER("%s:%u: %s", __FILE__, __LINE__, i_si->name.c_str());
> -      }
> +    if (a_su->saAmfSuReadinessState != SA_AMF_READINESS_IN_SERVICE) {
> +      TRACE("The current active SU is OOS so return");
> +      goto done;
>       }
> +    l_flag = avd_sg_2n_assign_si(cb, sg, a_su);
>     }
>   
>     /* if any assignments have been done return the SU */



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

Reply via email to