Support for AMF B.04 API
This wiki contains information about adding support for AMF B.04 API into OpenSAF
AMF todays support the B.01 API but information model and admin operations from B.04.
B.01 support should be kept for backwards compatibility.
Study of specification differences B.01 vs B.04
saAmfInitialize vs saAmfInitialize_4
B.04 callbacks are a super set of B.01 callbacks. The difference is really just SaAmfProtectionGroupMemberT_4 which adds a new member haReadinessState as described in 1.3.1.
Semantic change: can return SA_AIS_ERR_UNAVAILABLE
saAmfComponentRegister
Based on the component category return SA_AIS_ERR_INIT if certain callbacks related to the component category are missing.
Semantic change: can return SA_AIS_ERR_UNAVAILABLE
saAmfPmStart vs saAmfPmStart_3
Type for argument processId changed from SaUint64T to SaInt64T.
Semantic changes: saAmfPmStart_3 can return SA_AIS_ERR_UNAVAILABLE, SA_AIS_ERR_ACCESS & SA_AIS_ERR_VERSION.
saAmfProtectionGroupTrack vs saAmfProtectionGroupTrack_4
SaAmfProtectionGroupTrackCallbackT vs SaAmfProtectionGroupTrackCallbackT_4
saAmfProtectionGroupNotificationFree vs saAmfProtectionGroupNotificationFree_4
saAmfComponentErrorReport vs saAmfComponentErrorReport_4
saAmfComponentErrorClear vs saAmfComponentErrorClear_4
saAmfResponse vs saAmfResponse_4
A new argument SaNtfCorrelationIdsT *correlationIds added. Can be set to NULL which effectively gives same semantics as saAmfResponse_4
New functions
- === saAmfHAReadinessStateSet ===
- === saAmfCorrelationIdsGet ===
Implementation impact
saAmfInitialize vs saAmfInitialize_4
The initialize call sends no message to the AMF node director. It is just a local library registration of the client. Since the set of B.04 callbacks are a super set of B.01 callbacks, initialize can safely store the callbacks internally in B.04 format. Later when they are invoked, different data needs to passed in callbacks depending of the client version.
SA_AIS_ERR_UNAVAILABLE means node not member of cluster. How can library code determine that? We need to introduce request/response messages for initialize and let the AMF node director take care of the membership issue.
Impacts the server (node director). Needs to respond to a new message with a status code indicating if node is member or not.
saAmfComponentRegister
The response message for AVSV_AMF_COMP_REG needs to contains the component category. This information is contained in the attribute saAmfCtCompCategory in the SaAmfCompType class.
The response message is the AVSV_AMF_API_RESP_INFO typedef. It contains a param union that should be extended with a new comp category attribute.
saAmfResponse vs saAmfResponse_4
saAmfResponse is easily mapped onto saAmfResponse_4 setting the correlationIds argument to NULL.
rootCorrelationId and parentCorrelationId (from correlationIds) needs to be added to the AVSV_AMF_RESP message. If not available, these should be initialized with SA_NTF_IDENTIFIER_UNUSED.
Currently there is no response message from the AMF node director for the AVSV_AMF_RESP message. This needs to be added since the caller would expect a value in notificationId or the correlationIds argument.
Implementation items
In what steps can we break down the implementation?
Development repositories
-
