> -----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...

> 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?

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 *)&param), '\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, &param);
> >     }
> > +
> >     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

Reply via email to