osaf/services/saf/amf/amfd/ckpt_dec.cc  |  12 +++---
 osaf/services/saf/amf/amfd/ckpt_enc.cc  |  36 ++++++++--------------
 osaf/services/saf/amf/amfd/ckpt_updt.cc |   8 ++--
 osaf/services/saf/amf/amfd/cluster.cc   |  11 +----
 osaf/services/saf/amf/amfd/imm.cc       |  10 ++---
 osaf/services/saf/amf/amfd/include/sg.h |   6 +-
 osaf/services/saf/amf/amfd/role.cc      |   7 +--
 osaf/services/saf/amf/amfd/sg.cc        |  53 +++++++-------------------------
 osaf/services/saf/amf/amfd/si.cc        |   4 +-
 osaf/services/saf/amf/amfd/su.cc        |   4 +-
 osaf/services/saf/amf/amfd/util.cc      |   6 +-
 11 files changed, 55 insertions(+), 102 deletions(-)


diff --git a/osaf/services/saf/amf/amfd/ckpt_dec.cc 
b/osaf/services/saf/amf/amfd/ckpt_dec.cc
--- a/osaf/services/saf/amf/amfd/ckpt_dec.cc
+++ b/osaf/services/saf/amf/amfd/ckpt_dec.cc
@@ -1113,7 +1113,7 @@ static uint32_t dec_sg_admin_state(AVD_C
        TRACE_ENTER();
 
        osaf_decode_sanamet(&dec->i_uba, &name);
-       AVD_SG *sg = avd_sg_get(&name);
+       AVD_SG *sg = sg_db->find(Amf::to_string(&name));
        osafassert(sg != NULL);
        osaf_decode_uint32(&dec->i_uba, (uint32_t*)&sg->saAmfSGAdminState);
 
@@ -1144,7 +1144,7 @@ static uint32_t dec_sg_su_assigned_num(A
        TRACE_ENTER();
 
        osaf_decode_sanamet(&dec->i_uba, &name);
-       AVD_SG *sg = avd_sg_get(&name);
+       AVD_SG *sg = sg_db->find(Amf::to_string(&name));
        osafassert(sg != NULL);
        osaf_decode_uint32(&dec->i_uba, &sg->saAmfSGNumCurrAssignedSUs);
 
@@ -1176,7 +1176,7 @@ static uint32_t dec_sg_su_spare_num(AVD_
        TRACE_ENTER();
 
        osaf_decode_sanamet(&dec->i_uba, &name);
-       AVD_SG *sg = avd_sg_get(&name);
+       AVD_SG *sg = sg_db->find(Amf::to_string(&name));
        osafassert(sg != NULL);
        osaf_decode_uint32(&dec->i_uba, 
&sg->saAmfSGNumCurrInstantiatedSpareSUs);
 
@@ -1208,7 +1208,7 @@ static uint32_t dec_sg_su_uninst_num(AVD
        TRACE_ENTER();
 
        osaf_decode_sanamet(&dec->i_uba, &name);
-       AVD_SG *sg = avd_sg_get(&name);
+       AVD_SG *sg = sg_db->find(Amf::to_string(&name));
        osafassert(sg != NULL);
        osaf_decode_uint32(&dec->i_uba, 
&sg->saAmfSGNumCurrNonInstantiatedSpareSUs);
 
@@ -1240,7 +1240,7 @@ static uint32_t dec_sg_adjust_state(AVD_
        TRACE_ENTER();
 
        osaf_decode_sanamet(&dec->i_uba, &name);
-       AVD_SG *sg = avd_sg_get(&name);
+       AVD_SG *sg = sg_db->find(Amf::to_string(&name));
        osafassert(sg != NULL);
        osaf_decode_uint32(&dec->i_uba, (uint32_t*)&sg->adjust_state);
 
@@ -1271,7 +1271,7 @@ static uint32_t dec_sg_fsm_state(AVD_CL_
        TRACE_ENTER();
 
        osaf_decode_sanamet(&dec->i_uba, &name);
-       AVD_SG *sg = avd_sg_get(&name);
+       AVD_SG *sg = sg_db->find(Amf::to_string(&name));
        osafassert(sg != NULL);
        osaf_decode_uint32(&dec->i_uba, (uint32_t*)&sg->sg_fsm_state);
 
diff --git a/osaf/services/saf/amf/amfd/ckpt_enc.cc 
b/osaf/services/saf/amf/amfd/ckpt_enc.cc
--- a/osaf/services/saf/amf/amfd/ckpt_enc.cc
+++ b/osaf/services/saf/amf/amfd/ckpt_enc.cc
@@ -2162,17 +2162,15 @@ static uint32_t enc_cs_app_config(AVD_CL
 static uint32_t enc_cs_sg_config(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, 
uint32_t *num_of_obj)
 {
        uint32_t status = NCSCC_RC_SUCCESS;
-       SaNameT sg_name;
-       const AVD_SG *sg;
        TRACE_ENTER();
 
        /* 
         * Walk through the entire list and send the entire list data.
         */
-       sg_name.length = 0;
-       for (sg = avd_sg_getnext(&sg_name); sg != NULL; sg = 
avd_sg_getnext(&sg_name)) {
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               AVD_SG *sg = it->second;
                encode_sg(&enc->io_uba, sg);
-               sg_name = sg->name;
                (*num_of_obj)++;
        }
 
@@ -2268,16 +2266,15 @@ static uint32_t enc_cs_si_config(AVD_CL_
 static uint32_t enc_cs_sg_su_oper_list(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, 
uint32_t *num_of_obj)
 {
        uint32_t status = NCSCC_RC_SUCCESS;
-       SaNameT sg_name;
-       AVD_SG *sg;
        TRACE_ENTER();
 
        /* 
         * Walk through the entire SG list and send the SU operation list
         * for that SG and then move to next SG.
         */
-       sg_name.length = 0;
-       for (sg = avd_sg_getnext(&sg_name); sg != NULL; sg = 
avd_sg_getnext(&sg_name)) {
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               AVD_SG *sg = it->second;
                status = enc_su_oper_list(cb, sg, enc);
 
                if (status != NCSCC_RC_SUCCESS) {
@@ -2285,7 +2282,6 @@ static uint32_t enc_cs_sg_su_oper_list(A
                        return NCSCC_RC_FAILURE;
                }
 
-               sg_name = sg->name;
                (*num_of_obj)++;
 
        }
@@ -2311,20 +2307,17 @@ static uint32_t enc_cs_sg_su_oper_list(A
 static uint32_t enc_cs_sg_admin_si(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, 
uint32_t *num_of_obj)
 {
        uint32_t status = NCSCC_RC_SUCCESS;
-       SaNameT sg_name;
-       AVD_SG *sg;
        EDU_ERR ederror = static_cast<EDU_ERR>(0);
        TRACE_ENTER();
 
        /* 
         * Walk through the entire list and send the entire list data.
         */
-       sg_name.length = 0;
-       for (sg = avd_sg_getnext(&sg_name); sg != NULL; sg = 
avd_sg_getnext(&sg_name)) {
-               if (NULL == sg->admin_si) {
-                       sg_name = sg->name;
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               AVD_SG *sg = it->second;
+               if (NULL == sg->admin_si) 
                        continue;
-               }
 
                status = m_NCS_EDU_SEL_VER_EXEC(&cb->edu_hdl, 
avsv_edp_ckpt_msg_si, &enc->io_uba,
                                                EDP_OP_TYPE_ENC, sg->admin_si, 
&ederror, enc->i_peer_version, 1, 1);
@@ -2334,7 +2327,6 @@ static uint32_t enc_cs_sg_admin_si(AVD_C
                        return NCSCC_RC_FAILURE;
                }
 
-               sg_name = sg->name;
                (*num_of_obj)++;
        }
 
@@ -2351,15 +2343,14 @@ static uint32_t enc_cs_sg_admin_si(AVD_C
 static uint32_t enc_cs_si_trans(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, uint32_t 
*num_of_obj)
 {
        uint32_t status = NCSCC_RC_SUCCESS;
-       AVD_SG *sg;
-       SaNameT sg_name = {0};
        AVSV_SI_TRANS_CKPT_MSG si_trans_ckpt;
        EDU_ERR ederror = static_cast<EDU_ERR>(0);
 
        TRACE_ENTER();
 
-       sg_name.length = 0;
-       for (sg = avd_sg_getnext(&sg_name); sg != NULL; sg = 
avd_sg_getnext(&sg_name)) {
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               AVD_SG *sg = it->second;
            if (sg->si_tobe_redistributed != NULL) { 
                si_trans_ckpt.sg_name = sg->name;
                si_trans_ckpt.si_name = sg->si_tobe_redistributed->name;
@@ -2377,7 +2368,6 @@ static uint32_t enc_cs_si_trans(AVD_CL_C
 
                (*num_of_obj)++;
            }
-           sg_name = sg->name;
        }
        TRACE_LEAVE2("status '%u'", status);
        return status;
diff --git a/osaf/services/saf/amf/amfd/ckpt_updt.cc 
b/osaf/services/saf/amf/amfd/ckpt_updt.cc
--- a/osaf/services/saf/amf/amfd/ckpt_updt.cc
+++ b/osaf/services/saf/amf/amfd/ckpt_updt.cc
@@ -142,8 +142,8 @@ uint32_t avd_ckpt_sg(AVD_CL_CB *cb, AVD_
 
        osafassert (action == NCS_MBCSV_ACT_UPDATE);
 
-       if (NULL == (sg = avd_sg_get(&ckpt_sg->name))) {
-               LOG_ER("avd_sg_get FAILED for '%s'", ckpt_sg->name.value);
+       if (NULL == (sg = sg_db->find(Amf::to_string(&ckpt_sg->name)))) {
+               LOG_ER("sg_db->find() FAILED for '%s'", ckpt_sg->name.value);
                rc = NCSCC_RC_FAILURE;
                goto done;
        }
@@ -244,7 +244,7 @@ uint32_t avd_ckpt_si(AVD_CL_CB *cb, AVD_
        si->saAmfSIAssignmentState = ckpt_si->saAmfSIAssignmentState;
        si->saAmfSIProtectedbySG = ckpt_si->saAmfSIProtectedbySG;
        si->alarm_sent = ckpt_si->alarm_sent;
-       si->sg_of_si = avd_sg_get(&si->saAmfSIProtectedbySG);
+       si->sg_of_si = sg_db->find(Amf::to_string(&si->saAmfSIProtectedbySG));
 
        rc = NCSCC_RC_SUCCESS;
 done:
@@ -351,7 +351,7 @@ uint32_t avd_ckpt_si_trans(AVD_CL_CB *cb
 
        TRACE_ENTER2("'%s'", si_trans_ckpt->sg_name.value);
 
-       sg_ptr = avd_sg_get(&si_trans_ckpt->sg_name);
+       sg_ptr = sg_db->find(Amf::to_string(&si_trans_ckpt->sg_name));
        osafassert(sg_ptr);
 
        switch (action) {
diff --git a/osaf/services/saf/amf/amfd/cluster.cc 
b/osaf/services/saf/amf/amfd/cluster.cc
--- a/osaf/services/saf/amf/amfd/cluster.cc
+++ b/osaf/services/saf/amf/amfd/cluster.cc
@@ -51,9 +51,6 @@ AVD_CLUSTER *avd_cluster = &_avd_cluster
 
 void avd_cluster_tmr_init_evh(AVD_CL_CB *cb, AVD_EVT *evt)
 {
-       SaNameT lsg_name;
-       AVD_SG *i_sg;
-
        TRACE_ENTER();
        saflog(LOG_NOTICE, amfSvcUsrName, "Cluster startup timeout, assigning 
SIs to SUs");
 
@@ -77,14 +74,12 @@ void avd_cluster_tmr_init_evh(AVD_CL_CB 
         * system that are not NCS specific.
         */
 
-       lsg_name.length = 0;
-       for (i_sg = avd_sg_getnext(&lsg_name); i_sg != NULL; i_sg = 
avd_sg_getnext(&lsg_name)) {
-               lsg_name = i_sg->name;
-
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               AVD_SG *i_sg = it->second;
                if ((i_sg->list_of_su == NULL) || (i_sg->sg_ncs_spec == true)) {
                        continue;
                }
-
                i_sg->realign(cb, i_sg);
        }
 
diff --git a/osaf/services/saf/amf/amfd/imm.cc 
b/osaf/services/saf/amf/amfd/imm.cc
--- a/osaf/services/saf/amf/amfd/imm.cc
+++ b/osaf/services/saf/amf/amfd/imm.cc
@@ -1105,7 +1105,7 @@ static void ccb_apply_cb(SaImmOiHandleT 
                // TODO: would be more elegant with yet another function pointer
                type = object_name_to_class_type(&next->opdata->objectName);
                if ((type == AVSV_SA_AMF_SG) && (next->opdata->operationType == 
CCBUTIL_CREATE)) {
-                       AVD_SG *sg = avd_sg_get(&next->opdata->objectName);
+                       AVD_SG *sg = 
sg_db->find(Amf::to_string(&next->opdata->objectName));
                        avd_sg_adjust_config(sg);
                }
                next = next->next_ccb_to_apply;
@@ -1444,12 +1444,10 @@ unsigned int avd_imm_config_get(void)
 
        // SGs needs to adjust configuration once all instances have been added
        {
-               AVD_SG *sg;
-               SaNameT dn = {0};
-
-               for (sg = avd_sg_getnext(&dn); sg; sg = avd_sg_getnext(&dn)) {
+               for (std::map<std::string, AVD_SG*>::const_iterator it = 
sg_db->begin();
+                               it != sg_db->end(); it++) {
+                       AVD_SG *sg = it->second;
                        avd_sg_adjust_config(sg);
-                       dn = sg->name;
                }
        }
 
diff --git a/osaf/services/saf/amf/amfd/include/sg.h 
b/osaf/services/saf/amf/amfd/include/sg.h
--- a/osaf/services/saf/amf/amfd/include/sg.h
+++ b/osaf/services/saf/amf/amfd/include/sg.h
@@ -41,6 +41,7 @@
 #include <sgtype.h>
 #include <amf_defs.h>
 #include <amf_d2nmsg.h>
+#include "db_template.h"
 
 class AVD_SU;
 
@@ -66,7 +67,6 @@ typedef struct avd_sg_oper_tag {
  * associated with the Service group (SG).
  */
 typedef struct avd_sg_tag {
-       NCS_PATRICIA_NODE tree_node;    /* key will be the SG name */
 
        SaNameT name;           /* the service group DN used as the index.
                                 * Checkpointing - Sent as a one time update.
@@ -243,6 +243,8 @@ typedef struct avd_sg_tag {
 
 } AVD_SG;
 
+extern AmfDb<std::string, AVD_SG> *sg_db;
+
 #define m_AVD_SET_SG_ADJUST(cb,sg,state) {\
        TRACE("adjust_state %u => %u", sg->adjust_state, state); \
        sg->adjust_state = state;\
@@ -317,8 +319,6 @@ extern AVD_SG *avd_sg_new(const SaNameT 
 extern void avd_sg_delete(AVD_SG *sg);
 extern void avd_sg_db_add(AVD_SG *sg);
 extern void avd_sg_db_remove(AVD_SG *sg);
-extern AVD_SG *avd_sg_get(const SaNameT *sg_name);
-extern AVD_SG *avd_sg_getnext(const SaNameT *sg_name);
 extern void avd_sg_add_si(AVD_SG *sg, struct avd_si_tag *si);
 extern void avd_sg_remove_si(AVD_SG *sg, struct avd_si_tag *si);
 extern SaAisErrorT avd_sg_config_get(const SaNameT *app_dn, struct avd_app_tag 
*app);
diff --git a/osaf/services/saf/amf/amfd/role.cc 
b/osaf/services/saf/amf/amfd/role.cc
--- a/osaf/services/saf/amf/amfd/role.cc
+++ b/osaf/services/saf/amf/amfd/role.cc
@@ -946,8 +946,6 @@ uint32_t amfd_switch_qsd_stdby(AVD_CL_CB
 uint32_t amfd_switch_stdby_actv(AVD_CL_CB *cb)
 {
        uint32_t status = NCSCC_RC_SUCCESS;
-       AVD_SG *sg;
-       SaNameT dn = {0};
        SaAisErrorT rc;
        
        TRACE_ENTER();
@@ -1039,12 +1037,13 @@ uint32_t amfd_switch_stdby_actv(AVD_CL_C
        avd_d2d_chg_role_rsp(cb, NCSCC_RC_SUCCESS, SA_AMF_HA_ACTIVE);
 
        /* Screen through all the SG's in the sg database and update si's 
si_dep_state */
-       for (sg = avd_sg_getnext(&dn); sg != NULL; sg = avd_sg_getnext(&dn)) {
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               AVD_SG *sg = it->second;
                if (sg->sg_fsm_state == AVD_SG_FSM_STABLE) {
                        avd_sidep_update_si_dep_state_for_all_sis(sg);
                        avd_sidep_sg_take_action(sg);
                }
-               dn = sg->name;
        }
 
        LOG_NO("Controller switch over done");
diff --git a/osaf/services/saf/amf/amfd/sg.cc b/osaf/services/saf/amf/amfd/sg.cc
--- a/osaf/services/saf/amf/amfd/sg.cc
+++ b/osaf/services/saf/amf/amfd/sg.cc
@@ -30,24 +30,20 @@
 #include <si_dep.h>
 #include <csi.h>
 
-static NCS_PATRICIA_TREE sg_db;
+AmfDb<std::string, AVD_SG> *sg_db = NULL;
+
 static void avd_verify_equal_ranked_su(AVD_SG *avd_sg);
 
 void avd_sg_db_add(AVD_SG *sg)
 {
        unsigned int rc;
 
-       if (avd_sg_get(&sg->name) == NULL) {
-               rc = ncs_patricia_tree_add(&sg_db, &sg->tree_node);
+       if (sg_db->find(Amf::to_string(&sg->name)) == NULL) {
+               rc = sg_db->insert(Amf::to_string(&sg->name),sg);
                osafassert(rc == NCSCC_RC_SUCCESS);
        }
 }
 
-void avd_sg_db_remove(AVD_SG *sg)
-{
-       unsigned int rc = ncs_patricia_tree_del(&sg_db, &sg->tree_node);
-       osafassert(rc == NCSCC_RC_SUCCESS);
-}
 
 /**
  * Add the SG to the model
@@ -91,7 +87,7 @@ static void sg_remove_from_model(AVD_SG 
 {
        avd_sgtype_remove_sg(sg);
        avd_app_remove_sg(sg->app, sg);
-       avd_sg_db_remove(sg);
+       sg_db->erase(Amf::to_string(&sg->name));
 
        m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, sg, AVSV_CKPT_AVD_SG_CONFIG);
 }
@@ -104,7 +100,6 @@ AVD_SG *avd_sg_new(const SaNameT *dn)
 
        memcpy(sg->name.value, dn->value, dn->length);
        sg->name.length = dn->length;
-       sg->tree_node.key_info = (uint8_t *)&(sg->name);
        sg->sg_ncs_spec = false;
        sg->sg_fsm_state = AVD_SG_FSM_STABLE;
        sg->adjust_state = AVSV_SG_STABLE;
@@ -171,26 +166,6 @@ void avd_sg_remove_si(AVD_SG *sg, AVD_SI
        }
 }
 
-AVD_SG *avd_sg_get(const SaNameT *dn)
-{
-       SaNameT tmp = {0};
-
-       tmp.length = dn->length;
-       memcpy(tmp.value, dn->value, tmp.length);
-
-       return (AVD_SG *)ncs_patricia_tree_get(&sg_db, (uint8_t *)&tmp);
-}
-
-AVD_SG *avd_sg_getnext(const SaNameT *dn)
-{
-       SaNameT tmp = {0};
-
-       tmp.length = dn->length;
-       memcpy(tmp.value, dn->value, tmp.length);
-
-       return (AVD_SG *)ncs_patricia_tree_getnext(&sg_db, (uint8_t *)&tmp);
-}
-
 /**
  * Validate configuration attributes for an SaAmfSG object
  * 
@@ -273,7 +248,7 @@ static AVD_SG *sg_create(const SaNameT *
        ** If called at new active at failover, the object is found in the DB
        ** but needs to get configuration attributes initialized.
        */
-       if (NULL == (sg = avd_sg_get(sg_name))) {
+       if (NULL == (sg = sg_db->find(Amf::to_string(sg_name)))) {
                if ((sg = avd_sg_new(sg_name)) == NULL)
                        goto done;
        } else
@@ -551,7 +526,7 @@ static SaAisErrorT ccb_completed_modify_
 
        TRACE_ENTER2("'%s'", opdata->objectName.value);
 
-       sg = avd_sg_get(&opdata->objectName);
+       sg = sg_db->find(Amf::to_string(&opdata->objectName));
        osafassert(sg != NULL);
 
        /* Validate whether we can modify it. */
@@ -819,7 +794,7 @@ static void ccb_apply_modify_hdlr(CcbUti
 
        TRACE_ENTER2("'%s'", opdata->objectName.value);
 
-       sg = avd_sg_get(&opdata->objectName);
+       sg = sg_db->find(Amf::to_string(&opdata->objectName));
        assert(sg != NULL);
 
        sg_type = avd_sgtype_get(&sg->saAmfSGType);
@@ -1181,7 +1156,7 @@ static void sg_admin_op_cb(SaImmOiHandle
        AVD_AVND *node;
 
        TRACE_ENTER2("'%s', %llu", object_name->value, op_id);
-       sg = avd_sg_get(object_name);
+       sg = sg_db->find(Amf::to_string(object_name));
 
        if (sg->sg_ncs_spec == true) {
                report_admin_op_error(immOiHandle, invocation, 
SA_AIS_ERR_BAD_OPERATION, NULL,
@@ -1363,7 +1338,7 @@ done:
 static SaAisErrorT sg_rt_attr_cb(SaImmOiHandleT immOiHandle,
        const SaNameT *objectName, const SaImmAttrNameT *attributeNames)
 {
-       AVD_SG *sg = avd_sg_get(objectName);
+       AVD_SG *sg = sg_db->find(Amf::to_string(objectName));
        SaImmAttrNameT attributeName;
        int i = 0;
 
@@ -1413,7 +1388,7 @@ static SaAisErrorT sg_ccb_completed_cb(C
                rc = ccb_completed_modify_hdlr(opdata);
                break;
        case CCBUTIL_DELETE:
-               sg = avd_sg_get(&opdata->objectName);
+               sg = sg_db->find(Amf::to_string(&opdata->objectName));
                if (sg->list_of_si != NULL) {
                        /* check whether there is parent app delete */
                        t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId, 
&sg->app->name);
@@ -1537,11 +1512,7 @@ void avd_sg_add_su(AVD_SU* su)
 
 void avd_sg_constructor(void)
 {
-       NCS_PATRICIA_PARAMS patricia_params;
-
-       patricia_params.key_size = sizeof(SaNameT);
-       osafassert(ncs_patricia_tree_init(&sg_db, &patricia_params) == 
NCSCC_RC_SUCCESS);
-
+       sg_db = new AmfDb<std::string, AVD_SG>;
        avd_class_impl_set("SaAmfSG", sg_rt_attr_cb, sg_admin_op_cb,
                sg_ccb_completed_cb, sg_ccb_apply_cb);
 }
diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc
--- a/osaf/services/saf/amf/amfd/si.cc
+++ b/osaf/services/saf/amf/amfd/si.cc
@@ -470,7 +470,7 @@ static void si_add_to_model(AVD_SI *si)
        si->svc_type = svctype_db->find(Amf::to_string(&si->saAmfSvcType));
 
        if (si->saAmfSIProtectedbySG.length > 0)
-               si->sg_of_si = avd_sg_get(&si->saAmfSIProtectedbySG);
+               si->sg_of_si = 
sg_db->find(Amf::to_string(&si->saAmfSIProtectedbySG));
 
        avd_svctype_add_si(si);
        avd_app_add_si(si->app, si);
@@ -527,7 +527,7 @@ static int is_config_valid(const SaNameT
                return 0;
        }
 
-       if (avd_sg_get(&aname) == NULL) {
+       if (sg_db->find(Amf::to_string(&aname)) == NULL) {
                if (opdata == NULL) {
                        report_ccb_validation_error(opdata, "'%s' does not 
exist", aname.value);
                        return 0;
diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc
--- a/osaf/services/saf/amf/amfd/su.cc
+++ b/osaf/services/saf/amf/amfd/su.cc
@@ -312,7 +312,7 @@ static int is_config_valid(const SaNameT
 
        /* Get value of saAmfSGSuHostNodeGroup */
        avsv_sanamet_init(dn, &sg_name, "safSg");
-       sg = avd_sg_get(&sg_name);
+       sg = sg_db->find(Amf::to_string(&sg_name));
        if (sg) {
                saAmfSGSuHostNodeGroup = sg->saAmfSGSuHostNodeGroup;
        } else {
@@ -595,7 +595,7 @@ static void su_add_to_model(AVD_SU *su)
        ** An SU can be created (on the standby) from the checkpointing logic.
        ** In that case the SG reference could now be NULL.
        */
-       su->sg_of_su = avd_sg_get(&dn);
+       su->sg_of_su = sg_db->find(Amf::to_string(&dn));
        osafassert(su->sg_of_su);
 
        if (su_db->find(Amf::to_string(&su->name)) == NULL) {
diff --git a/osaf/services/saf/amf/amfd/util.cc 
b/osaf/services/saf/amf/amfd/util.cc
--- a/osaf/services/saf/amf/amfd/util.cc
+++ b/osaf/services/saf/amf/amfd/util.cc
@@ -1374,9 +1374,9 @@ void amfd_file_dump(const char *path)
                fprintf(f, "\tsaAmfApplicationCurrNumSGs=%u\n", 
app->saAmfApplicationCurrNumSGs);
        }
 
-       AVD_SG *sg;
-       dn.length = 0;
-       for (sg = avd_sg_getnext(&dn); sg != NULL; sg = avd_sg_getnext(&dn)) {
+       for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin();
+                       it != sg_db->end(); it++) {
+               const AVD_SG *sg = it->second;
                fprintf(f, "%s\n", sg->name.value);
                fprintf(f, "\tsaAmfSGAdminState=%u\n", sg->saAmfSGAdminState);
                fprintf(f, "\tsaAmfSGNumCurrAssignedSUs=%u\n", 
sg->saAmfSGNumCurrAssignedSUs);

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to