Do what you think is best. This was minor comment on white space. But personally I don't think that we should break lines like in:
>>>>> + (su_ptr->saAmfSUPresenceState == >>>>> + SA_AMF_PRESENCE_INSTANTIATED) && that makes the logic less understandable. We should address the reason why such line is too long with refactoring. Thanks, Hans On 01/24/2014 11:18 AM, Nagendra Kumar wrote: > So, you want to do revert this change and this knid of change from other > places except the comments ? > > -Nagu > >> -----Original Message----- >> From: Hans Feldt [mailto:hans.fe...@ericsson.com] >> Sent: 24 January 2014 14:27 >> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen Malviya; >> Mathivanan Naickan Palanivelu; Hrishikesh Chenna >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: Re: [PATCH 1 of 1] amf: support for automatic comp instantiation and >> deletion [#597] >> >> >> >> On 01/24/2014 05:06 AM, Nagendra Kumar wrote: >>>>> + (su_ptr->saAmfSUPresenceState == >>>>> + SA_AMF_PRESENCE_INSTANTIATED) && >>>> >>>> keep above expression on same line >>> >>> But the line is exceeding 80 lines when the line break is kept in the same >>> line. >> >> That should not be the case with proper code structure and naming. I think >> the >> above is an exemption to the rule because it makes the code very hard to read >> and understand if you break lines like that. >> /Hans >> >>> >>> Thanks >>> -Nagu >>> >>>> -----Original Message----- >>>> From: Hans Feldt [mailto:hans.fe...@ericsson.com] >>>> Sent: 23 January 2014 19:23 >>>> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen Malviya; >>>> Mathivanan Naickan Palanivelu; Hrishikesh Chenna >>>> Cc: opensaf-devel@lists.sourceforge.net >>>> Subject: Re: [PATCH 1 of 1] amf: support for automatic comp >>>> instantiation and deletion [#597] >>>> >>>> Ack with minor comments inline. >>>> Thanks, >>>> Hans >>>> >>>> >>>> On 01/23/2014 07:20 AM, nagendr...@oracle.com wrote: >>>>> osaf/services/saf/amf/amfd/comp.cc | 37 >>>>> ++++++++++++++++--- >>>>> osaf/services/saf/amf/amfd/ndproc.cc | 10 +++- >>>>> osaf/services/saf/amf/amfnd/clc.cc | 10 +++++ >>>>> osaf/services/saf/amf/amfnd/compdb.cc | 47 >>>> +++++++++++++++++++++--- >>>>> osaf/services/saf/amf/amfnd/include/avnd_comp.h | 2 + >>>>> osaf/services/saf/amf/amfnd/su.cc | 27 ++++++++++++- >>>>> 6 files changed, 115 insertions(+), 18 deletions(-) >>>>> >>>>> >>>>> When any component is added in the instantiated SU, Amf will try to >>>> instantiate the component. >>>>> When any component is deleted from instantiated SU, Amf will try to >>>> terminate the component. >>>>> >>>>> diff --git a/osaf/services/saf/amf/amfd/comp.cc >>>> b/osaf/services/saf/amf/amfd/comp.cc >>>>> --- a/osaf/services/saf/amf/amfd/comp.cc >>>>> +++ b/osaf/services/saf/amf/amfd/comp.cc >>>>> @@ -173,17 +173,18 @@ void avd_comp_delete(AVD_COMP *comp) >>>>> static void comp_add_to_model(AVD_COMP *comp) >>>>> { >>>>> SaNameT dn; >>>>> + AVD_SU *su_ptr = comp->su; >>>> >>>> better with just "su" >>>> >>>>> >>>>> TRACE_ENTER2("%s", comp->comp_info.name.value); >>>>> >>>>> /* Check parent link to see if it has been added already */ >>>>> - if (comp->su != NULL) { >>>>> + if (su_ptr != NULL) { >>>>> TRACE("already added"); >>>>> goto done; >>>>> } >>>>> >>>>> avsv_sanamet_init(&comp->comp_info.name, &dn, "safSu"); >>>>> - comp->su = avd_su_get(&dn); >>>>> + su_ptr = avd_su_get(&dn); >>>>> >>>>> avd_comp_db_add(comp); >>>>> comp->comp_type = avd_comptype_get(&comp->saAmfCompType); >>>>> @@ -195,7 +196,7 @@ static void comp_add_to_model(AVD_COMP * >>>>> * corresponding node is UP send the component information >>>>> * to the Node. >>>>> */ >>>>> - if (comp->su->su_is_external) { >>>>> + if (su_ptr->su_is_external) { >>>>> /* This is an external SU, so there is no node assigned >>>>> to it. >>>>> For some purpose of validations and sending SU/Comps >>>>> info >>>> to >>>>> hosting node (Controllers), we can take use of the >>>>> hosting >>>>> @@ -219,12 +220,36 @@ static void comp_add_to_model(AVD_COMP * >>>>> if ((comp->comp_info.category == AVSV_COMP_TYPE_SA_AWARE) || >>>>> (comp->comp_info.category == >>>> AVSV_COMP_TYPE_PROXIED_LOCAL_PRE_INSTANTIABLE) || >>>>> (comp->comp_info.category == >>>> AVSV_COMP_TYPE_EXTERNAL_PRE_INSTANTIABLE)) { >>>>> - comp->su->saAmfSUPreInstantiable = >>>> static_cast<SaBoolT>(true); >>>>> + su_ptr->saAmfSUPreInstantiable = static_cast<SaBoolT>(true); >>>>> + } >>>>> + >>>>> + /* This is a case of adding a component in SU which is instantiated >>>>> + state. This could be used in upgrade scenarios. When components >>>>> + are added, it is sent to Amfnd for instantiation and Amfnd >>>>> + instantiates it. Amfnd has capability for finding which component >>>>> + has been added newly. */ >>>>> + if ((su_ptr->saAmfSUAdminState != >>>> SA_AMF_ADMIN_LOCKED_INSTANTIATION) && >>>>> + (su_ptr->saAmfSUPresenceState == >>>>> + SA_AMF_PRESENCE_INSTANTIATED) && >>>> >>>> keep above expression on same line >>>> >>>>> + (avd_cb->avail_state_avd == SA_AMF_HA_ACTIVE)) { >>>>> + AVD_AVND *node = su_ptr->su_on_node; >>>>> + if ((node->node_state == AVD_AVND_STATE_PRESENT) || >>>>> + (node->node_state == >>>>> + AVD_AVND_STATE_NO_CONFIG) || >>>> >>>> keep above expression on same line >>>> >>>>> + (node->node_state == >>>> AVD_AVND_STATE_NCS_INIT)) { >>>>> + if (avd_snd_su_msg(avd_cb, su_ptr) != >>>>> + NCSCC_RC_SUCCESS) { >>>>> + LOG_ER("%s: avd_snd_su_msg failed %s", >>>>> + __FUNCTION__, >>>>> + su_ptr->name.value); >>>> >>>> log to whom you failed to send and comp DN, one day you will need it... >>>> >>>>> + goto done; >>>>> + } >>>>> + } >>>>> } >>>>> >>>>> /* Set runtime cached attributes. */ >>>>> - avd_saImmOiRtObjectUpdate(&comp->su->name, >>>> const_cast<SaImmAttrNameT>("saAmfSUPreInstantiable"), >>>>> - SA_IMM_ATTR_SAUINT32T, &comp->su- >>>>> saAmfSUPreInstantiable); >>>>> + avd_saImmOiRtObjectUpdate(&su_ptr->name, >>>> const_cast<SaImmAttrNameT>("saAmfSUPreInstantiable"), >>>>> + SA_IMM_ATTR_SAUINT32T, &su_ptr- >>>>> saAmfSUPreInstantiable); >>>>> >>>>> avd_saImmOiRtObjectUpdate(&comp->comp_info.name, >>>> const_cast<SaImmAttrNameT>("saAmfCompReadinessState"), >>>>> SA_IMM_ATTR_SAUINT32T, &comp- >>>>> saAmfCompReadinessState); >>>>> diff --git a/osaf/services/saf/amf/amfd/ndproc.cc >>>> b/osaf/services/saf/amf/amfd/ndproc.cc >>>>> --- a/osaf/services/saf/amf/amfd/ndproc.cc >>>>> +++ b/osaf/services/saf/amf/amfd/ndproc.cc >>>>> @@ -608,9 +608,13 @@ void avd_data_update_req_evh(AVD_CL_CB * >>>>> case AVSV_SA_AMF_COMP:{ >>>>> /* Find the component record in the database, >>>> specified in the message. */ >>>>> if ((comp = avd_comp_get(&n2d_msg- >>>>> msg_info.n2d_data_req.param_info.name)) == NULL) { >>>>> - LOG_ER("%s: Invalid Comp '%s' (%u)", >>>> __FUNCTION__, >>>>> - n2d_msg- >>>>> msg_info.n2d_data_req.param_info.name.value, >>>>> - n2d_msg- >>>>> msg_info.n2d_data_req.param_info.name.length); >>>>> + /* In case of component delete, component >>>> gets >>>>> + deleted at Amfd first and then it gets >>>>> + uninstantiated and then deleted at Amfnd. >>>>> + So, when update for presence state comes >>>> from >>>>> + Amfnd, the component doesn't exists in >>>> Amfd*/ >>>>> + LOG_IN("%s: Invalid Comp '%s'", >>>> __FUNCTION__, >>>>> + n2d_msg- >>>>> msg_info.n2d_data_req.param_info.name.value); >>>>> goto done; >>>>> } >>>>> >>>>> diff --git a/osaf/services/saf/amf/amfnd/clc.cc >>>> b/osaf/services/saf/amf/amfnd/clc.cc >>>>> --- a/osaf/services/saf/amf/amfnd/clc.cc >>>>> +++ b/osaf/services/saf/amf/amfnd/clc.cc >>>>> @@ -1306,6 +1306,16 @@ uint32_t avnd_comp_clc_st_chng_prc(AVND_ >>>>> } >>>>> } >>>>> >>>>> + /* This is a case of 'component delete' when su is in intantiated >>>>> + state. Component can go into uninstantiated state or termination >>>>> + failed state, but the component information needs to be deleted from >>>>> + data base. */ >>>>> + if ((comp->pending_delete == true) && >>>>> + ((comp->pres == >>>> SA_AMF_PRESENCE_UNINSTANTIATED) || >>>>> + (comp->pres == >>>> SA_AMF_PRESENCE_TERMINATION_FAILED)) && >>>>> + (comp->su->pres == >>>> SA_AMF_PRESENCE_INSTANTIATED)) >>>>> + rc = avnd_compdb_rec_del(cb, &comp->name); >>>>> + >>>>> done: >>>>> TRACE_LEAVE2("%u", rc); >>>>> return rc; >>>>> diff --git a/osaf/services/saf/amf/amfnd/compdb.cc >>>> b/osaf/services/saf/amf/amfnd/compdb.cc >>>>> --- a/osaf/services/saf/amf/amfnd/compdb.cc >>>>> +++ b/osaf/services/saf/amf/amfnd/compdb.cc >>>>> @@ -837,15 +837,50 @@ uint32_t avnd_comp_oper_req(AVND_CB *cb, >>>>> >>>>> case AVSV_OBJ_OPR_DEL: >>>>> { >>>> >>>> the above opening brace is on the wrong line thus causing unnecessary >>>> indentation and hard top read code, please change or remove (if >>>> possible) it >>>> >>>>> - AVND_COMP *comp = 0; >>>>> + /* This request comes when any component is being >>>>> + deleted. When this request comes from Amfd, >>>>> + component can be in instantiated or uninstantiated >>>>> + state and in that case, Amfnd will uninstantiate the >>>>> + component and delete the record from its data base. >>>>> + This is kind of automatic termination of a component >>>>> + when comp is getting deleted. */ >>>>> + AVND_COMP *comp = >>>>> + m_AVND_COMPDB_REC_GET(cb->compdb, >>>> param->name); >>>>> + if (comp == NULL) { >>>>> + LOG_ER("%s: Comp '%s' not found", >>>> __FUNCTION__, >>>>> + param->name.value); >>>>> + goto done; >>>>> + } >>>>> >>>>> - /* get the record */ >>>>> - comp = m_AVND_COMPDB_REC_GET(cb->compdb, >>>> param->name); >>>>> - if (comp) { >>>>> - /* delete the record */ >>>>> - >>>> m_AVND_SEND_CKPT_UPDT_ASYNC_RMV(cb, comp, >> AVND_CKPT_COMP_CONFIG); >>>>> + if ((comp->pres == >>>> SA_AMF_PRESENCE_UNINSTANTIATED) && >>>>> + (comp->su->pres == >>>>> + >>>> SA_AMF_PRESENCE_UNINSTANTIATED)) { >>>> >>>> no line break above >>>> >>>>> + >>>> m_AVND_SEND_CKPT_UPDT_ASYNC_RMV(cb, comp, >>>>> + >>>> AVND_CKPT_COMP_CONFIG); >>>>> rc = avnd_compdb_rec_del(cb, ¶m- >> name); >>>>> + goto done; >>>>> } >>>>> + >>>>> + /* Terminate the pi comp. It will terminate the >>>>> + component and delete the comp record. */ >>>>> + if >>>> (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp)) { >>>>> + comp->pending_delete = true; >>>> >>>> isn't this setting common to both types of components? >>>> >>>>> + TRACE("Running the component clc FSM, >>>> terminate" >>>>> + " the component"); >>>> >>>> th above trace is not needed, remove >>>> >>>>> + rc = avnd_comp_clc_fsm_run(cb, comp, >>>>> + >>>> AVND_COMP_CLC_PRES_FSM_EV_TERM); >>>>> + goto done; >>>>> + } >>>>> + /* Terminate the Npi comp. After deleting the csi, comp >>>>> + will be already terminated, so we just want to delete >>>>> + the comp record.*/ >>>>> + if >>>> (!m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp)) { >>>>> + >>>> m_AVND_SEND_CKPT_UPDT_ASYNC_RMV(cb, comp, >>>>> + >>>> AVND_CKPT_COMP_CONFIG); >>>>> + rc = avnd_compdb_rec_del(cb, ¶m- >>>>> name); >>>>> + goto done; >>>>> + } >>>>> + >>>>> } >>>>> break; >>>>> >>>>> diff --git a/osaf/services/saf/amf/amfnd/include/avnd_comp.h >>>> b/osaf/services/saf/amf/amfnd/include/avnd_comp.h >>>>> --- a/osaf/services/saf/amf/amfnd/include/avnd_comp.h >>>>> +++ b/osaf/services/saf/amf/amfnd/include/avnd_comp.h >>>>> @@ -359,6 +359,8 @@ typedef struct avnd_comp_tag { >>>>> SaBoolT admin_oper; /*set to true if undergoing admin >>>>> operation */ >>>>> int config_is_valid; /* Used to indicate that config has to be >>>>> refreshed >>>> from IMM */ >>>>> bool assigned_flag; /* Used in finding multiple csi for a single >>>>> comp >>>> while csi mod.*/ >>>>> + bool pending_delete; /* Used in deleting component when su is in >>>>> + instantiated state.*/ >>>>> >>>>> } AVND_COMP; >>>>> >>>>> diff --git a/osaf/services/saf/amf/amfnd/su.cc >>>> b/osaf/services/saf/amf/amfnd/su.cc >>>>> --- a/osaf/services/saf/amf/amfnd/su.cc >>>>> +++ b/osaf/services/saf/amf/amfnd/su.cc >>>>> @@ -79,9 +79,13 @@ uint32_t avnd_evt_avd_reg_su_evh(AVND_CB >>>>> >>>>> /* scan the su list & add each su to su-db */ >>>>> for (su_info = info->su_list; su_info; su = 0, su_info = >>>>> su_info->next) { >>>>> - su = avnd_sudb_rec_add(cb, su_info, &rc); >>>>> - if (!su) >>>>> - break; >>>>> + su = m_AVND_SUDB_REC_GET(cb->sudb, su_info->name); >>>>> + /* This function is common >>>>> + 1. for adding new SU in the data base >>>>> + 2. for adding a new componet in the existing su. >>>>> + So, we need to check wether the SU exists or not. */ >>>> >>>> two spelling issues above, remove the "we need to" >>>> >>>>> + if (su == NULL) >>>>> + su = avnd_sudb_rec_add(cb, su_info, &rc); >>>>> >>>>> m_AVND_SEND_CKPT_UPDT_ASYNC_ADD(cb, su, >>>> AVND_CKPT_SU_CONFIG); >>>>> >>>>> @@ -93,11 +97,28 @@ uint32_t avnd_evt_avd_reg_su_evh(AVND_CB >>>>> rc = NCSCC_RC_FAILURE; >>>>> break; >>>>> } >>>>> + >>>>> + /* When NPI comp is added into PI SU(that is >>>> UNINSTANTIATED), >>>>> + we don't have to run SU FSM as anyway, we are not >>>>> + instantiating NPI component. In this case, anyway, SU will >>>>> + remain in instantiated state. NPI comp will get instantiated >>>>> + when corresponding csi is added. */ >>>>> + bool su_is_instantiated; >>>>> + m_AVND_SU_IS_INSTANTIATED(su, su_is_instantiated); >>>>> + >>>>> + if ((su->pres == SA_AMF_PRESENCE_INSTANTIATED) && >>>>> + (su_is_instantiated == false)) { >>>>> + avnd_su_pres_state_set(su, >>>>> + >>>> SA_AMF_PRESENCE_UNINSTANTIATED); >>>>> + rc = avnd_su_pres_fsm_run(cb, su, 0, >>>>> + AVND_SU_PRES_FSM_EV_INST); >>>>> + } >>>>> } >>>>> >>>>> /*** send the response to AvD ***/ >>>>> rc = avnd_di_reg_su_rsp_snd(cb, &info->su_list->name, rc); >>>>> >>>>> + >>>>> done: >>>>> TRACE_LEAVE(); >>>>> return rc; >>>>> >>>>> >>> >>> > > ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel