Hi Hans, yes, I'll move the variables before pushing./Regards HansN
On 08/12/14 14:40, Hans Feldt wrote:
> Ack with minor inline comment
> /HansF
>
>> -----Original Message-----
>> From: Hans Nordebäck
>> Sent: den 12 augusti 2014 11:18
>> To: Hans Feldt; nagendr...@oracle.com; praveen.malv...@oracle.com
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: [PATCH 1 of 1] AMF: support immediate effect when changing 
>> comp-type attributes V4 [#819]
>>
>>   osaf/libs/common/amf/include/amf_defs.h         |   3 ++-
>>   osaf/services/saf/amf/amfd/comptype.cc          |  22 
>> +++++++++++++++++-----
>>   osaf/services/saf/amf/amfnd/compdb.cc           |  18 ++++++++++++++----
>>   osaf/services/saf/amf/amfnd/include/avnd_comp.h |   1 +
>>   4 files changed, 34 insertions(+), 10 deletions(-)
>>
>>
>> Added support for saAmfCtDefRecoveryOnError
>>
>> 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
>> @@ -251,7 +251,8 @@ typedef enum
>>   typedef enum
>>   {
>>      saAmfCtDefCallbackTimeout_ID = 1,
>> -   saAmfCtDefClcCliTimeout_ID = 2
>> +   saAmfCtDefClcCliTimeout_ID = 2,
>> +   saAmfCtDefRecoveryOnError_ID = 3
>>   } AVSV_AMF_COMPTYPE_ATTR_ID;
>>
>>   /* Attribute ID enum for the SaAmfHealthcheck class */
>> 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
>> @@ -432,26 +432,38 @@ static void ccb_apply_modify_hdlr(const
>>              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(&param, 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);
>> +                    const SaImmAttrValuesT_2 *attribute = 
>> &attr_mod->modAttr;
>>
>>                      if (!strcmp(attribute->attrName, 
>> "saAmfCtDefCallbackTimeout")) {
>> +                            SaTimeT *param_val = (SaTimeT 
>> *)attribute->attrValues[0];
>>                              TRACE("saAmfCtDefCallbackTimeout to '%llu' for 
>> compType '%s' on node '%s'", *param_val,
>>                                      opdata->objectName.value, 
>> (*it)->name.value);
>> +
>> +                            param.value_len = sizeof(*param_val);
>> +                            memcpy(param.value, param_val, param.value_len);
>>                              param.attr_id = saAmfCtDefCallbackTimeout_ID;
>>                              avd_snd_op_req_msg(avd_cb, *it, &param);
>>                      } else if (!strcmp(attribute->attrName, 
>> "saAmfCtDefClcCliTimeout")) {
>> +                            SaTimeT *param_val = (SaTimeT 
>> *)attribute->attrValues[0];
>>                              TRACE("saAmfCtDefClcCliTimeout to '%llu' for 
>> compType '%s' on node '%s'", *param_val,
>>                                      opdata->objectName.value, 
>> (*it)->name.value);
>> +
>> +                            param.value_len = sizeof(*param_val);
>> +                            memcpy(param.value, param_val, param.value_len);
>>                              param.attr_id = saAmfCtDefClcCliTimeout_ID;
>>                              avd_snd_op_req_msg(avd_cb, *it, &param);
>> +                    } else if (!strcmp(attribute->attrName, 
>> "saAmfCtDefRecoveryOnError")) {
>> +                            SaAmfRecommendedRecoveryT *param_val = 
>> (SaAmfRecommendedRecoveryT *)attribute-
>>> attrValues[0];
>> +                            TRACE("saAmfCtDefRecoveryOnError to '%u' for 
>> compType '%s' on node '%s'", *param_val,
>> +                                    opdata->objectName.value, 
>> (*it)->name.value);
>> +                            param.value_len = sizeof(*param_val);
>> +                            memcpy(param.value, param_val, param.value_len);
>> +                            param.attr_id = saAmfCtDefRecoveryOnError_ID;
>> +                            avd_snd_op_req_msg(avd_cb, *it, &param);
>>                      } else
>>                              LOG_WA("Unexpected attribute name: %s", 
>> attribute->attrName);
>>              }
>> 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
>> @@ -896,14 +896,13 @@ uint32_t avnd_comptype_oper_req(AVND_CB
>>      const char* comp_type_name;
>>      SaTimeT saAmfCtDefCallbackTimeout = 0;
>>      SaTimeT saAmfCtDefClcCliTimeout = 0;
>> +    SaAmfRecommendedRecoveryT saAmfCtDefRecoveryOnError;
> [Hans] can the above be moved to where it is used instead?
>>      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;
>> @@ -921,6 +920,7 @@ uint32_t avnd_comptype_oper_req(AVND_CB
>>                              switch (param->attr_id) {
>>                              case saAmfCtDefCallbackTimeout_ID:
>>                                      saAmfCtDefCallbackTimeout = *((SaTimeT 
>> *) param->value);
>> +                                    osafassert(sizeof(SaTimeT) == 
>> param->value_len);
>>                                      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);
>> @@ -945,6 +945,7 @@ uint32_t avnd_comptype_oper_req(AVND_CB
>>                              case saAmfCtDefClcCliTimeout_ID:
>>                                      AVND_COMP_CLC_CMD_PARAM *cmd;
>>                                      saAmfCtDefClcCliTimeout = *((SaTimeT *) 
>> param->value);
>> +                                    osafassert(sizeof(SaTimeT) == 
>> param->value_len);
>>                                      if 
>> (comp->use_comptype_attr.test(CompInstantiateTimeout)) {
>>
>>                                              cmd = 
>> &comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_INSTANTIATE - 1];
>>                                              cmd->timeout = 
>> saAmfCtDefClcCliTimeout;
>> @@ -971,6 +972,14 @@ uint32_t avnd_comptype_oper_req(AVND_CB
>>                                              TRACE("cmd->timeout (AM Stop) 
>> modified to '%llu'", cmd->timeout);
>>
>>                                      }
>>                                      break;
>> +                            case saAmfCtDefRecoveryOnError_ID:
>> +                                    saAmfCtDefRecoveryOnError = 
>> *((SaAmfRecommendedRecoveryT *) param->value);
>> +                                    
>> osafassert(sizeof(SaAmfRecommendedRecoveryT) == param->value_len);
>> +                                    if 
>> (comp->use_comptype_attr.test(DefRecoveryOnError)) {
>> +                                            comp->err_info.def_rec = 
>> saAmfCtDefRecoveryOnError;
>> +                                            TRACE("comp->err_info.def_rec 
>> modified to '%u'", comp->err_info.def_rec);
>>
>> +                                    }
>> +                                    break;
>>                              default:
>>                                      LOG_WA("Unexpected attribute id: %d", 
>> param->attr_id);
>>                              }
>> @@ -1541,9 +1550,10 @@ static int comp_init(AVND_COMP *comp, co
>>                          0, &comp->quies_complete_cbk_timeout) != SA_AIS_OK)
>>              comp->quies_complete_cbk_timeout = 
>> comptype->saAmfCompQuiescingCompleteTimeout;
>>
>> -    if 
>> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompRecoveryOnError"), 
>> attributes, 0, &comp->err_info.def_rec)
>> != SA_AIS_OK)
>> +    if 
>> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompRecoveryOnError"), 
>> attributes, 0, &comp->err_info.def_rec)
>> != SA_AIS_OK) {
>>              comp->err_info.def_rec = comptype->saAmfCtDefRecoveryOnError;
>> -    else {
>> +            comp->use_comptype_attr.set(DefRecoveryOnError);
>> +    } else {
>>              if ((SaAmfRecommendedRecoveryT)comp->err_info.def_rec == 
>> SA_AMF_NO_RECOMMENDATION) {
>>                      comp->err_info.def_rec = SA_AMF_COMPONENT_FAILOVER;
>>                      LOG_NO("COMPONENT_FAILOVER(%u) used instead of 
>> NO_RECOMMENDATION(%u) for '%s'",
>> 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
>> @@ -292,6 +292,7 @@ enum UsedComptypeAttrs {
>>      CompCleanupTimeout,
>>      CompAmStartTimeout,
>>      CompAmStopTimeout,
>> +        DefRecoveryOnError,
>>      NumAttrs
>>   };
>>


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to