Hi Nagu, I'll check this and the other patches. I guess I have missed 
these use cases. /Thanks HansN
On 09/04/14 12:41, Nagendra Kumar wrote:
> Hi Hans N,
>
> There are some white spaces in the patch, please check below(Search with 
> Nagu).
>
> Tested following scenarios:
> 1. Configuring saAmfCompNumMaxInstantiateWithoutDelay and then changing 
> saAmfNumMaxInstantiateWithoutDelay. Of course, it didn't result in changing 
> the value.
> But when I reset/delete the value of saAmfCompNumMaxInstantiateWithoutDelay 
> and then change saAmfNumMaxInstantiateWithoutDelay, 
> saAmfCompNumMaxInstantiateWithoutDelay is not changed, which is not expected.
>
> 2. Not configuring saAmfCompNumMaxInstantiateWithoutDelay and then changing 
> saAmfNumMaxInstantiateWithoutDelay. The changed value took effect.
> But when I change the value of saAmfCompNumMaxInstantiateWithoutDelay(that 
> means now I have configured it) and then change 
> saAmfNumMaxInstantiateWithoutDelay, this changes the value of 
> saAmfCompNumMaxInstantiateWithoutDelay, which is not expected.
>
> I am not sure if this problem exists in older patch series, but this patch 
> needs correction.
>
> Thanks
> -Nagu
>> -----Original Message-----
>> From: Hans Nordeback [mailto:hans.nordeb...@ericsson.com]
>> Sent: 26 August 2014 18:11
>> To: Nagendra Kumar; hans.fe...@ericsson.com
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: [PATCH 1 of 1] AMF: support immediate effect when changing
>> SaAmfCompGlobalAttributes [#819]
>>
>>   osaf/libs/common/amf/include/amf_defs.h         |   9 +++++
>>   osaf/services/saf/amf/amfd/comptype.cc          |  12 +++++++
>>   osaf/services/saf/amf/amfnd/compdb.cc           |  41
>> ++++++++++++++++++++++++-
>>   osaf/services/saf/amf/amfnd/di.cc               |   3 +
>>   osaf/services/saf/amf/amfnd/include/avnd_comp.h |   2 +
>>   5 files changed, 66 insertions(+), 1 deletions(-)
>>
>>
>> Added support for saAmfNumMaxInstantiateWithoutDelay
>>
>> 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
>> @@ -272,6 +272,15 @@ typedef enum
>>      saAmfHctDefMaxDuration_ID = 2,
>>   } AVSV_AMF_HEALTHCHECK_TYPE_ATTR_ID;
>>
>> +/* Attribute ID enum for the SaAmfCompGlobalAttributes class */
>> +typedef enum
>> +{
>> +   saAmfNumMaxInstantiateWithoutDelay_ID = 1,
>> +   saAmfNumMaxInstantiateWithDelay_ID = 2,
>> +   saAmfNumMaxAmStartAttempts_ID = 3,
>> +   saAmfNumMaxAmStopAttempts_ID = 4,
>> +   saAmfDelayBetweenInstantiateAttempts_ID = 5   [Nagu]: Here.
>> +} AVSV_AMF_COMP_GLOBAL_ATTRIBUTES_ATTR_ID;
>>
>>   #define AVSV_COMMON_SUB_ID_DEFAULT_VAL 1
>>   #define SA_AMF_PRESENCE_ORPHANED
>> (SA_AMF_PRESENCE_TERMINATION_FAILED+1)
>> 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
>> @@ -748,12 +748,23 @@ static void avd_compglobalattrs_ccb_appl
>>      switch (opdata->operationType) {
>>      case CCBUTIL_MODIFY:
>>              while ((attrMod = opdata->param.modify.attrMods[i++]) !=
>> NULL) {
>> +                    AVSV_PARAM_INFO param;
>> +                    memset(&param, 0, sizeof(param));
>> +                    param.class_id =
>> AVSV_SA_AMF_COMP_GLOBAL_ATTR;
>> +                    param.act = AVSV_OBJ_OPR_MOD;
>> +                    param.name = opdata->objectName;
>> +
>>                      if (!strcmp("saAmfNumMaxInstantiateWithoutDelay",
>> attrMod->modAttr.attrName)) {
>>
>>      TRACE("saAmfNumMaxInstantiateWithoutDelay modified from '%u' to
>> '%u'",
>>
>>      avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay,
>>                                              *((SaUint32T *)attrMod-
>>> modAttr.attrValues[0]));
>>      avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay =
>>                                      *((SaUint32T *)attrMod-
>>> modAttr.attrValues[0]);
>> +
>> +                            param.value_len =
>> sizeof(avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay);
>> +                            memcpy(param.value,
>> &avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay,
>> param.value_len);
>> +                            param.attr_id =
>> saAmfNumMaxInstantiateWithoutDelay_ID;
>> +                            avd_snd_op_req_msg(avd_cb, NULL,
>> &param);
>>                      }
>>                      if (!strcmp("saAmfNumMaxInstantiateWithDelay",
>> attrMod->modAttr.attrName)) {
>>                              TRACE("saAmfNumMaxInstantiateWithDelay
>> modified from '%u' to '%u'",
>> @@ -789,6 +800,7 @@ static void avd_compglobalattrs_ccb_appl
>>              osafassert(0);
>>              break;
>>      }
>> +    TRACE_LEAVE();
>>   }
>>
>>   static SaAisErrorT
>> avd_compglobalattrs_ccb_completed_cb(CcbUtilOperationData_t *opdata)
>> 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
>> @@ -889,6 +889,43 @@ done:
>>      return rc;
>>   }
>>
>> +uint32_t avnd_globalattr_oper_req(AVND_CB *cb, AVSV_PARAM_INFO
>> *param)
>> +{
>> +    uint32_t rc = NCSCC_RC_FAILURE;
>> +    TRACE_ENTER();
>> +
>> +    switch (param->act) {
>> +    case AVSV_OBJ_OPR_MOD: {
>> +                    AVND_COMP *comp = (AVND_COMP *)
>> ncs_patricia_tree_getnext(&cb->compdb, (uint8_t *) 0);
>> +                    while (comp != 0) {
>> +                            switch (param->attr_id) {
>> +                            case
>> saAmfNumMaxInstantiateWithoutDelay_ID: {
>> +                                    SaUint32T
>> saAmfNumMaxInstantiateWithoutDelay = *((SaUint32T *) param->value);;
>> +                                    if (comp->use_comptype_attr-
>>> test(GlobalNumMaxInstantiateWithoutDelay)) {
>> +                                            comp-
>>> clc_info.inst_retry_max = saAmfNumMaxInstantiateWithoutDelay;
>> +                                            TRACE("comp-
>>> clc_info.inst_retry_max modified to '%u' for %s",
>> +                                                    comp-
>>> clc_info.inst_retry_max, comp->name.value);
>> +                                    }
>> +                                    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;
>> +            }
>> +
>> +    }
>> +
>> +    TRACE_LEAVE();
>> +    rc = NCSCC_RC_SUCCESS;
>> +    return rc;
>> +}
>> +
>>   uint32_t avnd_comptype_oper_req(AVND_CB *cb, AVSV_PARAM_INFO
>> *param)
>>   {
>>      uint32_t rc = NCSCC_RC_FAILURE;
>> @@ -1564,8 +1601,10 @@ static int comp_init(AVND_COMP *comp, co
>>      }
>>
>>      if
>> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompNumMaxInstanti
>> ateWithoutDelay"), attributes,
>> -                        0, &comp->clc_info.inst_retry_max) != SA_AIS_OK)
> [Nagu]> Here +                            0, &comp->clc_info.inst_retry_max) 
> != SA_AIS_OK) {
>>              comp->clc_info.inst_retry_max =
>> comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay;
>> +            comp->use_comptype_attr-
>>> set(GlobalNumMaxInstantiateWithoutDelay);
>> +    }
>>
>>   #if 0
>>      //  TODO
>> 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_GLOBAL_ATTR:
>> +            rc = avnd_globalattr_oper_req(cb, param);
>> +            break;
>>      case AVSV_SA_AMF_COMP_TYPE:
>>              rc = avnd_comptype_oper_req(cb, param);
>>              break;
>> 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
>> @@ -296,6 +296,7 @@ enum UsedComptypeAttrs {
>>      DefDisableRestart,
>>      DefQuiescingCompleteTimeout,
>>           CompInstantiationLevel,
>> +        GlobalNumMaxInstantiateWithoutDelay,
>>      NumAttrs
>>   };
>>
>> @@ -899,6 +900,7 @@ extern void avnd_mbcsv_comp_hc_rec_del(s
>>
>>   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 uint32_t avnd_globalattr_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);


------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to