Please keep the trace. - su->saAmfSUFailover = static_cast<bool>(sut->saAmfSutDefSUFailover); - TRACE("Modified saAmfSutDefSUFailover to '%u' for Su'%s'", - su->saAmfSUFailover, su->name.value); - su_nd_attribute_update(su, saAmfSUFailOver_ID);
> -----Original Message----- > From: Hans Feldt [mailto:osafde...@gmail.com] > Sent: 30 April 2014 10:31 > To: Nagendra Kumar; Praveen Malviya; hans.nordeb...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: [PATCH 2 of 7] amfd: add and use set_su_failover [#713] > > osaf/services/saf/amf/amfd/comp.cc | 3 +-- > osaf/services/saf/amf/amfd/include/su.h | 6 +++++- > osaf/services/saf/amf/amfd/sg.cc | 3 +-- > osaf/services/saf/amf/amfd/su.cc | 30 +++++++++++++++++------------- > osaf/services/saf/amf/amfd/sutype.cc | 5 +---- > 5 files changed, 25 insertions(+), 22 deletions(-) > > > 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 > @@ -1560,8 +1560,7 @@ static void comp_ccb_apply_delete_hdlr(s > 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->saAmfSUFailover = true; > - su_nd_attribute_update(comp->su, > saAmfSUFailOver_ID); > + comp->su->set_su_failover(true); > } > } > > 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 > @@ -38,6 +38,7 @@ > /** > * AMF director Service Unit representation. > */ > +//TODO: all attributes that have a setter should probably have an getter > class AVD_SU { > public: > SaNameT name; > @@ -91,6 +92,7 @@ class AVD_SU { > struct avd_sutype *su_type; > AVD_SU *su_list_su_type_next; > > + void set_su_failover(bool value); > void dec_curr_stdby_si(void); > void inc_curr_stdby_si(void); > void inc_curr_act_si(void); > @@ -108,6 +110,9 @@ class AVD_SU { > void delete_all_susis(void); > void set_all_susis_assigned_quiesced(void); > void set_all_susis_assigned(void); > + > + private: > + void send_attribute_update(AVSV_AMF_SU_ATTR_ID attrib_id); > }; > > extern AmfDb<AVD_SU> *su_db; > @@ -194,6 +199,5 @@ extern SaAisErrorT avd_sutcomptype_confi > extern void avd_sutcomptype_constructor(void); > > extern AVD_SU *avd_su_get_or_create(const SaNameT *dn); > -extern void su_nd_attribute_update(const AVD_SU *su, > AVSV_AMF_SU_ATTR_ID attrib_id); > > #endif > diff --git a/osaf/services/saf/amf/amfd/sg.cc > b/osaf/services/saf/amf/amfd/sg.cc > --- a/osaf/services/saf/amf/amfd/sg.cc > +++ b/osaf/services/saf/amf/amfd/sg.cc > @@ -1564,8 +1564,7 @@ void avd_sg_adjust_config(AVD_SG *sg) > /* saAmfSUFailover must be true for a NPI SU sec 3.11.1.3.2 > AMF-B.04.01 spec */ > for (AVD_SU *su = sg->list_of_su; su != NULL; su = su- > >sg_list_su_next) { > if (!su->saAmfSUFailover) { > - su->saAmfSUFailover = true; > - su_nd_attribute_update(su, > saAmfSUFailOver_ID); > + su->set_su_failover(true); > } > } > > 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 > @@ -1427,19 +1427,19 @@ static void su_ccb_apply_modify_hdlr(str > > if (!strcmp(attr_mod->modAttr.attrName, "saAmfSUFailover")) > { > if (value_is_deleted) { > - su->saAmfSUFailover = static_cast<bool>(su- > >su_type->saAmfSutDefSUFailover); > + su->set_su_failover(su->su_type- > >saAmfSutDefSUFailover); > su->saAmfSUFailover_configured = false; > } > else { > - su->saAmfSUFailover = > static_cast<bool>(*((SaUint32T *)attr_mod->modAttr.attrValues[0])); > + bool value = > + static_cast<bool>(*((SaUint32T > *)attr_mod->modAttr.attrValues[0])); > + su->set_su_failover(value); > su->saAmfSUFailover_configured = true; > } > - TRACE("Modified saAmfSUFailover is '%u'", su- > >saAmfSUFailover); > if (!su->saAmfSUPreInstantiable) { > - su->saAmfSUFailover = true; > + su->set_su_failover(true); > su->saAmfSUFailover_configured = true; > } > - su_nd_attribute_update(su, saAmfSUFailOver_ID); > } else if (!strcmp(attr_mod->modAttr.attrName, > "saAmfSUMaintenanceCampaign")) { > if (value_is_deleted) { > su->saAmfSUMaintenanceCampaign.length = > 0; > @@ -1460,13 +1460,12 @@ static void su_ccb_apply_modify_hdlr(str > su->su_type = sut; > avd_sutype_add_su(su); > if (su->saAmfSUPreInstantiable) { > - su->saAmfSUFailover = static_cast<bool>(sut- > >saAmfSutDefSUFailover); > + su->set_su_failover(static_cast<bool>(sut- > >saAmfSutDefSUFailover)); > su->saAmfSUFailover_configured = false; > } else { > - su->saAmfSUFailover = true; > + su->set_su_failover(true); > su->saAmfSUFailover_configured = true; > } > - su_nd_attribute_update(su, saAmfSUFailOver_ID); > su->su_is_external = sut->saAmfSutIsExternal; > } else > osafassert(0); > @@ -1601,8 +1600,7 @@ void avd_su_constructor(void) > * @param su > * @param attrib_id > */ > -void su_nd_attribute_update(const AVD_SU *su, AVSV_AMF_SU_ATTR_ID > attrib_id) > -{ > +void AVD_SU::send_attribute_update(AVSV_AMF_SU_ATTR_ID attrib_id) { > AVD_AVND *su_node_ptr = NULL; > AVSV_PARAM_INFO param; > memset(((uint8_t *)¶m), '\0', sizeof(AVSV_PARAM_INFO)); > @@ -1613,10 +1611,10 @@ void su_nd_attribute_update(const AVD_SU > TRACE_LEAVE2("avd is not in active state"); > return; > } > - m_AVD_GET_SU_NODE_PTR(avd_cb, su, su_node_ptr); > + m_AVD_GET_SU_NODE_PTR(avd_cb, this, su_node_ptr); > param.class_id = AVSV_SA_AMF_SU; > param.act = AVSV_OBJ_OPR_MOD; > - param.name = su->name; > + param.name = name; > > switch (attrib_id) { > case saAmfSUFailOver_ID: > @@ -1624,7 +1622,7 @@ void su_nd_attribute_update(const AVD_SU > uint32_t sufailover; > param.attr_id = saAmfSUFailOver_ID; > param.value_len = sizeof(uint32_t); > - sufailover = htonl(su->saAmfSUFailover); > + sufailover = htonl(saAmfSUFailover); > memcpy(¶m.value[0], &sufailover, param.value_len); > break; > } > @@ -1644,6 +1642,12 @@ void su_nd_attribute_update(const AVD_SU > TRACE_LEAVE(); > } > > +void AVD_SU::set_su_failover(bool value) { > + saAmfSUFailover = value; > + TRACE("%s saAmfSUFailover '%u'", name.value, saAmfSUFailover); > + send_attribute_update(saAmfSUFailOver_ID); > +} > + > /** > * Delete all SUSIs assigned to the SU. > * > diff --git a/osaf/services/saf/amf/amfd/sutype.cc > b/osaf/services/saf/amf/amfd/sutype.cc > --- a/osaf/services/saf/amf/amfd/sutype.cc > +++ b/osaf/services/saf/amf/amfd/sutype.cc > @@ -255,10 +255,7 @@ static void sutype_ccb_apply_modify_hdlr > if (old_value != sut->saAmfSutDefSUFailover) { > for (AVD_SU *su = sut->list_of_su; su; su = su- > >su_list_su_type_next) { > if ((!su->saAmfSUFailover_configured) > && (su->saAmfSUPreInstantiable)) { > - su->saAmfSUFailover = > static_cast<bool>(sut->saAmfSutDefSUFailover); > - TRACE("Modified > saAmfSutDefSUFailover to '%u' for Su'%s'", > - su- > >saAmfSUFailover, su->name.value); > - su_nd_attribute_update(su, > saAmfSUFailOver_ID); > + su- > >set_su_failover(static_cast<bool>(sut->saAmfSutDefSUFailover)); > } > } > } ------------------------------------------------------------------------------ "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