samples/amf/sa_aware/AppConfig-2N.xml | 8 +++++ samples/amf/sa_aware/README | 2 + samples/amf/sa_aware/amf_demo.c | 55 +++++++++++++++++++++++++++------- 3 files changed, 53 insertions(+), 12 deletions(-)
diff --git a/samples/amf/sa_aware/AppConfig-2N.xml b/samples/amf/sa_aware/AppConfig-2N.xml --- a/samples/amf/sa_aware/AppConfig-2N.xml +++ b/samples/amf/sa_aware/AppConfig-2N.xml @@ -312,4 +312,12 @@ from the file before loaded. <object class="SaAmfCompCsType"> <dn>safSupportedCsType=safVersion=1\,safCSType=AmfDemo1,safComp=AmfDemo,safSu=SU2,safSg=AmfDemo,safApp=AmfDemo1</dn> </object> + <object class="SaAmfCSIAttribute"> + <dn>safCsiAttr=AmfDemo1,safCsi=AmfDemo,safSi=AmfDemo,safApp=AmfDemo1</dn> + <attr> + <name>saAmfCSIAttriValue</name> + <value>AAAA</value> + <value>BBBB</value> + </attr> + </object> </imm:IMM-contents> diff --git a/samples/amf/sa_aware/README b/samples/amf/sa_aware/README --- a/samples/amf/sa_aware/README +++ b/samples/amf/sa_aware/README @@ -31,4 +31,6 @@ 4. Unlock instantiation: 5. Unlock: amf-adm unlock safSu=SU1,safSg=AmfDemo,safApp=AmfDemo1 amf-adm unlock safSu=SU2,safSg=AmfDemo,safApp=AmfDemo1 +6. Run below command for invocation of CSI Attribute Change Callback : + immcfg -a saAmfCSIAttriValue+=CCCC safCsiAttr=AmfDemo1,safCsi=AmfDemo,safSi=AmfDemo,safApp=AmfDemo1 diff --git a/samples/amf/sa_aware/amf_demo.c b/samples/amf/sa_aware/amf_demo.c --- a/samples/amf/sa_aware/amf_demo.c +++ b/samples/amf/sa_aware/amf_demo.c @@ -108,7 +108,7 @@ static void amf_csi_set_callback(SaInvoc ** define the workload characteristics */ for (i = 0; i < csi_desc.csiAttr.number; i++) { attr = &csi_desc.csiAttr.attr[i]; - syslog(LOG_DEBUG, "\tname: %s, value: %s", + syslog(LOG_DEBUG, " name: %s, value: %s", attr->attrName, attr->attrValue); } @@ -152,9 +152,9 @@ static void amf_csi_set_callback(SaInvoc else error = SA_AIS_ERR_FAILED_OPERATION; - rc = saAmfResponse(my_amf_hdl, invocation, error); + rc = saAmfResponse_4(my_amf_hdl, invocation, 0, error); if (rc != SA_AIS_OK) { - syslog(LOG_ERR, "saAmfResponse FAILED - %u", rc); + syslog(LOG_ERR, "saAmfResponse_4 FAILED - %u", rc); exit(1); } @@ -214,9 +214,9 @@ static void amf_csi_remove_callback(SaIn /* Reset the HA state */ my_ha_state = 0; - rc = saAmfResponse(my_amf_hdl, invocation, SA_AIS_OK); + rc = saAmfResponse_4(my_amf_hdl, invocation, 0, SA_AIS_OK); if (rc != SA_AIS_OK) { - syslog(LOG_ERR, "saAmfResponse FAILED - %u", rc); + syslog(LOG_ERR, "saAmfResponse_4 FAILED - %u", rc); exit(1); } } @@ -251,9 +251,9 @@ static void amf_healthcheck_callback(SaI status = SA_AIS_ERR_FAILED_OPERATION; } - rc = saAmfResponse(my_amf_hdl, inv, status); + rc = saAmfResponse_4(my_amf_hdl, inv, 0, status); if (rc != SA_AIS_OK) { - syslog(LOG_ERR, "saAmfResponse FAILED - %u", rc); + syslog(LOG_ERR, "saAmfResponse_4 FAILED - %u", rc); exit(1); } } @@ -272,15 +272,45 @@ static void amf_comp_terminate_callback( syslog(LOG_NOTICE, "Terminating"); - rc = saAmfResponse(my_amf_hdl, inv, SA_AIS_OK); + rc = saAmfResponse_4(my_amf_hdl, inv, 0, SA_AIS_OK); if (rc != SA_AIS_OK) { - syslog(LOG_ERR, "saAmfResponse FAILED - %u", rc); + syslog(LOG_ERR, "saAmfResponse_4 FAILED - %u", rc); exit(1); } exit(0); } + +/** + * AMF invokes this callback as a consequence of change in + * csi attribute value. + * @param inv + * @param csi_name + * @param csiAttr + */ +static void amf_csi_attr_change_callback(SaInvocationT invocation, const SaNameT *csi_name, + SaAmfCSIAttributeListT csiAttr) +{ + SaAisErrorT rc, error; + SaAmfCSIAttributeT *attr; + static int i ; + syslog(LOG_INFO, "=====CSI Attr Change====>"); + + syslog(LOG_INFO, "CSI----->:'%s'", csi_name->value); + for (i = 0; i < csiAttr.number; i++) { + attr = &csiAttr.attr[i]; + syslog(LOG_INFO, "CSIATTR--->: %s, val--->: %s", + attr->attrName, attr->attrValue); + } + rc = saAmfResponse_4(my_amf_hdl, invocation, 0, SA_AIS_OK); + if (rc != SA_AIS_OK) { + syslog(LOG_ERR, "saAmfResponse_4 FAILED - %u", rc); + exit(1); + } + syslog(LOG_INFO, "<================="); +} + /** * Create a PID file in directory * @@ -323,17 +353,18 @@ static void sigterm_handler(int sig) static SaAisErrorT amf_initialize(SaSelectionObjectT *amf_sel_obj) { SaAisErrorT rc; - SaAmfCallbacksT amf_callbacks = {0}; + SaAmfCallbacksT_5 amf_callbacks = {0}; SaVersionT api_ver = - {.releaseCode = 'B', api_ver.majorVersion = 0x01, api_ver.minorVersion = 0x01}; + {.releaseCode = 'B', api_ver.majorVersion = 0x04, api_ver.minorVersion = 0x02}; /* Initialize our callbacks */ amf_callbacks.saAmfCSISetCallback = amf_csi_set_callback; amf_callbacks.saAmfCSIRemoveCallback = amf_csi_remove_callback; amf_callbacks.saAmfHealthcheckCallback = amf_healthcheck_callback; amf_callbacks.saAmfComponentTerminateCallback = amf_comp_terminate_callback; + amf_callbacks.osafCsiAttributeChangeCallback = amf_csi_attr_change_callback; - rc = saAmfInitialize(&my_amf_hdl, &amf_callbacks, &api_ver); + rc = saAmfInitialize_5(&my_amf_hdl, &amf_callbacks, &api_ver); if (rc != SA_AIS_OK) { syslog(LOG_ERR, " saAmfInitialize FAILED %u", rc); goto done; ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel