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 *)&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