If the modified patch is not possible to get floated today, can we move Milestone to 4.6 FC please ?
Thanks -Nagu > -----Original Message----- > From: Nagendra Kumar > Sent: 05 August 2014 11:23 > To: Hans Nordebäck; Hans Feldt; Praveen Malviya > Cc: [email protected] > Subject: Re: [devel] [PATCH 1 of 1] AMF: support immediate effect when > changing comp-type attributes V2 [#819] > > Hi Hans N, > Since there is not much time left for 4.5 FC, it would be nice > to > have the patch floated this week so that we can review it early. > > Thanks > -Nagu > > -----Original Message----- > > From: Nagendra Kumar > > Sent: 01 August 2014 15:35 > > To: Hans Nordebäck; Hans Feldt; Praveen Malviya > > Cc: [email protected] > > Subject: Re: [devel] [PATCH 1 of 1] AMF: support immediate effect when > > changing comp-type attributes V2 [#819] > > > > Hi Hans N, > > Thanks for the response. > > Regarding #2: I agree with your interpretation. So, patch needs change. > > Amfnd should check whether saAmfCompCSISetCallbackTimeout has been > > configured and accordingly update the value. > > For example, you can take reference from sgtype > > (saAmfSgtDefAutoRepair_configured) and sg > (saAmfSGAutoRepair_configured). > > > > Thanks > > -Nagu > > > -----Original Message----- > > > From: Hans Nordebäck [mailto:[email protected]] > > > Sent: 31 July 2014 13:27 > > > To: Nagendra Kumar; Hans Feldt; Praveen Malviya > > > Cc: [email protected] > > > Subject: RE: [PATCH 1 of 1] AMF: support immediate effect when > > > changing comp-type attributes V2 [#819] > > > > > > Hi Nagu, > > > > > > regarding item 1 I have to check with HansF. Item 2, if > > > saAmfCompCSISetCallbackTimeout is not configured then > > > saAmfCtDefCallbackTimeout is used. > > > This patch introduces changing attributes in SaAmfCompType and if > > > someone wants to change saAmfCtDefCallbackTimeout it will affect > > > saAmfCompCSISetCallbackTimeout if it was not configured, i.e use > > > saAmfCtDefCallbackTimeout. This is how I interpreted this requirement. > > > /Regards HansN > > > > > > -----Original Message----- > > > From: Nagendra Kumar [mailto:[email protected]] > > > Sent: den 18 juli 2014 14:50 > > > To: Hans Nordebäck; Hans Feldt; Praveen Malviya > > > Cc: [email protected] > > > Subject: RE: [PATCH 1 of 1] AMF: support immediate effect when > > > changing comp-type attributes V2 [#819] > > > > > > 1. Is changing saAmfCtDefCallbackTimeout, scope of this ticket ? > > > The other > > > attributes remain untouched. > > > 2. Ideally, if saAmfCompCSISetCallbackTimeout is set, changing > > > saAmfCtDefCallbackTimeout should not be affecting > > > saAmfCompCSISetCallbackTimeout. So is true for other Timeouts attributes. > > > > > > Thanks > > > -Nagu > > > > > > > > > > -----Original Message----- > > > > From: Hans Nordeback [mailto:[email protected]] > > > > Sent: 15 July 2014 18:04 > > > > To: [email protected]; Praveen Malviya; Nagendra Kumar > > > > Cc: [email protected] > > > > Subject: [PATCH 1 of 1] AMF: support immediate effect when > > > > changing > > > > comp- type attributes V2 [#819] > > > > > > > > osaf/libs/common/amf/include/amf_defs.h | 6 + > > > > osaf/services/saf/amf/amfd/comptype.cc | 61 > +++++++++++++++++- > > > > osaf/services/saf/amf/amfnd/compdb.cc | 85 > > > > +++++++++++++++++++++++++ > > > > osaf/services/saf/amf/amfnd/di.cc | 3 + > > > > osaf/services/saf/amf/amfnd/hcdb.cc | 4 +- > > > > osaf/services/saf/amf/amfnd/include/avnd_comp.h | 14 ++++ > > > > 6 files changed, 169 insertions(+), 4 deletions(-) > > > > > > > > > > > > diff --git a/osaf/libs/common/amf/include/amf_defs.h > > > > b/osaf/libs/common/amf/include/amf_defs.h > > > > --- a/osaf/libs/common/amf/include/amf_defs.h > > > > +++ b/osaf/libs/common/amf/include/amf_defs.h > > > > @@ -247,6 +247,12 @@ typedef enum > > > > saAmfCompType_ID, > > > > } AVSV_AMF_COMP_ATTR_ID; > > > > > > > > +/* Attribute ID enum for the saAmfCompType class */ typedef enum { > > > > + saAmfCtDefCallbackTimeout_ID = 1 } > AVSV_AMF_COMPTYPE_ATTR_ID; > > > > + > > > > /* Attribute ID enum for the SaAmfHealthcheck class */ typedef > > > > enum { diff --git a/osaf/services/saf/amf/amfd/comptype.cc > > > > b/osaf/services/saf/amf/amfd/comptype.cc > > > > --- a/osaf/services/saf/amf/amfd/comptype.cc > > > > +++ b/osaf/services/saf/amf/amfd/comptype.cc > > > > @@ -15,7 +15,9 @@ > > > > * Ericsson > > > > * > > > > */ > > > > - > > > > +#include <set> > > > > +#include <string.h> > > > > +#include "node.h" > > > > #include <saImmOm.h> > > > > #include <immutil.h> > > > > #include <logtrace.h> > > > > @@ -396,6 +398,61 @@ done1: > > > > return rc; > > > > } > > > > > > > > +static void ccb_apply_modify_hdlr(const CcbUtilOperationData_t > > > > +*opdata) { > > > > + const SaImmAttrModificationT_2 *attr_mod; > > > > + int i; > > > > + const AVD_COMP_TYPE *comp_type; > > > > + SaNameT comp_type_name; > > > > + > > > > + TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, opdata- > > > > >objectName.value); > > > > + > > > > + // input example: opdata.objectName.value, > > > > safVersion=1,safCompType=AmfDemo1 > > > > + comp_type_name = opdata->objectName; > > > > + > > > > + if ((comp_type = comptype_db- > > > > >find(Amf::to_string(&comp_type_name))) == 0) { > > > > + LOG_ER("Internal error: %s not found", > > > > comp_type_name.value); > > > > + return; > > > > + } > > > > + > > > > + // Create a set of nodes where components "may" be using the > > > > +given > > > > comp_type attributes. > > > > + // A msg will be sent to the related node regarding this change. > > > > +If a > > > > component has an > > > > + // comp_type attribute that overrides this comp_type attribute > > > > +it will be > > > > handled by the amfnd. > > > > + std::set<AVD_AVND*, NodeNameCompare> node_set; > > > > + > > > > + AVD_COMP *comp = comp_type->list_of_comp; > > > > + while (comp != NULL) { > > > > + node_set.insert(comp->su->su_on_node); > > > > + TRACE("comp name %s on node %s", comp- > > > > >comp_info.name.value, comp->su->su_on_node->name.value); > > > > + comp = comp->comp_type_list_comp_next; > > > > + } > > > > + > > > > + std::set<AVD_AVND*>::iterator it; > > > > + for (it = node_set.begin(); it != node_set.end(); ++it) { > > > > + i = 0; > > > > + while ((attr_mod = opdata->param.modify.attrMods[i++]) > > > > != > > > > NULL) { > > > > + AVSV_PARAM_INFO param; > > > > + const SaImmAttrValuesT_2 *attribute = &attr_mod- > > > > >modAttr; > > > > + SaTimeT *param_val = (SaTimeT *)attribute- > > > > >attrValues[0]; > > > > + > > > > + memset(¶m, 0, sizeof(param)); > > > > + param.class_id = AVSV_SA_AMF_COMP_TYPE; > > > > + param.act = AVSV_OBJ_OPR_MOD; > > > > + param.name = opdata->objectName; > > > > + param.value_len = sizeof(*param_val); > > > > + memcpy(param.value, param_val, param.value_len); > > > > + > > > > + if (!strcmp(attribute->attrName, > > > > "saAmfCtDefCallbackTimeout")) { > > > > + TRACE("saAmfCtDefCallbackTimeout to > > > > '%llu' > > > > for compType '%s' on node '%s'", *param_val, > > > > + opdata->objectName.value, (*it)- > > > > >name.value); > > > > + param.attr_id = > > > > saAmfCtDefCallbackTimeout_ID; > > > > + avd_snd_op_req_msg(avd_cb, *it, ¶m); > > > > + } else > > > > + LOG_WA("Unexpected attribute name: %s", > > > > attribute->attrName); > > > > + } > > > > + } > > > > +} > > > > + > > > > static void comptype_ccb_apply_cb(CcbUtilOperationData_t *opdata) { > > > > AVD_COMP_TYPE *comp_type; > > > > @@ -413,7 +470,7 @@ static void comptype_ccb_apply_cb(CcbUti > > > > comptype_delete(static_cast<AVD_COMP_TYPE*>(opdata- > > > > >userData)); > > > > break; > > > > case CCBUTIL_MODIFY: > > > > - // values not used, no need to reinitialize type > > > > + ccb_apply_modify_hdlr(opdata); > > > > break; > > > > default: > > > > osafassert(0); > > > > 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 > > > > @@ -888,6 +888,86 @@ done: > > > > return rc; > > > > } > > > > > > > > +uint32_t avnd_comptype_oper_req(AVND_CB *cb, AVSV_PARAM_INFO > > > > *param) > > > > +{ > > > > + uint32_t rc = NCSCC_RC_FAILURE; > > > > + > > > > + AVND_COMP * comp; > > > > + const char* comp_type_name; > > > > + SaTimeT saAmfCtDefCallbackTimeout = 0; > > > > + > > > > + TRACE_ENTER2("Op %u, %s", param->act, param->name.value); > > > > + > > > > + switch (param->act) { > > > > + case AVSV_OBJ_OPR_MOD: > > > > + { > > > > + osafassert(sizeof(SaTimeT) == param->value_len); > > > > + > > > > + // 1. find component from componentType, > > > > + // input example, param->name.value = > > > > safVersion=1,safCompType=AmfDemo1 > > > > + comp_type_name = (char *) param->name.value; > > > > + TRACE("comp_type_name: %s", comp_type_name); > > > > + osafassert(comp_type_name); > > > > + // 2. search each component for a matching compType > > > > + > > > > + comp = (AVND_COMP *) ncs_patricia_tree_getnext(&cb- > > > > >compdb, (uint8_t *) 0); > > > > + while (comp != 0) { > > > > + if (strncmp((const char*) comp- > > > > >saAmfCompType.value, comp_type_name, comp- > > >saAmfCompType.length) > > > > == 0) { > > > > + // 3. comptype found, check if > > > > component uses > > > > this comptype attribute value or if > > > > + // component has specialized this > > > > attribute > > > > value. > > > > + TRACE("comp name: %s , comp_type: %s", > > > > comp->name.value, comp->saAmfCompType.value); > > > > + > > > > + switch (param->attr_id) { > > > > + case saAmfCtDefCallbackTimeout_ID: > > > > + saAmfCtDefCallbackTimeout = > > > > *((SaTimeT *) param->value); > > > > + if (comp- > > > > >use_comptype_attr.test(PxiedInstCallbackTimeout)) { > > > > + comp- > > > > >pxied_inst_cbk_timeout = saAmfCtDefCallbackTimeout; > > > > + TRACE("comp- > > > > >pxied_inst_cbk_timeout modified to '%llu'", > > > > >comp->pxied_inst_cbk_timeout); > > > > + } > > > > + if (comp- > > > > >use_comptype_attr.test(TerminateCallbackTimeout)) { > > > > + comp->term_cbk_timeout = > > > > saAmfCtDefCallbackTimeout; > > > > + TRACE("comp- > > > > >term_cbk_timeout modified to '%llu'", comp->term_cbk_timeout); > > > > + } > > > > + if (comp- > > > > >use_comptype_attr.test(PxiedCleanupCallbackTimeout)) { > > > > + comp- > > > > >pxied_clean_cbk_timeout = saAmfCtDefCallbackTimeout; > > > > + TRACE("comp- > > > > >pxied_clean_cbk_timeout modified to '%llu'", comp- > > > > >pxied_clean_cbk_timeout); > > > > + } > > > > + if (comp- > > > > >use_comptype_attr.test(CsiSetCallbackTimeout)) { > > > > + > > > > comp->csi_set_cbk_timeout = > > > > saAmfCtDefCallbackTimeout; > > > > + TRACE("comp- > > > > >csi_set_cbk_timeout modified to '%llu'", > > > > >comp->csi_set_cbk_timeout); > > > > > > > > + } > > > > + if (comp- > > > > >use_comptype_attr.test(CsiRemoveCallbackTimeout)) { > > > > + > > > > comp->csi_rmv_cbk_timeout > > > > = saAmfCtDefCallbackTimeout; > > > > + TRACE("comp- > > > > >csi_rmv_cbk_timeout modified to '%llu'", > > > > >comp->csi_rmv_cbk_timeout); > > > > > > > > + } > > > > + break; > > > > + default: > > > > + LOG_WA("Unexpected attribute id: > > > > %d", param->attr_id); > > > > + } > > > > + } > > > > + comp = (AVND_COMP *) > > > > ncs_patricia_tree_getnext(&cb->compdb, (uint8_t *) & comp->name); > > > > + } > > > > + } > > > > + case AVSV_OBJ_OPR_DEL: > > > > + { > > > > + // Do nothing > > > > + break; > > > > + } > > > > + default: > > > > + LOG_NO("%s: Unsupported action %u", __FUNCTION__, > > > > param->act); > > > > + goto done; > > > > + } > > > > + > > > > + rc = NCSCC_RC_SUCCESS; > > > > + > > > > +done: > > > > + rc = NCSCC_RC_SUCCESS; > > > > + > > > > + TRACE_LEAVE(); > > > > + > > > > + return rc; > > > > +} > > > > + > > > > static void avnd_comptype_delete(amf_comp_type_t *compt) { > > > > int arg_counter; > > > > @@ -1270,6 +1350,7 @@ static void init_clc_cli_attributes(AVND > > > > attributes, 0, &cmd->timeout) != SA_AIS_OK) { > > > > cmd->timeout = comptype->saAmfCtDefClcCliTimeout; > > > > comp->pxied_inst_cbk_timeout = comptype- > > > > >saAmfCtDefCallbackTimeout; > > > > + comp->use_comptype_attr.set(PxiedInstCallbackTimeout); > > > > } else { > > > > comp->pxied_inst_cbk_timeout = cmd->timeout; > > > > } > > > > @@ -1286,6 +1367,7 @@ static void init_clc_cli_attributes(AVND > > > > if (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp)) { > > > > cmd->timeout = comptype- > > > > >saAmfCtDefCallbackTimeout; > > > > comp->term_cbk_timeout = cmd->timeout; > > > > + comp- > > > > >use_comptype_attr.set(TerminateCallbackTimeout); > > > > } > > > > else > > > > cmd->timeout = > > > > comptype->saAmfCtDefClcCliTimeout; > > > > @@ -1302,6 +1384,7 @@ static void init_clc_cli_attributes(AVND > > > > attributes, 0, &cmd->timeout) != SA_AIS_OK) { > > > > cmd->timeout = comptype->saAmfCtDefClcCliTimeout; > > > > comp->pxied_clean_cbk_timeout = comptype- > > > > >saAmfCtDefCallbackTimeout; > > > > + > > > > comp->use_comptype_attr.set(PxiedCleanupCallbackTimeout); > > > > } else { > > > > comp->pxied_clean_cbk_timeout = cmd->timeout; > > > > } > > > > @@ -1412,10 +1495,12 @@ static int comp_init(AVND_COMP *comp, co > > > > if > > > > > > > > > > (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompCSISetCallbackTi > > > > meout"), attributes, > > > > 0, &comp->csi_set_cbk_timeout) != SA_AIS_OK) > > > > comp->csi_set_cbk_timeout = comptype- > > > > >saAmfCtDefCallbackTimeout; > > > > + comp->use_comptype_attr.set(CsiSetCallbackTimeout); > > > > > > > > if > > > > > > > > > > (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompCSIRmvCallbackT > > > > imeout"), attributes, > > > > 0, &comp->csi_rmv_cbk_timeout) != SA_AIS_OK) > > > > comp->csi_rmv_cbk_timeout = comptype- > > > > >saAmfCtDefCallbackTimeout; > > > > + comp->use_comptype_attr.set(CsiRemoveCallbackTimeout); > > > > > > > > if > > > > > > > > > > (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompQuiescingComple > > > > teTimeout"), attributes, > > > > 0, &comp->quies_complete_cbk_timeout) != > > > > SA_AIS_OK) > > > > diff --git a/osaf/services/saf/amf/amfnd/di.cc > > > > b/osaf/services/saf/amf/amfnd/di.cc > > > > --- a/osaf/services/saf/amf/amfnd/di.cc > > > > +++ b/osaf/services/saf/amf/amfnd/di.cc > > > > @@ -225,6 +225,9 @@ uint32_t avnd_evt_avd_operation_request_ > > > > case AVSV_SA_AMF_COMP: > > > > rc = avnd_comp_oper_req(cb, param); > > > > break; > > > > + case AVSV_SA_AMF_COMP_TYPE: > > > > + rc = avnd_comptype_oper_req(cb, param); > > > > + break; > > > > case AVSV_SA_AMF_HEALTH_CHECK: > > > > rc = avnd_hc_oper_req(cb, param); > > > > break; > > > > diff --git a/osaf/services/saf/amf/amfnd/hcdb.cc > > > > b/osaf/services/saf/amf/amfnd/hcdb.cc > > > > --- a/osaf/services/saf/amf/amfnd/hcdb.cc > > > > +++ b/osaf/services/saf/amf/amfnd/hcdb.cc > > > > @@ -368,7 +368,7 @@ static void comp_hctype_update_compdb(AV { > > > > AVND_COMP_HC_REC *comp_hc_rec; > > > > AVND_COMP * comp; > > > > - char *comp_type_name; > > > > + const char *comp_type_name; > > > > AVSV_HLT_KEY hlt_chk; > > > > AVND_COMP_HC_REC tmp_hc_rec; > > > > > > > > @@ -385,7 +385,7 @@ static void comp_hctype_update_compdb(AV > > > > > > > > // 3. matching compType found, check that > > > > component > > > does not have > > > > a SaAmfHealthcheck rec (specialization) > > > > std::string hlt_chk_key = search_key((const > > > > char*) > > > > param->name.value, "safHealthcheckKey="); > > > > - if (hlt_chk_key.size() == 0) { > > > > + if (hlt_chk_key.empty()) { > > > > LOG_ER("%s: failed to get healthcheckKey > > > from %s", __FUNCTION__, > > > > param->name.value); > > > > return; > > > > } > > > > 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 > > > > @@ -30,6 +30,8 @@ > > > > #ifndef AVND_COMP_H > > > > #define AVND_COMP_H > > > > > > > > +#include <bitset> > > > > + > > > > struct avnd_cb_tag; > > > > struct avnd_su_si_rec; > > > > struct avnd_su_tag; > > > > @@ -279,6 +281,15 @@ typedef struct avnd_pxied_rec { > > > > > > > > typedef AVSV_COMP_INFO AVND_COMP_PARAM; > > > > > > > > +enum UsedComptypeAttrs { > > > > + PxiedInstCallbackTimeout, > > > > + PxiedCleanupCallbackTimeout, > > > > + TerminateCallbackTimeout, > > > > + CsiSetCallbackTimeout, > > > > + CsiRemoveCallbackTimeout, > > > > + NumAttrs > > > > +}; > > > > + > > > > typedef struct avnd_comp_tag { > > > > NCS_PATRICIA_NODE tree_node; /* comp tree node (key is > > > > comp name) */ > > > > NCS_DB_LINK_LIST_NODE su_dll_node; /* su dll node (key is > > > > inst-level) > > > > */ > > > > @@ -362,6 +373,8 @@ typedef struct avnd_comp_tag { > > > > bool pending_delete; /* Used in deleting component when su is in > > > > instantiated state.*/ > > > > > > > > + std::bitset<NumAttrs> use_comptype_attr; > > > > + > > > > } AVND_COMP; > > > > > > > > #define AVND_COMP_NULL ((AVND_COMP *)0) @@ -874,6 +887,7 @@ > > > extern > > > > AVND_COMP_HC_REC *avnd_mbcsv_comp extern void > > > > avnd_mbcsv_comp_hc_rec_del(struct avnd_cb_tag *cb, AVND_COMP > > > *comp, > > > > AVND_COMP_HC_REC *rec); > > > > > > > > extern uint32_t avnd_comp_oper_req(struct avnd_cb_tag *cb, > > > > AVSV_PARAM_INFO *param); > > > > +extern uint32_t avnd_comptype_oper_req(struct avnd_cb_tag *cb, > > > > AVSV_PARAM_INFO *param); > > > > extern unsigned int avnd_comp_config_get_su(struct avnd_su_tag > > > > *su); extern int avnd_comp_config_reinit(AVND_COMP *comp); extern > > > > void avnd_comp_delete(AVND_COMP *comp); > > > > ---------------------------------------------------------------------- > > -------- Want fast and easy access to all the code in your enterprise? > > Index and search up to 200,000 lines of code with a free copy of Black > > Duck Code Sight - the same software that powers the world's largest > > code search on Ohloh, the Black Duck Open Hub! Try it now. > > http://p.sf.net/sfu/bds > > _______________________________________________ > > Opensaf-devel mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > > ------------------------------------------------------------------------------ > Infragistics Professional > Build stunning WinForms apps today! > Reboot your WinForms applications with our WinForms controls. > Build a bridge from your legacy apps to the future. > http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clk > trk > _______________________________________________ > Opensaf-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
