Hi Alex,
The included patches are: latest #2144 patch provided by praveen with
latest #2145 patch.
The Rolling upgrade campaign to change the application version is failing.
This is basic application upgrade test.
# smf-state camp
safSmfCampaign=Campaign1,safApp=safSmfService
state=ERROR_DETECTED(7)
error='safSu=dummy_2n_1,safSg=SG_dummy_2n,safApp=2nApp failed
after upgrade'
syslog:
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO PROC: Procedure init actions
completed
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO PROC: Start executing the steps
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO STEP: Executing AU restart
step
safSmfStep=0001,safSmfProc=amfClusterProc-1,safSmfCampaign=Campaign1,safApp=safSmfService
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO STEP: Online installation of
new software
Mar 27 08:10:57 SLES1 osafsmfnd[29845]: NO Successful start of command
execution: /hostfs/online_install.sh bundle-new, timeout 80000
Mar 27 08:10:57 SLES1 osafsmfnd[29845]: NO Command execution OK
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO STEP: Create new
SaAmfNodeSwBundle objects
Mar 27 08:10:57 SLES1 osafimmnd[29768]: NO Ccb 54 COMMITTED (SMFSERVICE)
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO STEP: Modify information model
and set maintenance status
Mar 27 08:10:57 SLES1 osafimmnd[29768]: NO Ccb 55 COMMITTED (SMFSERVICE)
Mar 27 08:10:57 SLES1 osafamfnd[29829]: NO saAmfCompType changed to
'safVersion=6.0.0,safCompType=Comp_2nApp_2n_1_1' for
'safComp=Norm1,safSu=dummy_2n_1,safSg=SG_dummy_2n,safApp=2nApp'
Mar 27 08:10:57 SLES1 osafimmnd[29768]: NO Ccb 56 COMMITTED (SMFSERVICE)
Mar 27 08:10:57 SLES1 osafsmfd[29847]: NO STEP: Restart activation units
Mar 27 08:10:57 SLES1 osafamfnd[29829]: NO Admin restart requested for
'safComp=Norm1,safSu=dummy_2n_1,safSg=SG_dummy_2n,safApp=2nApp'
Mar 27 08:10:57 SLES1 osafamfnd[29829]: NO not restarting comp because
maintenance campaign is set: safSmfCampaign=Campaign1,safApp=safSmfService
Mar 27 08:10:57 SLES1 osafsmfd[29847]: ER SU:
safSu=dummy_2n_1,safSg=SG_dummy_2n,safApp=2nApp failed after upgrade in
campaign
Thanks,
Neel.
On 2017/03/03 02:55 AM, Alex Jones wrote:
> 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;
>>>
>>>
------------------------------------------------------------------------------
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