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

-

Last modified by hafe, 05/01/11 13:20:34 (13 months ago)