I got confused with previous release strategies.

Please push in release branch also.


Thanks
Praveen

On 31-Aug-17 11:48 AM, praveen malviya wrote:
I am not seeing any milestone for any maintenance/release branch.

There is only one milestone 5.17.10 which is for new release.





Thanks

Praveen



On 31-Aug-17 11:34 AM, Gary Lee wrote:

OK - thanks.



Should we push it to release as well?





On 31/08/17 15:30, praveen malviya wrote:

Hi Gary,



 ack for part2.

 I think I did not grep on saAmfSGNumPrefInserviceSUs in all files.

 I have pushed part1. Please push part2.



Thanks

Praveen



On 31-Aug-17 9:50 AM, Gary Lee wrote:

Hi Praveen



ack, but I think further changes are required (see attachment).



Do you think you could push it today?



Thanks

Gary



On 27/07/17 15:36, Praveen wrote:

SG attribute saAmfSGNumPrefAssignedSUs is applicable to N-Way and

N-Way Active model.

AMF is assigning more than saAmfSGNumPrefAssignedSUs in both N-Way

and N-Way Active model.



Patch fixes this problem.

---

  src/amf/amfd/sg.cc             | 49

++++++++++++++++++++----------------------

  src/amf/amfd/sg.h              |  1 +

  src/amf/amfd/sg_nway_fsm.cc    | 39 +++++++++++++++++++++++++++++----

  src/amf/amfd/sg_nwayact_fsm.cc | 29 ++++++++++++++++++++++++-

  4 files changed, 87 insertions(+), 31 deletions(-)



diff --git a/src/amf/amfd/sg.cc b/src/amf/amfd/sg.cc

index 7bdf52a..8f35901 100644

--- a/src/amf/amfd/sg.cc

+++ b/src/amf/amfd/sg.cc

@@ -98,7 +98,7 @@ AVD_SG::AVD_SG()

        saAmfSGAutoAdjust(SA_FALSE),

        saAmfSGNumPrefActiveSUs(0),

        saAmfSGNumPrefStandbySUs(0),

-      saAmfSGNumPrefInserviceSUs(~0),

+      saAmfSGNumPrefInserviceSUs(0),

        saAmfSGNumPrefAssignedSUs(0),

        saAmfSGMaxActiveSIsperSU(0),

        saAmfSGMaxStandbySIsperSU(0),

@@ -978,18 +978,18 @@ static void

ccb_apply_modify_hdlr(CcbUtilOperationData_t *opdata) {

                sg->saAmfSGNumPrefStandbySUs);

        } else if (!strcmp(attribute->attrName,

"saAmfSGNumPrefInserviceSUs")) {

          if (value_is_deleted)

-          sg->saAmfSGNumPrefInserviceSUs = ~0;

+          sg->saAmfSGNumPrefInserviceSUs = 0; //default value for

internal use.

          else

            sg->saAmfSGNumPrefInserviceSUs = *((SaUint32T *)value);

          TRACE("Modified saAmfSGNumPrefInserviceSUs is '%u'",

-              sg->saAmfSGNumPrefInserviceSUs);

+              sg->pref_inservice_sus());

        } else if (!strcmp(attribute->attrName,

"saAmfSGNumPrefAssignedSUs")) {

          if (value_is_deleted)

-          sg->saAmfSGNumPrefAssignedSUs =

sg->saAmfSGNumPrefInserviceSUs;

+          sg->saAmfSGNumPrefAssignedSUs = 0; //default value for

internal use.

          else

            sg->saAmfSGNumPrefAssignedSUs = *((SaUint32T *)value);

          TRACE("Modified saAmfSGNumPrefAssignedSUs is '%u'",

-              sg->saAmfSGNumPrefAssignedSUs);

+              sg->pref_assigned_sus());

        } else if (!strcmp(attribute->attrName,

"saAmfSGMaxActiveSIsperSU")) {

          if (value_is_deleted)

            sg->saAmfSGMaxActiveSIsperSU = -1;

@@ -1091,11 +1091,11 @@ static void

ccb_apply_modify_hdlr(CcbUtilOperationData_t *opdata) {

        if (!strcmp(attribute->attrName,

"saAmfSGNumPrefInserviceSUs")) {

          if (value_is_deleted)

-          sg->saAmfSGNumPrefInserviceSUs = ~0;

+          sg->saAmfSGNumPrefInserviceSUs = 0;

          else

            sg->saAmfSGNumPrefInserviceSUs = *((SaUint32T *)value);

          TRACE("Modified saAmfSGNumPrefInserviceSUs is '%u'",

-              sg->saAmfSGNumPrefInserviceSUs);

+              sg->pref_inservice_sus());

          if (avd_cb->avail_state_avd == SA_AMF_HA_ACTIVE) {

            if (avd_sg_app_su_inst_func(avd_cb, sg) !=

NCSCC_RC_SUCCESS) {

@@ -1256,7 +1256,7 @@ static void

sg_app_sg_admin_unlock_inst(AVD_CL_CB *cb, AVD_SG *sg) {

          (su->saAmfSUPresenceState ==

SA_AMF_PRESENCE_UNINSTANTIATED)) {

        if (su->saAmfSUPreInstantiable == true) {

          if (su->su_on_node->node_state == AVD_AVND_STATE_PRESENT) {

-          if (su->sg_of_su->saAmfSGNumPrefInserviceSUs >

su_try_inst) {

+          if (su->sg_of_su->pref_inservice_sus() > su_try_inst) {

              if (avd_snd_presence_msg(cb, su, false) !=

NCSCC_RC_SUCCESS) {

                LOG_NO("%s: Failed to send Instantiation order of

'%s' to %x",

                       __FUNCTION__, su->name.c_str(),

@@ -1944,19 +1944,6 @@ void avd_sg_adjust_config(AVD_SG *sg) {

        }

      }

    }

-

-  /* adjust saAmfSGNumPrefAssignedSUs if not configured, only

applicable for

-   * the N-way and N-way active redundancy models

-   */

-  if ((sg->saAmfSGNumPrefAssignedSUs == 0) &&

-      ((sg->sg_type->saAmfSgtRedundancyModel ==

-        SA_AMF_N_WAY_REDUNDANCY_MODEL) ||

-       (sg->sg_type->saAmfSgtRedundancyModel ==

-        SA_AMF_N_WAY_ACTIVE_REDUNDANCY_MODEL))) {

-    sg->saAmfSGNumPrefAssignedSUs = sg->saAmfSGNumPrefInserviceSUs;

-    LOG_NO("'%s' saAmfSGNumPrefAssignedSUs adjusted to %u",

sg->name.c_str(),

-           sg->saAmfSGNumPrefAssignedSUs);

-  }

  }

  /**

@@ -1972,7 +1959,7 @@ uint32_t sg_instantiated_su_count(const AVD_SG

*sg) {

    for (const auto &su : sg->list_of_su) {

      TRACE_1("su'%s', pres state'%u', in_serv'%u', PrefIn'%u'",

su->name.c_str(),

              su->saAmfSUPresenceState, su->saAmfSuReadinessState,

-            sg->saAmfSGNumPrefInserviceSUs);

+            sg->pref_inservice_sus());

      if (((su->saAmfSUPresenceState ==

SA_AMF_PRESENCE_INSTANTIATED) ||

           (su->saAmfSUPresenceState ==

SA_AMF_PRESENCE_INSTANTIATING) ||

           (su->saAmfSUPresenceState == SA_AMF_PRESENCE_RESTARTING))) {

@@ -2051,7 +2038,7 @@ bool

sg_stable_after_lock_in_or_unlock_in(AVD_SG *sg) {

          }

        }

-      if (instantiated_sus >= sg->saAmfSGNumPrefInserviceSUs)

+      if (instantiated_sus >= sg->pref_inservice_sus())

          return true;

        else {

          if (to_be_instantiated_sus == 0)

@@ -2358,9 +2345,19 @@ bool AVD_SG::any_assignment_assigned() {

  }

  uint32_t AVD_SG::pref_assigned_sus() const {

-  // If not configured, AMFD has already adjusted to default value in

-  // avd_sg_adjust_config().

-  return saAmfSGNumPrefAssignedSUs;

+  if (saAmfSGNumPrefAssignedSUs == 0)

+    //default value is saAmfSGNumPrefInserviceSUs.

+    return pref_inservice_sus();

+  else

+    return saAmfSGNumPrefAssignedSUs;

+}

+

+uint32_t AVD_SG::pref_inservice_sus() const {

+  if (saAmfSGNumPrefInserviceSUs == 0)

+    //default value is saAmfSGNumPrefInserviceSUs.

+    return list_of_su.size();

+  else

+    return saAmfSGNumPrefInserviceSUs;

  }

  /*

diff --git a/src/amf/amfd/sg.h b/src/amf/amfd/sg.h

index 56a43a1..96187ef 100644

--- a/src/amf/amfd/sg.h

+++ b/src/amf/amfd/sg.h

@@ -447,6 +447,7 @@ class AVD_SG {

    uint32_t curr_non_instantiated_spare_sus() const;

    bool is_middleware() const { return sg_ncs_spec ? true : false; }

    uint32_t pref_assigned_sus() const;

+  uint32_t pref_inservice_sus() const;

    // Checks if si_equal_distribution is configured for the SG.

    bool is_equal() const;

diff --git a/src/amf/amfd/sg_nway_fsm.cc b/src/amf/amfd/sg_nway_fsm.cc

index 29ffd5d..88e7e1a 100644

--- a/src/amf/amfd/sg_nway_fsm.cc

+++ b/src/amf/amfd/sg_nway_fsm.cc

@@ -1149,6 +1149,15 @@ AVD_SU *avd_sg_nway_get_su_std_equal(AVD_SG

*sg, AVD_SI *curr_si) {

curr_su->sg_of_su->saAmfSGMaxStandbySIsperSU)))

        continue;

+     if ((sg->pref_assigned_sus() == sg->curr_assigned_sus()) &&

+         (curr_su->list_of_susi == nullptr)) {

+    //PrefAssignedSU count reached so no assignment in fresh SU.

+        //Continue searching next already assigned SU.

+        TRACE_1("PrefAssignedSU count reached in '%s', so no fresh

assignments.",

+                 sg->name.c_str());

+        continue;

+     }

+

      l_flag = true;

      /* Get the current no of Standby assignments on the su */

@@ -1373,10 +1382,8 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB *cb,

AVD_SG *sg) {

            if (sg->equal_ranked_su == true) {

              /* first try to select an SU which has no assignments */

              if ((iter->saAmfSUNumCurrActiveSIs == 0) &&

-                (iter->saAmfSUNumCurrStandbySIs == 0)) {

-              /* got an SU without any assignments select

-               * it for this SI's active assignment

-               */

+                (iter->saAmfSUNumCurrStandbySIs == 0) &&

+                (sg->pref_assigned_sus() > sg->curr_assigned_sus())) {

                pref_su = iter;

                TRACE("set %s as pref_su", pref_su->name.c_str());

                break;

@@ -1415,6 +1422,14 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB *cb,

AVD_SG *sg) {

      /* if found, send active assignment */

      if (curr_su) {

+      if ((sg->pref_assigned_sus() == sg->curr_assigned_sus()) &&

+          (curr_su->list_of_susi == nullptr)) {

+        //PrefAssignedSU count reached so no assignment in fresh SU.

+        //Next SI may get assgined in already assigned SU.

+        TRACE_1("PrefAssignedSU count reached in '%s', so no fresh

assignments.",

+                sg->name.c_str());

+        continue;

+      }

        TRACE("send active assignment to %s", curr_su->name.c_str());

        rc = avd_new_assgn_susi(cb, curr_su, curr_si,

SA_AMF_HA_ACTIVE, false,

@@ -1481,6 +1496,15 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB *cb,

AVD_SG *sg) {

        if (avd_su_susi_find(cb, curr_su, curr_si->name) !=

AVD_SU_SI_REL_NULL)

          continue;

+        if ((sg->pref_assigned_sus() == sg->curr_assigned_sus()) &&

+            (curr_su->list_of_susi == nullptr)) {

+          //PrefAssignedSU count reached so no assignment in fresh SU.

+          //Still continue for next pref ranked SU.

+          TRACE_1("PrefAssignedSU count reached in '%s', so no

fresh assignments.",

+                   sg->name.c_str());

+          continue;

+        }

+

        /* send the standby assignment */

        rc = avd_new_assgn_susi(cb, curr_su, curr_si,

SA_AMF_HA_STANDBY, false,

                                &tmp_susi);

@@ -1549,6 +1573,13 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB *cb,

AVD_SG *sg) {

curr_su->sg_of_su->saAmfSGMaxStandbySIsperSU)))

          continue;

+      if ((sg->pref_assigned_sus() == sg->curr_assigned_sus())

+           && (curr_su->list_of_susi == nullptr)) {

+        //PrefAssignedSU count reached so no assignment in fresh SU.

+        TRACE_1("PrefAssignedSU count reached in '%s', so no fresh

assignments.",

+                 sg->name.c_str());

+        continue;

+      }

        su_found = true;

        /* verify if this su does not have this assignment */

diff --git a/src/amf/amfd/sg_nwayact_fsm.cc

b/src/amf/amfd/sg_nwayact_fsm.cc

index 76ff216..68b76f1 100644

--- a/src/amf/amfd/sg_nwayact_fsm.cc

+++ b/src/amf/amfd/sg_nwayact_fsm.cc

@@ -130,6 +130,15 @@ AVD_SU *avd_sg_nacvred_su_chose_asgn(AVD_CL_CB

*cb, AVD_SG *sg) {

          continue;

        }

+      if ((sg->pref_assigned_sus() == sg->curr_assigned_sus()) &&

+           (i_su->list_of_susi == nullptr)) {

+        //PrefAssignedSU count reached so no assignment in fresh SU.

+        //Check in next siranked su.

+        TRACE_1("PrefAssignedSU count reached in '%s', so no fresh

assignments.",

+                 sg->name.c_str());

+        continue;

+      }

+

        /* found the SU assign the SI to the SU as active */

        if (avd_new_assgn_susi(cb, i_su, i_si, SA_AMF_HA_ACTIVE, false,

                               &tmp_rel) == NCSCC_RC_SUCCESS) {

@@ -167,6 +176,15 @@ AVD_SU *avd_sg_nacvred_su_chose_asgn(AVD_CL_CB

*cb, AVD_SG *sg) {

          continue;

        }

+      if ((sg->pref_assigned_sus() == sg->curr_assigned_sus()) &&

+          (i_su->list_of_susi == nullptr)) {

+        //PrefAssignedSU count reached so no assignment in fresh SU.

+        //search in already assigned SU.

+        TRACE_1("PrefAssignedSU count reached in '%s', so no fresh

assignments.",

+                 sg->name.c_str());

+        continue;

+      }

+

        l_flag = true;

        if (i_si->pref_active_assignments() <=

i_si->curr_active_assignments()) {

@@ -259,7 +277,6 @@ uint32_t SG_NACV::si_assign(AVD_CL_CB *cb,

AVD_SI *si) {

    if ((cb->init_state != AVD_APP_STATE) &&

        (si->sg_of_si->sg_ncs_spec == false)) {

-    LOG_ER("%s:%u: %u", __FILE__, __LINE__,

si->sg_of_si->sg_ncs_spec);

      return NCSCC_RC_SUCCESS;

    }

@@ -1903,6 +1920,16 @@ static AVD_SU *avd_get_qualified_su(AVD_SG

*sg, AVD_SI *i_si,

            i_su->saAmfSUNumCurrActiveSIs))) {

        continue;

      }

+

+    if ((sg->pref_assigned_sus() == sg->curr_assigned_sus()) &&

+        (i_su->list_of_susi == nullptr)) {

+      //PrefAssignedSU count reached so no assigned in fresh SU.

+      //continue search in already assigned SU.

+      TRACE_1("PrefAssignedSU count reached in '%s', so no fresh

assignments.",

+               sg->name.c_str());

+      continue;

+    }

+

      l_flag = true;

      if (avd_su_susi_find(avd_cb, i_su, i_si->name) !=

AVD_SU_SI_REL_NULL) {

        /* This SU has already a assignment for this SI go to the





------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! https://urldefense.proofpoint.com/v2/url?u=http-3A__sdm.link_slashdot&d=DwIGaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=Lehk1PZKwfDQtYJXNyUKbPAqrw5O--SlPRAF9DIEps4&m=j9ZR9vLUP3VT7b5Tp-GnoQOEHiFFzdSvmMCjlAYyL1k&s=eovD5O1zhL2n1YpL1698DtRqUveNhr1kk78Kz4l4Eio&e= _______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.sourceforge.net_lists_listinfo_opensaf-2Ddevel&d=DwIGaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=Lehk1PZKwfDQtYJXNyUKbPAqrw5O--SlPRAF9DIEps4&m=j9ZR9vLUP3VT7b5Tp-GnoQOEHiFFzdSvmMCjlAYyL1k&s=CmSRgezNvQ0WMRJoQSD5Jtk5U-nCQHk37E7-lb7W3Q8&e=
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to