Ack for the series with minor comments below:

-Most of the information of README must go in PR doc especially 
unavailability of old alarms through reader APIs after headless state is 
observed.
-I think recovery of clients must be done as early as possible after 
first controller joins. For this to achieve, recovery can be done in any 
API (all APIS have TRY_AGAIN as return code) instead of selected ones. 
May be this can be done in future if any use case arise.
-Any new API is not added in these patches, need to check if lib version 
update is required.


Thanks,
Praveen
On 01-Mar-16 1:00 PM, Minh Hon Chau wrote:
>   osaf/libs/common/ntfsv/include/ntfsv_mem.h |    7 +
>   osaf/libs/common/ntfsv/include/ntfsv_msg.h |    1 +
>   osaf/libs/common/ntfsv/ntfsv_mem.c         |  159 
> +++++++++++++++++++++++++++++
>   3 files changed, 167 insertions(+), 0 deletions(-)
>
>
> The patch contains support for cloud resilience feature
> in NTF libs common which are mostly used in Agent code
>
> diff --git a/osaf/libs/common/ntfsv/include/ntfsv_mem.h 
> b/osaf/libs/common/ntfsv/include/ntfsv_mem.h
> --- a/osaf/libs/common/ntfsv/include/ntfsv_mem.h
> +++ b/osaf/libs/common/ntfsv/include/ntfsv_mem.h
> @@ -102,6 +102,13 @@ extern "C" {
>       size_t ntfs_sanamet_length(const SaNameT* pName);
>       void ntfs_sanamet_steal(SaStringT value, size_t length, SaNameT* pName);
>       void ntfs_sanamet_alloc(SaConstStringT value, size_t length, SaNameT* 
> pName);
> +
> +     SaAisErrorT 
> ntfsv_copy_ntf_filter_header(SaNtfNotificationFilterHeaderT*, const 
> SaNtfNotificationFilterHeaderT*);
> +     SaAisErrorT ntfsv_copy_ntf_filter_alarm(SaNtfAlarmNotificationFilterT*, 
> const SaNtfAlarmNotificationFilterT*);
> +     SaAisErrorT 
> ntfsv_copy_ntf_filter_sec_alarm(SaNtfSecurityAlarmNotificationFilterT*, const 
> SaNtfSecurityAlarmNotificationFilterT*);
> +     SaAisErrorT 
> ntfsv_copy_ntf_filter_state_ch(SaNtfStateChangeNotificationFilterT*, const 
> SaNtfStateChangeNotificationFilterT*);
> +     SaAisErrorT 
> ntfsv_copy_ntf_filter_obj_cr_del(SaNtfObjectCreateDeleteNotificationFilterT*, 
> const SaNtfObjectCreateDeleteNotificationFilterT*);
> +     SaAisErrorT 
> ntfsv_copy_ntf_filter_attr_ch(SaNtfAttributeChangeNotificationFilterT*, const 
> SaNtfAttributeChangeNotificationFilterT*);
>   #ifdef  __cplusplus
>   }
>   #endif
> diff --git a/osaf/libs/common/ntfsv/include/ntfsv_msg.h 
> b/osaf/libs/common/ntfsv/include/ntfsv_msg.h
> --- a/osaf/libs/common/ntfsv/include/ntfsv_msg.h
> +++ b/osaf/libs/common/ntfsv/include/ntfsv_msg.h
> @@ -60,6 +60,7 @@ as mentioned in LOGSV PR doc Section 3.5
>
>   /* NTFSV Callback enums */
>       typedef enum {
> +             NTFSV_DUMMY_CALLBACK = 0,
>               NTFSV_NOTIFICATION_CALLBACK = 1,
>               NTFSV_DISCARDED_CALLBACK = 2,
>               NTFSV_NTFS_CBK_MAX = 3
> diff --git a/osaf/libs/common/ntfsv/ntfsv_mem.c 
> b/osaf/libs/common/ntfsv/ntfsv_mem.c
> --- a/osaf/libs/common/ntfsv/ntfsv_mem.c
> +++ b/osaf/libs/common/ntfsv/ntfsv_mem.c
> @@ -1335,3 +1335,162 @@ void ntfs_sanamet_steal(SaStringT value,
>               *((SaUint16T*)pName) += 1;
>       }
>   }
> +
> +/**
> + *  @Brief: Copy filter header from pSrc to pDes
> + */
> +SaAisErrorT ntfsv_copy_ntf_filter_header(SaNtfNotificationFilterHeaderT* 
> pDes,
> +             const SaNtfNotificationFilterHeaderT* pSrc)
> +{
> +     SaAisErrorT rc = SA_AIS_OK;
> +     int i;
> +     /* Event Types */
> +     pDes->numEventTypes = pSrc->numEventTypes;
> +     for (i = 0; i < pDes->numEventTypes; i++)
> +             pDes->eventTypes[i] = pSrc->eventTypes[i];
> +     /* notification objects */
> +     pDes->numNotificationObjects = pSrc->numNotificationObjects;
> +     for (i = 0; i < pDes->numNotificationObjects && rc == SA_AIS_OK; i++)
> +             rc = ntfsv_sanamet_copy(&pDes->notificationObjects[i],
> +                                                     
> &pSrc->notificationObjects[i]);
> +     /* notifying objects */
> +     pDes->numNotifyingObjects = pSrc->numNotifyingObjects;
> +     for (i = 0; i < pDes->numNotifyingObjects && rc == SA_AIS_OK; i++)
> +             rc = ntfsv_sanamet_copy(&pDes->notifyingObjects[i],
> +                                                     
> &pSrc->notifyingObjects[i]);
> +     /* notification class ids */
> +     pDes->numNotificationClassIds = pSrc->numNotificationClassIds;
> +     for (i = 0; i < pDes->numNotificationClassIds; i++)
> +             pDes->notificationClassIds[i] = pSrc->notificationClassIds[i];
> +
> +     return rc;
> +}
> +
> +/**
> + *  @Brief: Copy alarm notification filter
> + */
> +SaAisErrorT ntfsv_copy_ntf_filter_alarm(SaNtfAlarmNotificationFilterT* pDes,
> +             const SaNtfAlarmNotificationFilterT* pSrc)
> +{
> +     SaAisErrorT rc = SA_AIS_OK;
> +     int i;
> +     pDes->notificationFilterHandle = pSrc->notificationFilterHandle;
> +     if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader,
> +                                                                     
> &pSrc->notificationFilterHeader)) != SA_AIS_OK)
> +             goto done;
> +
> +     pDes->numPerceivedSeverities = pSrc->numPerceivedSeverities;
> +     for (i = 0; i < pDes->numPerceivedSeverities; i++)
> +             pDes->perceivedSeverities[i] = pSrc->perceivedSeverities[i];
> +
> +     pDes->numProbableCauses = pSrc->numProbableCauses;
> +     for (i = 0; i < pDes->numProbableCauses; i++)
> +             pDes->probableCauses[i] = pSrc->probableCauses[i];
> +
> +     pDes->numTrends = pSrc->numTrends;
> +     for (i = 0; i < pDes->numTrends; i++)
> +             pDes->trends[i] = pSrc->trends[i];
> +
> +done:
> +     return rc;
> +}
> +
> +/**
> + *  @Brief: Copy security alarm notification filter
> + */
> +SaAisErrorT 
> ntfsv_copy_ntf_filter_sec_alarm(SaNtfSecurityAlarmNotificationFilterT* pDes,
> +             const SaNtfSecurityAlarmNotificationFilterT* pSrc)
> +{
> +     SaAisErrorT rc = SA_AIS_OK;
> +     int i;
> +     pDes->notificationFilterHandle = pSrc->notificationFilterHandle;
> +     if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader,
> +                                                                     
> &pSrc->notificationFilterHeader)) != SA_AIS_OK)
> +             goto done;
> +
> +     pDes->numProbableCauses = pSrc->numProbableCauses;
> +     for (i = 0; i < pDes->numProbableCauses; i++)
> +             pDes->probableCauses[i] = pSrc->probableCauses[i];
> +
> +     pDes->numSecurityAlarmDetectors = pSrc->numSecurityAlarmDetectors;
> +     for (i = 0; i < pDes->numSecurityAlarmDetectors; i++)
> +             pDes->securityAlarmDetectors[i] = 
> pSrc->securityAlarmDetectors[i];
> +
> +     pDes->numServiceProviders = pSrc->numServiceProviders;
> +     for (i = 0; i < pDes->numServiceProviders; i++)
> +             pDes->serviceProviders[i] = pSrc->serviceProviders[i];
> +
> +     pDes->numServiceUsers = pSrc->numServiceUsers;
> +     for (i = 0; i < pDes->numServiceUsers; i++)
> +             pDes->serviceUsers[i] = pSrc->serviceUsers[i];
> +
> +     pDes->numSeverities = pSrc->numSeverities;
> +     for (i = 0; i < pDes->numSeverities; i++)
> +             pDes->severities[i] = pSrc->severities[i];
> +done:
> +     return rc;
> +}
> +
> +/**
> + *  @Brief: Copy state change notification filter
> + */
> +SaAisErrorT 
> ntfsv_copy_ntf_filter_state_ch(SaNtfStateChangeNotificationFilterT* pDes,
> +             const SaNtfStateChangeNotificationFilterT* pSrc)
> +{
> +     SaAisErrorT rc = SA_AIS_OK;
> +     int i;
> +     pDes->notificationFilterHandle = pSrc->notificationFilterHandle;
> +     if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader,
> +                                                                     
> &pSrc->notificationFilterHeader)) != SA_AIS_OK)
> +             goto done;
> +
> +     pDes->numSourceIndicators = pSrc->numSourceIndicators;
> +     for (i = 0; i < pDes->numSourceIndicators; i++)
> +             pDes->sourceIndicators[i] = pSrc->sourceIndicators[i];
> +
> +     pDes->numStateChanges = pSrc->numStateChanges;
> +     for (i = 0; i < pDes->numStateChanges; i++)
> +             pDes->changedStates[i] = pSrc->changedStates[i];
> +done:
> +     return rc;
> +}
> +
> +/**
> + *  @Brief: Copy object create delete notification filter
> + */
> +SaAisErrorT 
> ntfsv_copy_ntf_filter_obj_cr_del(SaNtfObjectCreateDeleteNotificationFilterT* 
> pDes,
> +             const SaNtfObjectCreateDeleteNotificationFilterT* pSrc)
> +{
> +     SaAisErrorT rc = SA_AIS_OK;
> +     int i;
> +     pDes->notificationFilterHandle = pSrc->notificationFilterHandle;
> +     if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader,
> +                                                                     
> &pSrc->notificationFilterHeader)) != SA_AIS_OK)
> +             goto done;
> +
> +     pDes->numSourceIndicators = pSrc->numSourceIndicators;
> +     for (i = 0; i < pDes->numSourceIndicators; i++)
> +             pDes->sourceIndicators[i] = pSrc->sourceIndicators[i];
> +done:
> +     return rc;
> +}
> +
> +/**
> + *  @Brief: Copy attribute change notification filter
> + */
> +SaAisErrorT 
> ntfsv_copy_ntf_filter_attr_ch(SaNtfAttributeChangeNotificationFilterT* pDes,
> +             const SaNtfAttributeChangeNotificationFilterT* pSrc)
> +{
> +     SaAisErrorT rc = SA_AIS_OK;
> +     int i;
> +     pDes->notificationFilterHandle = pSrc->notificationFilterHandle;
> +     if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader,
> +                                                                     
> &pSrc->notificationFilterHeader)) != SA_AIS_OK)
> +             goto done;
> +
> +     pDes->numSourceIndicators = pSrc->numSourceIndicators;
> +     for (i = 0; i < pDes->numSourceIndicators; i++)
> +             pDes->sourceIndicators[i] = pSrc->sourceIndicators[i];
> +done:
> +     return rc;
> +}
>

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to