Hi Alex,

 

Ack (test only).

 

Thanks,

Quyen

 

From: Jones, Alex <ajo...@rbbn.com> 
Sent: Friday, September 13, 2019 12:53 AM
To: hans.nordeb...@ericsson.com; gary....@dektech.com.au; 
quyen....@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net; Jones, Alex <ajo...@rbbn.com>
Subject: [PATCH 1/1] amfd: fix key tuple for sirankedsu db [#3076]

 

Higher ranked SUs are not always picked.

The tuple key has su name first, then si name, then rank. This is wrong.
Su name should be last, as we want to sort by si name and rank before
sorting by su name.

Make su name last in the tuple key.
---
src/amf/amfd/sirankedsu.cc | 21 ++++++++++-----------
src/amf/amfd/susi.h | 2 +-
2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/amf/amfd/sirankedsu.cc b/src/amf/amfd/sirankedsu.cc
index 76c381cc9..8680518db 100644
--- a/src/amf/amfd/sirankedsu.cc
+++ b/src/amf/amfd/sirankedsu.cc
@@ -44,7 +44,7 @@ static void avd_susi_namet_init(const std::string 
&object_name,

static void avd_sirankedsu_db_add(AVD_SUS_PER_SI_RANK *sirankedsu) {
unsigned int rc = sirankedsu_db->insert(
- make_tuple(sirankedsu->su_name, sirankedsu->si_name, sirankedsu->su_rank),
+ make_tuple(sirankedsu->si_name, sirankedsu->su_rank, sirankedsu->su_name),
sirankedsu);
osafassert(rc == NCSCC_RC_SUCCESS);

@@ -81,9 +81,9 @@ static AVD_SUS_PER_SI_RANK *avd_sirankedsu_create(

ranked_su_per_si = new AVD_SUS_PER_SI_RANK();

- ranked_su_per_si->su_name = std::get<0>(key);
- ranked_su_per_si->si_name = std::get<1>(key);
- ranked_su_per_si->su_rank = std::get<2>(key);
+ ranked_su_per_si->si_name = std::get<0>(key);
+ ranked_su_per_si->su_rank = std::get<1>(key);
+ ranked_su_per_si->su_name = std::get<2>(key);

return ranked_su_per_si;
}
@@ -132,10 +132,9 @@ static uint32_t avd_sirankedsu_delete(AVD_CL_CB *cb,
AVD_SUS_PER_SI_RANK *ranked_su_per_si) {
if (ranked_su_per_si == nullptr) return NCSCC_RC_FAILURE;

- sirankedsu_db->erase(make_tuple(ranked_su_per_si->su_name,
- ranked_su_per_si->si_name,
- ranked_su_per_si->su_rank));
-
+ sirankedsu_db->erase(make_tuple(ranked_su_per_si->si_name,
+ ranked_su_per_si->su_rank,
+ ranked_su_per_si->su_name));
delete ranked_su_per_si;
return NCSCC_RC_SUCCESS;
}
@@ -166,7 +165,7 @@ static AVD_SUS_PER_SI_RANK 
*avd_sirankedsu_ccb_apply_create_hdlr(
avd_susi_namet_init(Amf::to_string(dn), su_name, si_name);

/* Find the avd_sus_per_si_rank name. */
- SiRankedSuKey key{make_tuple(su_name, si_name, rank)};
+ SiRankedSuKey key{make_tuple(si_name, rank, su_name)};

AVD_SUS_PER_SI_RANK *avd_sus_per_si_rank =
avd_sirankedsu_create(avd_cb, key);
@@ -286,7 +285,7 @@ static int is_config_valid(const std::string &dn,
return 0;
}

- SiRankedSuKey key{make_tuple(su_name, si_name, rank)};
+ SiRankedSuKey key{make_tuple(si_name, rank, su_name)};

if ((avd_sirankedsu_find(avd_cb, key)) != nullptr) {
if (opdata != nullptr) {
@@ -543,7 +542,7 @@ SaAisErrorT avd_sirankedsu_config_get(const std::string 
&si_name, AVD_SI *si) {
std::string su_name, dummy;
avd_susi_namet_init(Amf::to_string(&dn), su_name, dummy);

- SiRankedSuKey key{make_tuple(su_name, si_name, su_rank)};
+ SiRankedSuKey key{make_tuple(si_name, su_rank, su_name)};

if ((avd_sirankedsu = avd_sirankedsu_find(avd_cb, key)) == nullptr) {
if ((avd_sirankedsu = avd_sirankedsu_ccb_apply_create_hdlr(
diff --git a/src/amf/amfd/susi.h b/src/amf/amfd/susi.h
index afc4a8b48..f64a81cbb 100644
--- a/src/amf/amfd/susi.h
+++ b/src/amf/amfd/susi.h
@@ -89,7 +89,7 @@ typedef struct avd_sus_per_si_rank_tag {

} AVD_SUS_PER_SI_RANK;

-typedef std::tuple<std::string /*su*/, std::string /*si*/, uint32_t /*rank*/>
+typedef std::tuple<std::string /*si*/, uint32_t /*rank*/, std::string /*su*/>
SiRankedSuKey;

typedef AmfDb<SiRankedSuKey, AVD_SUS_PER_SI_RANK> SiRankedSuDb;
--
2.20.1



  _____  

Notice: This e-mail together with any attachments may contain information of 
Ribbon Communications Inc. that is confidential and/or proprietary for the sole 
use of the intended recipient. Any review, disclosure, reliance or distribution 
by others or forwarding without express permission is strictly prohibited. If 
you are not the intended recipient, please notify the sender immediately and 
then delete all copies, including any attachments.

  _____  


_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to