Ok. Ack > -----Original Message----- > From: Hans Feldt [mailto:hans.fe...@ericsson.com] > Sent: 14 May 2014 16:00 > To: Nagendra Kumar; Hans Feldt; Hans Nordebäck > Cc: opensaf-devel@lists.sourceforge.net > Subject: RE: [devel] [PATCH 3 of 5] amfd: move supreinst logic from comp to su > [#713] > > > > -----Original Message----- > > From: Nagendra Kumar [mailto:nagendr...@oracle.com] > > Sent: den 14 maj 2014 11:48 > > To: Hans Feldt; Hans Feldt; Hans Nordebäck > > Cc: opensaf-devel@lists.sourceforge.net > > Subject: RE: [devel] [PATCH 3 of 5] amfd: move supreinst logic from > > comp to su [#713] > > > > > > > > > -----Original Message----- > > > From: Hans Feldt [mailto:hans.fe...@ericsson.com] > > > Sent: 14 May 2014 11:31 > > > To: Nagendra Kumar; Hans Feldt; Hans Nordebäck > > > Cc: opensaf-devel@lists.sourceforge.net > > > Subject: RE: [devel] [PATCH 3 of 5] amfd: move supreinst logic from > > > comp to su [#713] > > > > > > > > > > > > > -----Original Message----- > > > > From: Nagendra Kumar [mailto:nagendr...@oracle.com] > > > > Sent: den 13 maj 2014 11:33 > > > > To: Hans Feldt; Hans Nordebäck > > > > Cc: opensaf-devel@lists.sourceforge.net > > > > Subject: Re: [devel] [PATCH 3 of 5] amfd: move supreinst logic > > > > from comp to su [#713] > > > > > > > > 1. Not sure, why you have moved the logic to su from comp. Since > > > component being added in su makes difference of PI/NPI SU. > > > > Ideally the code should have been in su. > > > [Hans] I have moved the logic to SU since that is where it belongs, > > > you say it yourself. I don't understand your comment, it is > > > contradictory... > > > > > [Nagu]: I mean component is responsible for making su PI/NPI, so I think, > > the > code should be in component and not in SU. > [Hans] SU should be responsible for its own attributes, not Comp. One reason > for this change. > > > > > > > 2. Removing logic whether su is being deleted, will result in > > > ERROR_NOT_EXIST in rt update of su. Any specific reason for > > > > removing it ? > > > [Hans] When logic moved to SU it got hard and ugly to keep it. > > > Removing it simplifies the code and we can now handle > > > ERROR_NOT_EXIST in rt update of su without a problem. The check > > > whether SU is deleted was really just an optimization to skip the IMM > update. > > > > > > OK? > > [Nagu]: I thought an error message will blink, but I see no log message for > ERR_NOT_EXIST. So, it should be fine. > [Hans] fixed in https://sourceforge.net/p/opensaf/tickets/868/ > > OK? > > > > > > > Thanks, > > > Hans > > > > > > > > > > > Thanks > > > > -Nagu > > > > > > > > > -----Original Message----- > > > > > From: Hans Feldt [mailto:osafde...@gmail.com] > > > > > Sent: 13 May 2014 11:24 > > > > > To: Nagendra Kumar; hans.nordeb...@ericsson.com > > > > > Cc: opensaf-devel@lists.sourceforge.net > > > > > Subject: [PATCH 3 of 5] amfd: move supreinst logic from comp to > > > > > su [#713] > > > > > > > > > > osaf/services/saf/amf/amfd/comp.cc | 65 > > > > > +++----------------------------- > > > > > osaf/services/saf/amf/amfd/include/su.h | 1 + > > > > > osaf/services/saf/amf/amfd/su.cc | 39 ++++++++++++++++++- > > > > > 3 files changed, 43 insertions(+), 62 deletions(-) > > > > > > > > > > > > > > > Comp was directly manipulating SU data, this is now moved to SU. > > > > > > > > > > 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 > > > > > @@ -246,11 +246,6 @@ static void comp_add_to_model(AVD_COMP > * > > > > > } > > > > > } > > > > > > > > > > - /* Verify if the SUs preinstan value need to be changed */ > > > > > - if (comp_is_preinstantiable(comp) == true) { > > > > > - su->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 > > > > > @@ > > > > > -280,9 +275,6 @@ static void comp_add_to_model(AVD_COMP * > > > > > avd_comp_oper_state_set(comp, > SA_AMF_OPERATIONAL_ENABLED); > > > > > > > > > > /* Set runtime cached attributes. */ > > > > > - avd_saImmOiRtObjectUpdate(&su->name, > "saAmfSUPreInstantiable", > > > > > - SA_IMM_ATTR_SAUINT32T, &su- > >saAmfSUPreInstantiable); > > > > > - > > > > > avd_saImmOiRtObjectUpdate(&comp->comp_info.name, > > > > > "saAmfCompReadinessState", > > > > > SA_IMM_ATTR_SAUINT32T, &comp- > > > > > >saAmfCompReadinessState); > > > > > > > > > > @@ -1500,17 +1492,9 @@ static void comp_ccb_apply_modify_hdlr(s > > > > > > > > > > static void comp_ccb_apply_delete_hdlr(struct > > > > > CcbUtilOperationData > > > > > *opdata) { > > > > > - AVD_COMP *comp = NULL, *i_comp = NULL; > > > > > - bool isPre; > > > > > - AVD_AVND *su_node_ptr = NULL; > > > > > - AVSV_PARAM_INFO param; > > > > > - SaBoolT old_val; > > > > > - bool su_delete = false; > > > > > - struct CcbUtilOperationData *t_opData; > > > > > - > > > > > TRACE_ENTER(); > > > > > > > > > > - comp = avd_comp_get(&opdata->objectName); > > > > > + AVD_COMP *comp = avd_comp_get(&opdata->objectName); > > > > > /* comp should be found in the database even if it was > > > > > * due to parent su delete the changes are applied in > > > > > * bottom up order so all the component deletes are applied @@ > > > > > -1519,58 +1503,21 @@ static void comp_ccb_apply_delete_hdlr(s > > > > > **/ > > > > > osafassert(comp != NULL); > > > > > > > > > > - old_val = comp->su->saAmfSUPreInstantiable; > > > > > - > > > > > - /* Verify if the SUs preinstan value need to be changed */ > > > > > - if (comp_is_preinstantiable(comp) == true) { > > > > > - isPre = false; > > > > > - i_comp = comp->su->list_of_comp; > > > > > - while (i_comp) { > > > > > - if ((comp_is_preinstantiable(i_comp) == true) > && > > > > > (i_comp != comp)) { > > > > > - isPre = true; > > > > > - break; > > > > > - } > > > > > - i_comp = i_comp->su_comp_next; > > > > > - } /* end while */ > > > > > - > > > > > - if (isPre == true) { > > > > > - comp->su->saAmfSUPreInstantiable = > > > > > static_cast<SaBoolT>(true); > > > > > - } else { > > > > > - comp->su->saAmfSUPreInstantiable = > > > > > static_cast<SaBoolT>(false); > > > > > - } > > > > > - } > > > > > - > > > > > - /* check whether the SU is also undergoing delete operation */ > > > > > - t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId, > &comp->su- > > > > > >name); > > > > > - if (t_opData && t_opData->operationType == > CCBUTIL_DELETE) { > > > > > - su_delete = true; > > > > > - } > > > > > - > > > > > - /* if SU is not being deleted and the PreInstantiable state has > changed > > > > > - * then update the IMM with the new value for > saAmfSUPreInstantiable > > > > > */ > > > > > - if (su_delete == false && old_val != comp->su- > > > > > >saAmfSUPreInstantiable) { > > > > > - avd_saImmOiRtObjectUpdate(&comp->su->name, > > > > > "saAmfSUPreInstantiable", > > > > > - SA_IMM_ATTR_SAUINT32T, &comp- > >su- > > > > > >saAmfSUPreInstantiable); > > > > > - /* If SU becomes NPI then enable saAmfSUFailover flag > Sec > > > > > 3.11.1.3.2 AMF-B.04.01 spec */ > > > > > - if (!comp->su->saAmfSUPreInstantiable) { > > > > > - comp->su->set_su_failover(true); > > > > > - } > > > > > - } > > > > > - > > > > > - /* send a message to the AVND deleting the > > > > > - * component. > > > > > - */ > > > > > - su_node_ptr = comp->su->get_node_ptr(); > > > > > + // send message to ND requesting delete of the component > > > > > + AVD_AVND *su_node_ptr = comp->su->get_node_ptr(); > > > > > if ((su_node_ptr->node_state == AVD_AVND_STATE_PRESENT) || > > > > > (su_node_ptr->node_state == AVD_AVND_STATE_NO_CONFIG) || > > > > > (su_node_ptr->node_state == AVD_AVND_STATE_NCS_INIT)) { > > > > > + AVSV_PARAM_INFO param; > > > > > memset(((uint8_t *)¶m), '\0', > > > sizeof(AVSV_PARAM_INFO)); > > > > > param.act = AVSV_OBJ_OPR_DEL; > > > > > param.name = comp->comp_info.name; > > > > > param.class_id = AVSV_SA_AMF_COMP; > > > > > avd_snd_op_req_msg(avd_cb, su_node_ptr, ¶m); > > > > > } > > > > > + > > > > > avd_comp_delete(comp); > > > > > + > > > > > TRACE_LEAVE(); > > > > > } > > > > > > > > > > diff --git a/osaf/services/saf/amf/amfd/include/su.h > > > > > b/osaf/services/saf/amf/amfd/include/su.h > > > > > --- a/osaf/services/saf/amf/amfd/include/su.h > > > > > +++ b/osaf/services/saf/amf/amfd/include/su.h > > > > > @@ -121,6 +121,7 @@ class AVD_SU { > > > > > > > > > > private: > > > > > void send_attribute_update(AVSV_AMF_SU_ATTR_ID attrib_id); > > > > > + void set_saAmfSUPreInstantiable(bool value); > > > > > > > > > > // disallow copy and assign, TODO(hafe) add common macro for > > > > > this > > > > > AVD_SU(const AVD_SU&); > > > > > diff --git a/osaf/services/saf/amf/amfd/su.cc > > > > > b/osaf/services/saf/amf/amfd/su.cc > > > > > --- a/osaf/services/saf/amf/amfd/su.cc > > > > > +++ b/osaf/services/saf/amf/amfd/su.cc > > > > > @@ -147,9 +147,30 @@ void AVD_SU::remove_comp(AVD_COMP > > > *comp) > > > > > } > > > > > } > > > > > > > > > > - if (su_ref->list_of_comp == NULL) { > > > > > - /* Revert to def val */ > > > > > - su_ref->saAmfSUPreInstantiable = > static_cast<SaBoolT>(false); > > > > > + bool old_preinst_value = saAmfSUPreInstantiable; > > > > > + bool curr_preinst_value = false; > > > > > + > > > > > + // check if preinst possibly is still true > > > > > + if (comp_is_preinstantiable(comp) == true) { > > > > > + i_comp = list_of_comp; > > > > > + while (i_comp) { > > > > > + if (comp_is_preinstantiable(i_comp) == true) { > > > > > + curr_preinst_value = true; > > > > > + break; > > > > > + } > > > > > + i_comp = i_comp->su_comp_next; > > > > > + } > > > > > + } > > > > > + > > > > > + // if preinst has changed, update IMM and recalculate > saAmfSUFailover > > > > > + if (curr_preinst_value != old_preinst_value) { > > > > > + set_saAmfSUPreInstantiable(curr_preinst_value); > > > > > + > > > > > + /* If SU becomes NPI then set saAmfSUFailover flag > > > > > + * Sec 3.11.1.3.2 AMF-B.04.01 spec */ > > > > > + if (saAmfSUPreInstantiable == false) { > > > > > + comp->su->set_su_failover(true); > > > > > + } > > > > > } > > > > > } > > > > > > > > > > @@ -185,6 +206,11 @@ void AVD_SU::add_comp(AVD_COMP *comp) > { > > > > > prev_comp->su_comp_next = comp; > > > > > comp->su_comp_next = i_comp; > > > > > } > > > > > + > > > > > + /* Verify if the SUs preinstan value need to be changed */ > > > > > + if (comp_is_preinstantiable(comp) == true) { > > > > > + set_saAmfSUPreInstantiable(true); > > > > > + } > > > > > } > > > > > > > > > > /** > > > > > @@ -1748,3 +1774,10 @@ bool AVD_SU::is_in_service(void) { > > > > > (saAmfSUOperState == > > > SA_AMF_OPERATIONAL_ENABLED); > > > > > } > > > > > } > > > > > + > > > > > +void AVD_SU::set_saAmfSUPreInstantiable(bool value) { > > > > > + saAmfSUPreInstantiable = static_cast<SaBoolT>(value); > > > > > + avd_saImmOiRtObjectUpdate(&name, > "saAmfSUPreInstantiable", > > > > > + SA_IMM_ATTR_SAUINT32T, > > > > > &saAmfSUPreInstantiable); > > > > > + TRACE("%s saAmfSUPreInstantiable %u", name.value, value); } > > > > > > > > ------------------------------------------------------------------ > > > > ---- > > > > -------- "Accelerate Dev Cycles with Automated Cross-Browser > > > > Testing - For FREE Instantly run your Selenium tests across 300+ > > > > browser/OS combos. > > > > Get unparalleled scalability from the best Selenium testing > > > > platform available Simple to use. Nothing to install. Get started now > > > > for > free." > > > > http://p.sf.net/sfu/SauceLabs > > > > _______________________________________________ > > > > Opensaf-devel mailing list > > > > Opensaf-devel@lists.sourceforge.net > > > > https://lists.sourceforge.net/lists/listinfo/opensaf-devel
------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel