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