Hi Gary,
           Can you please close the ticket #1620 as it is an enhancement and 
its closure is pre-requisite to apply 5.0 FC tag. Please raise separate tickets 
for the defects (on top of #1620).

Thanks
-Nagu

> -----Original Message-----
> From: Gary Lee [mailto:[email protected]]
> Sent: 04 April 2016 09:57
> To: [email protected]; Nagendra Kumar; praveen malviya;
> [email protected]; [email protected]
> Cc: [email protected]
> Subject: [PATCH 1 of 1] amf: send extra state information from nd to d after
> headless state [#1620]
> 
>  osaf/libs/common/amf/d2nedu.c                  |  11 +++++--
>  osaf/libs/common/amf/include/amf_d2nmsg.h      |   3 ++
>  osaf/libs/common/amf/include/amf_si_assign.h   |  19 +++++--------
>  osaf/services/saf/amf/amfd/csi.cc              |   3 ++
>  osaf/services/saf/amf/amfd/include/mds.h       |   7 ++--
>  osaf/services/saf/amf/amfd/mds.cc              |   7 +++-
>  osaf/services/saf/amf/amfd/siass.cc            |  35
> +++++++++++++++++++++++++-
>  osaf/services/saf/amf/amfnd/di.cc              |   7 +++++
>  osaf/services/saf/amf/amfnd/include/avnd_mds.h |   4 +-
>  osaf/services/saf/amf/amfnd/mds.cc             |   6 ++-
>  10 files changed, 78 insertions(+), 24 deletions(-)
> 
> 
> Currently, amfd is not fully aware of each SUSI/CSI's current assignment
> state at amfnd after headless recovery.
> 
> diff --git a/osaf/libs/common/amf/d2nedu.c
> b/osaf/libs/common/amf/d2nedu.c
> --- a/osaf/libs/common/amf/d2nedu.c
> +++ b/osaf/libs/common/amf/d2nedu.c
> @@ -865,6 +865,7 @@ uint32_t avsv_edp_sisu_state_info_msg(ED  {
>       uint32_t rc = NCSCC_RC_SUCCESS;
>       AVSV_SISU_STATE_MSG *struct_ptr = NULL, **d_ptr = NULL;
> +     uint16_t ver7 = AVSV_AVD_AVND_MSG_FMT_VER_7;
> 
>       EDU_INST_SET avsv_sisu_state_msg_rules[] = {
>               {EDU_START, avsv_edp_sisu_state_info_msg, EDQ_LNKLIST,
> 0, 0, @@ -876,7 +877,9 @@ uint32_t avsv_edp_sisu_state_info_msg(ED
>                (long)&((AVSV_SISU_STATE_MSG *)0)->safSI, 0, NULL},
>               {EDU_EXEC, m_NCS_EDP_SAAMFHASTATET, 0, 0, 0,
>                (long)&((AVSV_SISU_STATE_MSG *)0)->saAmfSISUHAState,
> 0, NULL},
> -
> +             {EDU_VER_GE, NULL, 0, 0, 2, 0, 0,
> (EDU_EXEC_RTINE)((uint16_t *)(&(ver7)))},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_SISU_STATE_MSG *)0)->assignmentState, 0,
> NULL},
>               {EDU_TEST_LL_PTR, avsv_edp_sisu_state_info_msg, 0, 0, 0,
>                (long)&((AVSV_SISU_STATE_MSG *)0)->next, 0, NULL},
>               {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> @@ -930,7 +933,6 @@ uint32_t avsv_edp_su_state_info_msg(EDU_
>                (long)&((AVSV_SU_STATE_MSG *)0)->su_pres_state, 0,
> NULL},
>               {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
>                (long)&((AVSV_SU_STATE_MSG *)0)->su_oper_state, 0,
> NULL},
> -
>               {EDU_TEST_LL_PTR, avsv_edp_su_state_info_msg, 0, 0, 0,
>                (long)&((AVSV_SU_STATE_MSG *)0)->next, 0, NULL},
>               {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> @@ -971,6 +973,7 @@ uint32_t avsv_edp_csicomp_state_info_msg  {
>       uint32_t rc = NCSCC_RC_SUCCESS;
>       AVSV_CSICOMP_STATE_MSG *struct_ptr = NULL, **d_ptr = NULL;
> +     uint16_t ver7 = AVSV_AVD_AVND_MSG_FMT_VER_7;
> 
>       EDU_INST_SET avsv_csicomp_state_msg_rules[] = {
>               {EDU_START, avsv_edp_csicomp_state_info_msg,
> EDQ_LNKLIST, 0, 0, @@ -982,7 +985,9 @@ uint32_t
> avsv_edp_csicomp_state_info_msg
>                (long)&((AVSV_CSICOMP_STATE_MSG *)0)->safCSI, 0,
> NULL},
>               {EDU_EXEC, m_NCS_EDP_SAAMFHASTATET, 0, 0, 0,
>                (long)&((AVSV_CSICOMP_STATE_MSG *)0)-
> >saAmfCSICompHAState, 0, NULL},
> -
> +             {EDU_VER_GE, NULL, 0, 0, 2, 0, 0,
> (EDU_EXEC_RTINE)((uint16_t *)(&(ver7)))},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_CSICOMP_STATE_MSG *)0)-
> >assignmentState, 0, NULL},
>               {EDU_TEST_LL_PTR, avsv_edp_csicomp_state_info_msg, 0,
> 0, 0,
>                (long)&((AVSV_CSICOMP_STATE_MSG *)0)->next, 0, NULL},
>               {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> diff --git a/osaf/libs/common/amf/include/amf_d2nmsg.h
> b/osaf/libs/common/amf/include/amf_d2nmsg.h
> --- a/osaf/libs/common/amf/include/amf_d2nmsg.h
> +++ b/osaf/libs/common/amf/include/amf_d2nmsg.h
> @@ -50,6 +50,7 @@ extern "C" {
>  #define AVSV_AVD_AVND_MSG_FMT_VER_4    4
>  #define AVSV_AVD_AVND_MSG_FMT_VER_5    5
>  #define AVSV_AVD_AVND_MSG_FMT_VER_6    6
> +#define AVSV_AVD_AVND_MSG_FMT_VER_7    7
> 
>  /* Internode/External Components Validation result */  typedef enum { @@
> -438,6 +439,7 @@ typedef struct avsv_sisu_state_msg_tag {
>       SaNameT safSU;
>       SaNameT safSI;
>       SaAmfHAStateT saAmfSISUHAState;
> +     uint32_t assignmentState;
>       struct avsv_sisu_state_msg_tag *next;
>  } AVSV_SISU_STATE_MSG;
> 
> @@ -462,6 +464,7 @@ typedef struct avsv_csicomp_state_msg_ta
>       SaNameT safComp;
>       SaNameT safCSI;
>       SaAmfHAStateT saAmfCSICompHAState;
> +     uint32_t assignmentState;
>       struct avsv_csicomp_state_msg_tag *next;  }
> AVSV_CSICOMP_STATE_MSG;
> 
> diff --git a/osaf/libs/common/amf/include/amf_si_assign.h
> b/osaf/libs/common/amf/include/amf_si_assign.h
> --- a/osaf/libs/common/amf/include/amf_si_assign.h
> +++ b/osaf/libs/common/amf/include/amf_si_assign.h
> @@ -26,23 +26,20 @@
>  #ifndef AMF_SI_ASSIGN_H
>  #define AMF_SI_ASSIGN_H
> 
> -#include <string>
>  #include <saAmf.h>
> 
>  struct SaAmfSIAssignment {
> -     public:
> -             SaNameT su;
> -             SaNameT si;
> -             SaAmfHAStateT saAmfSISUHAState;
> -             uint32_t saAmfSISUHAReadinessState;
> +     SaNameT su;
> +     SaNameT si;
> +     SaAmfHAStateT saAmfSISUHAState;
> +     uint32_t assignmentState;
>  };
> 
>  struct SaAmfCSIAssignment {
> -     public:
> -             SaNameT csi;
> -             SaNameT comp;
> -             SaAmfHAStateT saAmfCSICompHAState;
> -             uint32_t saAmfCSICompHAReadinessState;
> +     SaNameT csi;
> +     SaNameT comp;
> +     SaAmfHAStateT saAmfCSICompHAState;
> +     uint32_t assignmentState;
>  };
> 
>  #endif       /* AMF_SI_ASSIGN_H */
> diff --git a/osaf/services/saf/amf/amfd/csi.cc
> b/osaf/services/saf/amf/amfd/csi.cc
> --- a/osaf/services/saf/amf/amfd/csi.cc
> +++ b/osaf/services/saf/amf/amfd/csi.cc
> @@ -1478,6 +1478,9 @@ SaAisErrorT avd_compcsi_recreate(AVSV_N2
>               si = csi->si;
>               osafassert(si);
> 
> +             // @todo handle assignmentState
> +             // @todo csicomp->assignmentState is of type
> AVND_COMP_CSI_ASSIGN_STATE;, needs conversion!
> +
>               susi = avd_susi_find(avd_cb, &comp->su->name, &si->name);
>               if (susi == 0) {
>                       LOG_ER("SU_SI_REL record for SU '%s' and SI '%s'
> was not found", diff --git a/osaf/services/saf/amf/amfd/include/mds.h
> b/osaf/services/saf/amf/amfd/include/mds.h
> --- a/osaf/services/saf/amf/amfd/include/mds.h
> +++ b/osaf/services/saf/amf/amfd/include/mds.h
> @@ -33,13 +33,13 @@
> 
>  /* In Service upgrade support */
>  #define AVD_MDS_SUB_PART_VERSION_4 4
> -#define AVD_MDS_SUB_PART_VERSION   6
> +#define AVD_MDS_SUB_PART_VERSION   7
> 
>  #define AVD_AVND_SUBPART_VER_MIN   1
> -#define AVD_AVND_SUBPART_VER_MAX   6
> +#define AVD_AVND_SUBPART_VER_MAX   7
> 
>  #define AVD_AVD_SUBPART_VER_MIN    1
> -#define AVD_AVD_SUBPART_VER_MAX    6
> +#define AVD_AVD_SUBPART_VER_MAX    7
> 
>  /* Message format versions */
>  #define AVD_AVD_MSG_FMT_VER_1    1
> @@ -48,6 +48,7 @@
>  #define AVD_AVD_MSG_FMT_VER_4    4
>  #define AVD_AVD_MSG_FMT_VER_5    5
>  #define AVD_AVD_MSG_FMT_VER_6    6
> +#define AVD_AVD_MSG_FMT_VER_7    7
> 
>  uint32_t avd_mds_set_vdest_role(struct cl_cb_tag *cb, SaAmfHAStateT
> role);  uint32_t avd_mds_init(struct cl_cb_tag *cb); diff --git
> a/osaf/services/saf/amf/amfd/mds.cc
> b/osaf/services/saf/amf/amfd/mds.cc
> --- a/osaf/services/saf/amf/amfd/mds.cc
> +++ b/osaf/services/saf/amf/amfd/mds.cc
> @@ -45,13 +45,16 @@
>  const MDS_CLIENT_MSG_FORMAT_VER avd_avnd_msg_fmt_map_table[] =
> {
>       AVSV_AVD_AVND_MSG_FMT_VER_1,
> AVSV_AVD_AVND_MSG_FMT_VER_2,
>       AVSV_AVD_AVND_MSG_FMT_VER_3,
> AVSV_AVD_AVND_MSG_FMT_VER_4,
> -     AVSV_AVD_AVND_MSG_FMT_VER_5,
> AVSV_AVD_AVND_MSG_FMT_VER_6
> +     AVSV_AVD_AVND_MSG_FMT_VER_5,
> AVSV_AVD_AVND_MSG_FMT_VER_6,
> +     AVSV_AVD_AVND_MSG_FMT_VER_7
>  };
> 
>  const MDS_CLIENT_MSG_FORMAT_VER avd_avd_msg_fmt_map_table[] = {
>       AVD_AVD_MSG_FMT_VER_1, AVD_AVD_MSG_FMT_VER_2,
>       AVD_AVD_MSG_FMT_VER_3, AVD_AVD_MSG_FMT_VER_4,
> -     AVD_AVD_MSG_FMT_VER_5, AVD_AVD_MSG_FMT_VER_6};
> +     AVD_AVD_MSG_FMT_VER_5, AVD_AVD_MSG_FMT_VER_6,
> +     AVD_AVD_MSG_FMT_VER_7
> +};
> 
>  /* fwd decl */
> 
> diff --git a/osaf/services/saf/amf/amfd/siass.cc
> b/osaf/services/saf/amf/amfd/siass.cc
> --- a/osaf/services/saf/amf/amfd/siass.cc
> +++ b/osaf/services/saf/amf/amfd/siass.cc
> @@ -882,7 +882,40 @@ SaAisErrorT avd_susi_recreate(AVSV_N2D_N
>               } else {
>                       avd_susi_ha_state_set(susi, ha_state);
>               }
> -             susi->fsm = AVD_SU_SI_STATE_ASGND;
> +
> +             /* Definition in amfnd:
> +                     AVND_SU_SI_ASSIGN_STATE_UNASSIGNED = 1,
> +                     AVND_SU_SI_ASSIGN_STATE_ASSIGNING = 2,
> +                     AVND_SU_SI_ASSIGN_STATE_ASSIGNED = 3,
> +                     AVND_SU_SI_ASSIGN_STATE_REMOVING = 4,
> +                     AVND_SU_SI_ASSIGN_STATE_REMOVED = 5,
> +                     AVND_SU_SI_ASSIGN_STATE_MAX,
> +               */
> +             switch (susi_state->assignmentState) {
> +             case 1:
> +                     susi->fsm = AVD_SU_SI_STATE_UNASGN;
> +                     break;
> +             case 2:
> +                     susi->fsm = AVD_SU_SI_STATE_MODIFY;
> +                     break;
> +             case 3:
> +                     susi->fsm = AVD_SU_SI_STATE_ASGND;
> +                     break;
> +             case 4:
> +                     susi->fsm = AVD_SU_SI_STATE_MODIFY;
> +                     break;
> +             case 5:
> +                     susi->fsm = AVD_SU_SI_STATE_UNASGN;
> +                     break;
> +             case 0:
> +             default:
> +                     // assume it's assigned
> +                     TRACE("no assignment state received from amfnd.
> Assume assigned.");
> +                     susi->fsm = AVD_SU_SI_STATE_ASGND;
> +                     break;
> +             }
> +             TRACE("assignmentState: '%u'", susi_state-
> >assignmentState);
> +             TRACE("fsm state: '%u'", susi->fsm);
> 
>               if (susi->state == SA_AMF_HA_QUIESCING) {
>                       susi->su->inc_curr_act_si();
> diff --git a/osaf/services/saf/amf/amfnd/di.cc
> b/osaf/services/saf/amf/amfnd/di.cc
> --- a/osaf/services/saf/amf/amfnd/di.cc
> +++ b/osaf/services/saf/amf/amfnd/di.cc
> @@ -279,15 +279,18 @@ done:
> 
> **************************************************************
> ****************/
>  void add_sisu_state_info(AVND_MSG *msg, SaAmfSIAssignment *si_assign)
> {
> +     TRACE_ENTER();
>       AVSV_SISU_STATE_MSG *sisu_state = new
> AVSV_SISU_STATE_MSG();
> 
>       sisu_state->safSU = si_assign->su;
>       sisu_state->safSI = si_assign->si;
>       sisu_state->saAmfSISUHAState = si_assign->saAmfSISUHAState;
> +     sisu_state->assignmentState = si_assign->assignmentState;
> 
>       sisu_state->next = msg->info.avd-
> >msg_info.n2d_nd_sisu_state_info.sisu_list;
>       msg->info.avd->msg_info.n2d_nd_sisu_state_info.sisu_list =
> sisu_state;
>       msg->info.avd->msg_info.n2d_nd_sisu_state_info.num_sisu++;
> +     TRACE_LEAVE();
>  }
> 
> 
> /*************************************************************
> ***************
> @@ -336,6 +339,7 @@ void add_csicomp_state_info(AVND_MSG *ms
>       csicomp_state->safCSI = csi_assign->csi;
>       csicomp_state->safComp = csi_assign->comp;
>       csicomp_state->saAmfCSICompHAState = csi_assign-
> >saAmfCSICompHAState;
> +     csicomp_state->assignmentState = csi_assign->assignmentState;
> 
>       csicomp_state->next = msg->info.avd-
> >msg_info.n2d_nd_csicomp_state_info.csicomp_list;
>       msg->info.avd->msg_info.n2d_nd_csicomp_state_info.csicomp_list
> = csicomp_state; @@ -1526,6 +1530,8 @@ void
> avnd_sync_csicomp(AVND_CB *cb)
>                               csi_assignment.saAmfCSICompHAState =
> SA_AMF_HA_QUIESCED;
>                       }
> 
> +                     csi_assignment.assignmentState =
> +static_cast<uint32_t>(csi->curr_assign_state);
> +
>                       add_csicomp_state_info(&msg, &csi_assignment);
>               }
> 
> @@ -1587,6 +1593,7 @@ void avnd_sync_sisu(AVND_CB *cb)
>                       si_assignment.su = su->name;
>                       si_assignment.si = si->name;
>                       si_assignment.saAmfSISUHAState = si->curr_state;
> +                     si_assignment.assignmentState =
> +static_cast<uint32_t>(si->curr_assign_state);
> 
>                       add_sisu_state_info(&msg, &si_assignment);
>               }
> diff --git a/osaf/services/saf/amf/amfnd/include/avnd_mds.h
> b/osaf/services/saf/amf/amfnd/include/avnd_mds.h
> --- a/osaf/services/saf/amf/amfnd/include/avnd_mds.h
> +++ b/osaf/services/saf/amf/amfnd/include/avnd_mds.h
> @@ -31,10 +31,10 @@
>  #define AVND_MDS_H
> 
>  /* In Service upgrade support */
> -#define AVND_MDS_SUB_PART_VERSION   6
> +#define AVND_MDS_SUB_PART_VERSION   7
> 
>  #define AVND_AVD_SUBPART_VER_MIN   1
> -#define AVND_AVD_SUBPART_VER_MAX   6
> +#define AVND_AVD_SUBPART_VER_MAX   7
> 
>  #define AVND_AVND_SUBPART_VER_MIN   1
>  #define AVND_AVND_SUBPART_VER_MAX   1
> diff --git a/osaf/services/saf/amf/amfnd/mds.cc
> b/osaf/services/saf/amf/amfnd/mds.cc
> --- a/osaf/services/saf/amf/amfnd/mds.cc
> +++ b/osaf/services/saf/amf/amfnd/mds.cc
> @@ -41,14 +41,16 @@
>  const MDS_CLIENT_MSG_FORMAT_VER avnd_avd_msg_fmt_map_table[] =
> {
>       AVSV_AVD_AVND_MSG_FMT_VER_1,
> AVSV_AVD_AVND_MSG_FMT_VER_2,
>       AVSV_AVD_AVND_MSG_FMT_VER_3,
> AVSV_AVD_AVND_MSG_FMT_VER_4,
> -     AVSV_AVD_AVND_MSG_FMT_VER_4,
> AVSV_AVD_AVND_MSG_FMT_VER_6
> +     AVSV_AVD_AVND_MSG_FMT_VER_4,
> AVSV_AVD_AVND_MSG_FMT_VER_6,
> +     AVSV_AVD_AVND_MSG_FMT_VER_7
>  };
> 
>  /* messages from director */
>  const MDS_CLIENT_MSG_FORMAT_VER avd_avnd_msg_fmt_map_table[] =
> {
>       AVSV_AVD_AVND_MSG_FMT_VER_1,
> AVSV_AVD_AVND_MSG_FMT_VER_2,
>       AVSV_AVD_AVND_MSG_FMT_VER_3,
> AVSV_AVD_AVND_MSG_FMT_VER_4,
> -     AVSV_AVD_AVND_MSG_FMT_VER_5,
> AVSV_AVD_AVND_MSG_FMT_VER_6
> +     AVSV_AVD_AVND_MSG_FMT_VER_5,
> AVSV_AVD_AVND_MSG_FMT_VER_6,
> +     AVSV_AVD_AVND_MSG_FMT_VER_7
>  };
> 
>  const MDS_CLIENT_MSG_FORMAT_VER avnd_avnd_msg_fmt_map_table[]
> = {

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to