Ack,
Thanks,
Hans

> -----Original Message-----
> From: Alex Jones [mailto:ajo...@genband.com]
> Sent: den 12 maj 2014 21:06
> To: Hans Feldt; nagendr...@oracle.com; praveen.malv...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 1 of 1] amfd: allow change to saAmfSGNumPrefActiveSUs for N+M 
> SG while UNLOCKED [#871]
> 
>  osaf/services/saf/amf/amfd/sg.cc |  39 
> +++++++++++++++++++++++++++++++++++++++
>  1 files changed, 39 insertions(+), 0 deletions(-)
> 
> 
> ccb_completed_modify_hdlr: Attribute 'saAmfSGNumPrefActiveSUs' cannot be 
> modified when SG is unlocked
> 
> OpenSAF disallows changing saAmfSGNumPrefActiveSUs while the SG is UNLOCKED.
> This prevents in-service capacity upgrade for N+M models, which is not
> desirable.
> 
> This change allows saAmfSGNumPrefActiveSUs to be increased for N+M models, as
> long as there are instantiated spare SUs equal to the amount of the increase.
> These instantiated spare SUs will then be assigned ACTIVE, and their
> corresponding CSIs will be assigned to the STANDBY.
> 
> 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
> @@ -675,6 +675,33 @@ static SaAisErrorT ccb_completed_modify_
>                                       rc = SA_AIS_ERR_BAD_OPERATION;
>                                       goto done;
>                               }
> +                     } else if (!strcmp(attribute->attrName, 
> "saAmfSGNumPrefActiveSUs")) {
> +                             uint32_t pref_active_su = 
> *static_cast<SaUint32T *>(value);
> +
> +                             if (sg->sg_redundancy_model != 
> SA_AMF_NPM_REDUNDANCY_MODEL) {
> +                                     report_ccb_validation_error(opdata,
> +                                             "%s: saAmfSGNumPrefActiveSUs 
> for non-N+M model cannot"
> +                                             " be modified when SG is 
> unlocked", __FUNCTION__);
> +                                     rc = SA_AIS_ERR_BAD_OPERATION;
> +                                     goto done;
> +                             } else if (pref_active_su < 
> sg->saAmfSGNumPrefActiveSUs) {
> +                                     report_ccb_validation_error(opdata,
> +                                             "%s: Cannot decrease 
> saAmfSGNumPrefActiveSUs while SG"
> +                                             " is unlocked ", __FUNCTION__);
> +                                     rc = SA_AIS_ERR_BAD_OPERATION;
> +                                     goto done;
> +                             } else {
> +                                     uint32_t increase_amount = 
> pref_active_su - sg->saAmfSGNumPrefActiveSUs;
> +
> +                                     if 
> (sg->saAmfSGNumCurrInstantiatedSpareSUs < increase_amount) {
> +                                             
> report_ccb_validation_error(opdata,
> +                                                     "%s: Not enough 
> instantiated spare SUs to do"
> +                                                     " in-service increase 
> of saAmfSGNumPrefActiveSUs",
> +                                                     __FUNCTION__);
> +                                             rc = SA_AIS_ERR_BAD_OPERATION;
> +                                             goto done;
> +                                     }
> +                             }
>                       } else {
>                               report_ccb_validation_error(opdata,
>                                       "%s: Attribute '%s' cannot be modified 
> when SG is unlocked",
> @@ -1010,6 +1037,18 @@ static void ccb_apply_modify_hdlr(CcbUti
>                                       sg->name.value, sg->saAmfSGAutoRepair);
>                       } else if (!strcmp(attribute->attrName, 
> "saAmfSGSuHostNodeGroup")) {
>                               sg->saAmfSGSuHostNodeGroup = *((SaNameT 
> *)value);
> +                     } else if (!strcmp(attribute->attrName, 
> "saAmfSGNumPrefActiveSUs")) {
> +                             if (value_is_deleted)
> +                                     sg->saAmfSGNumPrefActiveSUs = 
> sg->saAmfSGNumPrefActiveSUs;
> +                             else
> +                                     sg->saAmfSGNumPrefActiveSUs = 
> *static_cast<SaUint32T *>(value);
> +
> +                             if (avd_cb->avail_state_avd == 
> SA_AMF_HA_ACTIVE)  {
> +                                     /* find an instantiated spare SU */
> +                                     if (sg->realign(avd_cb, sg) != 
> NCSCC_RC_SUCCESS) {
> +                                             osafassert(0);
> +                                     }
> +                             }
>                       } else {
>                               osafassert(0);
>                       }


------------------------------------------------------------------------------
"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