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