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

Reply via email to