Hi Praveen, Both patches look fine except for one issue in the first patch (02_2144.patch). See the comment below.
Neel, do you have any comments for the SMF patch?
If both of you guys are OK, then I will push the AMF (my original and
Praveen's 2 later ones) and SMF patches tomorrow.
Alex
diff --git a/src/amf/amfd/sgproc.cc b/src/amf/amfd/sgproc.cc
--- a/src/amf/amfd/sgproc.cc
+++ b/src/amf/amfd/sgproc.cc
@@ -2092,13 +2092,17 @@ void avd_node_down_mw_susi_failover(AVD_
* one loop as more than one MW SU per SG in one node is not supported.
*/
osafassert(avnd->list_of_ncs_su.empty() != true);
-
+ bool campaign_set = avnd->is_campaign_set_for_all_sus();
for (const auto& i_su : avnd->list_of_ncs_su) {
+ if ((avnd->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED_INSTANTIATION) ||
+ (campaign_set == false)) {
+ i_su->set_oper_state(SA_AMF_OPERATIONAL_DISABLED);
+ i_su->disable_comps(SA_AIS_ERR_TIMEOUT);
+ }
[Alex] The following line needs to be removed.
i_su->set_oper_state(SA_AMF_OPERATIONAL_DISABLED);
[Alex] Done comment
i_su->set_pres_state(SA_AMF_PRESENCE_UNINSTANTIATED);
On 03/01/2017 04:10 AM, praveen malviya wrote:
> ------------------------------------------------------------------------
> NOTICE: This email was received from an EXTERNAL sender
> ------------------------------------------------------------------------
>
> Hi Alex,
>
> Change in comp.cc looks fine.
>
> I guess other changes are related to the node reboot case in the context
> of a campaign which performs upgrade by rebooting the node. In this case
> since amfnd is freshly coming up, SUs on this node will not have their
> sumaintenance attribute set (amfnd does not read su config from IMM)
> which was set before SMF orders node reboot. If this is the case then I
> think this can still be achieved without updating AMFD and AMFND MDS
> versions and without including it in SU_REG message.
>
> How to do it: AMFD still can send campaign name by calling
> su->set_su_maintenance_campaign() for each SU when it gets response from
> amfnd for SU_REG successful and before it sends instantiation message
> for any SU. By this time AMFND has already all the information of SU
> hosted on it, so it will update the su_db with campaign name. Attached
> is the patch based on this idea (2144_update.patch).
>
> Thanks,
> Praveen
>
>
> On 01-Mar-17 3:01 AM, Alex Jones wrote:
>> src/amf/amfd/mds.cc | 2 +-
>> src/amf/amfd/mds.h | 4 ++--
>> src/amf/amfd/util.cc | 5 +++++
>> src/amf/amfnd/avnd_mds.h | 4 ++--
>> src/amf/amfnd/comp.cc | 2 +-
>> src/amf/amfnd/mds.cc | 4 ++--
>> src/amf/amfnd/sudb.cc | 2 ++
>> src/amf/common/amf_d2nmsg.h | 2 ++
>> src/amf/common/d2nedu.c | 6 ++++++
>> src/amf/common/d2nmsg.c | 2 ++
>> 10 files changed, 25 insertions(+), 8 deletions(-)
>>
>>
>> This patch adds support for Section 3.11.1.4.2 of AMF B.04.01 spec:
> Restrictions
>> to Auto-Repair.
>>
>> diff --git a/src/amf/amfd/mds.cc b/src/amf/amfd/mds.cc
>> --- a/src/amf/amfd/mds.cc
>> +++ b/src/amf/amfd/mds.cc
>> @@ -47,7 +47,7 @@ const MDS_CLIENT_MSG_FORMAT_VER avd_avnd
>> 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_7
>> + AVSV_AVD_AVND_MSG_FMT_VER_7, AVSV_AVD_AVND_MSG_FMT_VER_8
>> };
>>
>> const MDS_CLIENT_MSG_FORMAT_VER avd_avd_msg_fmt_map_table[] = {
>> diff --git a/src/amf/amfd/mds.h b/src/amf/amfd/mds.h
>> --- a/src/amf/amfd/mds.h
>> +++ b/src/amf/amfd/mds.h
>> @@ -33,10 +33,10 @@
>>
>> /* In Service upgrade support */
>> #define AVD_MDS_SUB_PART_VERSION_4 4
>> -#define AVD_MDS_SUB_PART_VERSION 7
>> +#define AVD_MDS_SUB_PART_VERSION 8
>>
>> #define AVD_AVND_SUBPART_VER_MIN 1
>> -#define AVD_AVND_SUBPART_VER_MAX 7
>> +#define AVD_AVND_SUBPART_VER_MAX 8
>>
>> #define AVD_AVD_SUBPART_VER_MIN 1
>> #define AVD_AVD_SUBPART_VER_MAX 6
>> diff --git a/src/amf/amfd/util.cc b/src/amf/amfd/util.cc
>> --- a/src/amf/amfd/util.cc
>> +++ b/src/amf/amfd/util.cc
>> @@ -483,6 +483,10 @@ static void reg_su_msg_init_su_info(AVD_
>> su_info->su_is_external = su->su_is_external;
>> su_info->su_failover = su->saAmfSUFailover;
>>
>> + SaNameT suCampaign;
>> + osaf_extended_name_alloc(su->saAmfSUMaintenanceCampaign.c_str(),
> &suCampaign);
>> + su_info->suMaintenanceCampaign = suCampaign;
>> +
>> su_info->next = su_msg->msg_info.d2n_reg_su.su_list;
>> su_msg->msg_info.d2n_reg_su.su_list = su_info;
>> su_msg->msg_info.d2n_reg_su.num_su++;
>> @@ -1671,6 +1675,7 @@ static void free_d2n_su_msg_info(AVSV_DN
>> su_info = su_msg->msg_info.d2n_reg_su.su_list;
>> su_msg->msg_info.d2n_reg_su.su_list = su_info->next;
>> osaf_extended_name_free(&su_info->name);
>> + osaf_extended_name_free(&su_info->suMaintenanceCampaign);
>> delete su_info;
>> }
>> }
>> diff --git a/src/amf/amfnd/avnd_mds.h b/src/amf/amfnd/avnd_mds.h
>> --- a/src/amf/amfnd/avnd_mds.h
>> +++ b/src/amf/amfnd/avnd_mds.h
>> @@ -31,10 +31,10 @@
>> #define AMF_AMFND_AVND_MDS_H_
>>
>> /* In Service upgrade support */
>> -#define AVND_MDS_SUB_PART_VERSION 7
>> +#define AVND_MDS_SUB_PART_VERSION 8
>>
>> #define AVND_AVD_SUBPART_VER_MIN 1
>> -#define AVND_AVD_SUBPART_VER_MAX 7
>> +#define AVND_AVD_SUBPART_VER_MAX 8
>>
>> #define AVND_AVND_SUBPART_VER_MIN 1
>> #define AVND_AVND_SUBPART_VER_MAX 1
>> diff --git a/src/amf/amfnd/comp.cc b/src/amf/amfnd/comp.cc
>> --- a/src/amf/amfnd/comp.cc
>> +++ b/src/amf/amfnd/comp.cc
>> @@ -2675,7 +2675,7 @@ uint32_t comp_restart_initiate(AVND_COMP
>> if (NCSCC_RC_SUCCESS != rc)
>> goto done;
>>
>> - if (!comp->su->suMaintenanceCampaign.empty()) {
>> + if (!comp->su->suMaintenanceCampaign.empty() && !comp->admin_oper) {
>> LOG_NO("not restarting comp because maintenance campaign is set: %s",
>> comp->su->suMaintenanceCampaign.c_str());
>>
>> diff --git a/src/amf/amfnd/mds.cc b/src/amf/amfnd/mds.cc
>> --- a/src/amf/amfnd/mds.cc
>> +++ b/src/amf/amfnd/mds.cc
>> @@ -43,7 +43,7 @@ const MDS_CLIENT_MSG_FORMAT_VER avnd_avd
>> 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_7
>> + AVSV_AVD_AVND_MSG_FMT_VER_7, AVSV_AVD_AVND_MSG_FMT_VER_8
>> };
>>
>> /* messages from director */
>> @@ -51,7 +51,7 @@ const MDS_CLIENT_MSG_FORMAT_VER avd_avnd
>> 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_7
>> + AVSV_AVD_AVND_MSG_FMT_VER_7, AVSV_AVD_AVND_MSG_FMT_VER_8
>> };
>>
>> const MDS_CLIENT_MSG_FORMAT_VER avnd_avnd_msg_fmt_map_table[] = {
>> diff --git a/src/amf/amfnd/sudb.cc b/src/amf/amfnd/sudb.cc
>> --- a/src/amf/amfnd/sudb.cc
>> +++ b/src/amf/amfnd/sudb.cc
>> @@ -52,6 +52,7 @@ AVND_SU *avnd_sudb_rec_add(AVND_CB *cb,
>> {
>> AVND_SU *su = 0;
>> const std::string info_name = Amf::to_string(&info->name);
>> + const std::string info_campaign =
> Amf::to_string(&info->suMaintenanceCampaign);
>>
>> TRACE_ENTER2("SU'%s'", info_name.c_str());
>> /* verify if this su is already present in the db */
>> @@ -80,6 +81,7 @@ AVND_SU *avnd_sudb_rec_add(AVND_CB *cb,
>> su->is_ncs = info->is_ncs;
>> su->su_is_external = info->su_is_external;
>> su->sufailover = info->su_failover;
>> + su->suMaintenanceCampaign = info_campaign;
>>
>> /*
>> * Update the rest of the parameters with default values.
>> diff --git a/src/amf/common/amf_d2nmsg.h b/src/amf/common/amf_d2nmsg.h
>> --- a/src/amf/common/amf_d2nmsg.h
>> +++ b/src/amf/common/amf_d2nmsg.h
>> @@ -51,6 +51,7 @@ extern "C" {
>> #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
>> +#define AVSV_AVD_AVND_MSG_FMT_VER_8 8
>>
>> /* Internode/External Components Validation result */
>> typedef enum {
>> @@ -137,6 +138,7 @@ typedef struct avsv_su_info_msg {
>> bool is_ncs;
>> bool su_is_external; /*indicates if this SU is external */
>> bool su_failover;
>> + SaNameT suMaintenanceCampaign;
>> struct avsv_su_info_msg *next;
>> } AVSV_SU_INFO_MSG;
>>
>> diff --git a/src/amf/common/d2nedu.c b/src/amf/common/d2nedu.c
>> --- a/src/amf/common/d2nedu.c
>> +++ b/src/amf/common/d2nedu.c
>> @@ -635,6 +635,7 @@ uint32_t avsv_edp_su_info_msg(EDU_HDL *h
>> AVSV_SU_INFO_MSG *struct_ptr = NULL, **d_ptr = NULL;
>> uint16_t ver2 = AVSV_AVD_AVND_MSG_FMT_VER_2;
>> uint16_t ver5 = AVSV_AVD_AVND_MSG_FMT_VER_5;
>> + uint16_t ver8 = AVSV_AVD_AVND_MSG_FMT_VER_8;
>>
>> EDU_INST_SET avsv_su_info_msg_rules[] = {
>> {EDU_START, avsv_edp_su_info_msg, EDQ_LNKLIST, 0, 0,
>> @@ -665,6 +666,11 @@ uint32_t avsv_edp_su_info_msg(EDU_HDL *h
>> {EDU_EXEC, ncs_edp_ncs_bool, 0, 0, 0,
>> (long)&((AVSV_SU_INFO_MSG *)0)->su_failover, 0, NULL},
>>
>> + /* Include suMaintenanceCampaign in version 8 and higher */
>> + {EDU_VER_GE, NULL, 0, 0, 2, 0, 0, (EDU_EXEC_RTINE)((uint16_t
> *)(&(ver8)))},
>> + {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
>> + (long)&((AVSV_SU_INFO_MSG *)0)->suMaintenanceCampaign, 0, NULL},
>> +
>> {EDU_TEST_LL_PTR, avsv_edp_su_info_msg, 0, 0, 0,
>> (long)&((AVSV_SU_INFO_MSG *)0)->next, 0, NULL},
>> {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
>> diff --git a/src/amf/common/d2nmsg.c b/src/amf/common/d2nmsg.c
>> --- a/src/amf/common/d2nmsg.c
>> +++ b/src/amf/common/d2nmsg.c
>> @@ -49,6 +49,7 @@ static void free_d2n_su_msg_info(AVSV_DN
>> su_info = su_msg->msg_info.d2n_reg_su.su_list;
>> su_msg->msg_info.d2n_reg_su.su_list = su_info->next;
>> osaf_extended_name_free(&su_info->name);
>> + osaf_extended_name_free(&su_info->suMaintenanceCampaign);
>> free(su_info);
>> }
>> }
>> @@ -85,6 +86,7 @@ static uint32_t cpy_d2n_su_msg(AVSV_DND_
>>
>> memcpy(d_su_info, s_su_info, sizeof(AVSV_SU_INFO_MSG));
>> osaf_extended_name_alloc(osaf_extended_name_borrow(&s_su_info->name),
> &d_su_info->name);
>> +
> osaf_extended_name_alloc(osaf_extended_name_borrow(&s_su_info->suMaintenanceCampaign),
> &d_su_info->suMaintenanceCampaign);
>> d_su_info->next = d_su_msg->msg_info.d2n_reg_su.su_list;
>> d_su_msg->msg_info.d2n_reg_su.su_list = d_su_info;
>>
>>
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ 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 [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
