osaf/services/saf/amf/amfd/su.cc | 444 ++++++++++++++------------
osaf/services/saf/amf/amfd/sutcomptype.cc | 25 +-
osaf/services/saf/amf/amfd/sutype.cc | 65 ++-
osaf/services/saf/amf/amfd/svctype.cc | 44 +-
osaf/services/saf/amf/amfd/svctypecstypes.cc | 39 +-
5 files changed, 329 insertions(+), 288 deletions(-)
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
@@ -36,7 +36,7 @@
void AVD_SU::initialize() {
saAmfSURank = 0;
- saAmfSUHostNodeOrNodeGroup.length = 0;
+ saAmfSUHostNodeOrNodeGroup = "";
saAmfSUFailover = false;
saAmfSUFailover_configured = false;
saAmfSUPreInstantiable = SA_FALSE;
@@ -57,10 +57,9 @@
list_of_comp = {};
su_type = nullptr;
su_list_su_type_next = nullptr;
- name.length = 0;
- saAmfSUType.length = 0;
- saAmfSUMaintenanceCampaign.length = 0;
- saAmfSUHostedByNode.length = 0;
+ saAmfSUType = "";
+ saAmfSUMaintenanceCampaign = "";
+ saAmfSUHostedByNode = "";
pend_cbk.invocation = 0;
pend_cbk.admin_oper = (SaAmfAdminOperationIdT)0;
surestart = false;
@@ -70,10 +69,10 @@
initialize();
}
-AVD_SU::AVD_SU(const SaNameT *dn) {
+AVD_SU::AVD_SU(const std::string& dn) :
+ name(dn)
+{
initialize();
- memcpy(name.value, dn->value, sizeof(name.value));
- name.length = dn->length;
}
/**
@@ -81,7 +80,7 @@
* to node director.
*/
void AVD_SU::remove_from_model() {
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
/* All the components under this SU should have been deleted
* by now, just do the sanity check to confirm it is done
@@ -92,7 +91,7 @@
m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, this, AVSV_CKPT_AVD_SU_CONFIG);
avd_node_remove_su(this);
avd_sutype_remove_su(this);
- su_db->erase(Amf::to_string(&name));
+ su_db->erase(name);
avd_sg_remove_su(this);
TRACE_LEAVE();
@@ -179,27 +178,30 @@
*
* @return int
*/
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes,
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes,
const CcbUtilOperationData_t *opdata)
{
SaAisErrorT rc;
- SaNameT saAmfSUType, sg_name;
- SaNameT saAmfSUHostNodeOrNodeGroup = {0}, saAmfSGSuHostNodeGroup = {0};
+ std::string sg_name;
+ std::string su_host_node_or_nodegroup;
+ std::string sg_su_host_nodegroup;
+ SaNameT saAmfSUHostNodeOrNodeGroup = {0};
+ SaNameT saAmfSUType;
SaBoolT abool;
SaAmfAdminStateT admstate;
- char *parent;
+ std::string::size_type pos;
SaUint32T saAmfSutIsExternal;
AVD_SUTYPE *sut = nullptr;
CcbUtilOperationData_t *tmp;
AVD_SG *sg;
- if ((parent = strchr((char*)dn->value, ',')) == nullptr) {
- report_ccb_validation_error(opdata, "No parent to '%s' ",
dn->value);
+ if ((pos = dn.find(',')) == std::string::npos) {
+ report_ccb_validation_error(opdata, "No parent to '%s' ",
dn.c_str());
return 0;
}
- if (strncmp(++parent, "safSg=", 6) != 0) {
- report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", parent, dn->value);
+ if (dn.compare(pos + 1, 6, "safSg=") != 0) {
+ report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", dn.substr(pos + 1).c_str(), dn.c_str());
return 0;
}
@@ -228,34 +230,35 @@
/* Validate that a configured node or node group exist */
if
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
attributes, 0,
&saAmfSUHostNodeOrNodeGroup) == SA_AIS_OK) {
- if (strncmp((char*)saAmfSUHostNodeOrNodeGroup.value,
"safAmfNode=", 11) == 0) {
- if (avd_node_get(&saAmfSUHostNodeOrNodeGroup) ==
nullptr) {
+ su_host_node_or_nodegroup =
Amf::to_string(&saAmfSUHostNodeOrNodeGroup);
+ if (su_host_node_or_nodegroup.compare(0, 11, "safAmfNode=") ==
0) {
+ if (avd_node_get(su_host_node_or_nodegroup) == nullptr)
{
if (opdata == nullptr) {
report_ccb_validation_error(opdata,
"'%s' does not exist in model",
-
saAmfSUHostNodeOrNodeGroup.value);
+
su_host_node_or_nodegroup.c_str());
return 0;
}
if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
&saAmfSUHostNodeOrNodeGroup) == nullptr) {
report_ccb_validation_error(opdata,
"'%s' does not exist in
existing model or in CCB",
-
saAmfSUHostNodeOrNodeGroup.value);
+
su_host_node_or_nodegroup.c_str());
return 0;
}
}
}
else {
- if (avd_ng_get(&saAmfSUHostNodeOrNodeGroup) == nullptr)
{
+ if (avd_ng_get(su_host_node_or_nodegroup) == nullptr) {
if (opdata == nullptr) {
report_ccb_validation_error(opdata,
"'%s' does not exist in model",
-
saAmfSUHostNodeOrNodeGroup.value);
+
su_host_node_or_nodegroup.c_str());
return 0;
}
if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
&saAmfSUHostNodeOrNodeGroup) == nullptr) {
report_ccb_validation_error(opdata,
"'%s' does not exist in
existing model or in CCB",
-
saAmfSUHostNodeOrNodeGroup.value);
+
su_host_node_or_nodegroup.c_str());
return 0;
}
}
@@ -263,32 +266,36 @@
}
/* Get value of saAmfSGSuHostNodeGroup */
- avsv_sanamet_init(dn, &sg_name, "safSg");
- sg = sg_db->find(Amf::to_string(&sg_name));
+ avsv_sanamet_init(dn, sg_name, "safSg");
+ sg = sg_db->find(sg_name);
if (sg) {
- saAmfSGSuHostNodeGroup = sg->saAmfSGSuHostNodeGroup;
+ sg_su_host_nodegroup = sg->saAmfSGSuHostNodeGroup;
} else {
if (opdata == nullptr) {
- report_ccb_validation_error(opdata, "SG '%s' does not
exist in model", sg_name.value);
+ report_ccb_validation_error(opdata, "SG '%s' does not
exist in model", sg_name.c_str());
return 0;
}
- if ((tmp = ccbutil_getCcbOpDataByDN(opdata->ccbId, &sg_name))
== nullptr) {
+ const SaNameTWrapper sg_namet(sg_name);
+ if ((tmp = ccbutil_getCcbOpDataByDN(opdata->ccbId, sg_namet))
== nullptr) {
report_ccb_validation_error(opdata, "SG '%s' does not
exist in existing model or in CCB",
- sg_name.value);
+ sg_name.c_str());
return 0;
}
+ SaNameT saAmfSGSuHostNodeGroup = {0};
(void)
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSGSuHostNodeGroup"),
tmp->param.create.attrValues, 0,
&saAmfSGSuHostNodeGroup);
+ sg_su_host_nodegroup = Amf::to_string(&saAmfSGSuHostNodeGroup);
}
/* If its a local SU, node or nodegroup must be configured */
- if (!saAmfSutIsExternal &&
- (strstr((char *)saAmfSUHostNodeOrNodeGroup.value, "safAmfNode=") ==
nullptr) &&
- (strstr((char *)saAmfSUHostNodeOrNodeGroup.value,
"safAmfNodeGroup=") == nullptr) &&
- (strstr((char *)saAmfSGSuHostNodeGroup.value, "safAmfNodeGroup=")
== nullptr)) {
- report_ccb_validation_error(opdata, "node or node group
configuration is missing for '%s'", dn->value);
+ if (!saAmfSutIsExternal &&
+ su_host_node_or_nodegroup.find("safAmfNode=") ==
std::string::npos &&
+ su_host_node_or_nodegroup.find("safAmfNodeGroup=") ==
std::string::npos &&
+ sg_su_host_nodegroup.find("safAmfNodeGroup=") ==
std::string::npos ) {
+
+ report_ccb_validation_error(opdata, "node or node group
configuration is missing for '%s'", dn.c_str());
return 0;
}
@@ -297,10 +304,11 @@
* service unit".
*/
if (saAmfSutIsExternal &&
- ((strstr((char *)saAmfSUHostNodeOrNodeGroup.value, "safAmfNode=")
!= nullptr) ||
- (strstr((char *)saAmfSUHostNodeOrNodeGroup.value,
"safAmfNodeGroup=") != nullptr) ||
- (strstr((char *)saAmfSGSuHostNodeGroup.value, "safAmfNodeGroup=")
!= nullptr))) {
- report_ccb_validation_error(opdata, "node or node group
configured for external SU '%s'", dn->value);
+ (su_host_node_or_nodegroup.find("safAmfNode=") !=
std::string::npos ||
+ su_host_node_or_nodegroup.find("safAmfNodeGroup=") !=
std::string::npos ||
+ sg_su_host_nodegroup.find("safAmfNodeGroup=") !=
std::string::npos)) {
+
+ report_ccb_validation_error(opdata, "node or node group
configured for external SU '%s'", dn.c_str());
return 0;
}
@@ -311,28 +319,28 @@
* configured for a service unit, it must be a member of the node group
for the service
* group, if configured."
*/
- if ((strstr((char *)saAmfSUHostNodeOrNodeGroup.value,
"safAmfNodeGroup=") != nullptr) &&
- (strstr((char *)saAmfSGSuHostNodeGroup.value, "safAmfNodeGroup=")
!= nullptr)) {
+ if (su_host_node_or_nodegroup.find("safAmfNodeGroup=") !=
std::string::npos &&
+ sg_su_host_nodegroup.find("safAmfNodeGroup=") !=
std::string::npos) {
AVD_AMF_NG *ng_of_su, *ng_of_sg;
- ng_of_su = avd_ng_get(&saAmfSUHostNodeOrNodeGroup);
+ ng_of_su = avd_ng_get(su_host_node_or_nodegroup);
if (ng_of_su == nullptr) {
report_ccb_validation_error(opdata, "Invalid
saAmfSUHostNodeOrNodeGroup '%s' for '%s'",
- saAmfSUHostNodeOrNodeGroup.value, dn->value);
+ su_host_node_or_nodegroup.c_str(), dn.c_str());
return 0;
}
- ng_of_sg = avd_ng_get(&saAmfSGSuHostNodeGroup);
+ ng_of_sg = avd_ng_get(sg_su_host_nodegroup);
if (ng_of_su == nullptr) {
report_ccb_validation_error(opdata, "Invalid
saAmfSGSuHostNodeGroup '%s' for '%s'",
- saAmfSGSuHostNodeGroup.value, dn->value);
+ sg_su_host_nodegroup.c_str(), dn.c_str());
return 0;
}
if (ng_of_su->number_nodes() > ng_of_sg->number_nodes()) {
report_ccb_validation_error(opdata,
"SU node group '%s' contains more nodes
than the SG node group '%s'",
- saAmfSUHostNodeOrNodeGroup.value,
saAmfSGSuHostNodeGroup.value);
+ su_host_node_or_nodegroup.c_str(),
sg_su_host_nodegroup.c_str());
return 0;
}
@@ -340,7 +348,7 @@
ng_of_su->saAmfNGNodeList.begin(),
ng_of_su->saAmfNGNodeList.end()) == false) {
report_ccb_validation_error(opdata,
"SU node group '%s' is not a
subset of the SG node group '%s'",
-
saAmfSUHostNodeOrNodeGroup.value, saAmfSGSuHostNodeGroup.value);
+
su_host_node_or_nodegroup.c_str(), sg_su_host_nodegroup.c_str());
return 0;
}
@@ -350,13 +358,13 @@
if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUFailover"),
attributes, 0, &abool) == SA_AIS_OK) &&
(abool > SA_TRUE)) {
- report_ccb_validation_error(opdata, "Invalid saAmfSUFailover %u
for '%s'", abool, dn->value);
+ report_ccb_validation_error(opdata, "Invalid saAmfSUFailover %u
for '%s'", abool, dn.c_str());
return 0;
}
if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUAdminState"),
attributes, 0, &admstate) == SA_AIS_OK) &&
!avd_admin_state_is_valid(admstate, opdata)) {
- report_ccb_validation_error(opdata, "Invalid saAmfSUAdminState
%u for '%s'", admstate, dn->value);
+ report_ccb_validation_error(opdata, "Invalid saAmfSUAdminState
%u for '%s'", admstate, dn.c_str());
return 0;
}
@@ -371,26 +379,28 @@
*
* @return AVD_SU*
*/
-static AVD_SU *su_create(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes)
+static AVD_SU *su_create(const std::string& dn, const SaImmAttrValuesT_2
**attributes)
{
int rc = -1;
AVD_SU *su;
AVD_SUTYPE *sut;
SaAisErrorT error;
+ SaNameT temp_name;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
/*
** If called at new active at failover, the object is found in the DB
** but needs to get configuration attributes initialized.
*/
- if ((su = su_db->find(Amf::to_string(dn))) == nullptr) {
+ if ((su = su_db->find(dn)) == nullptr) {
su = new AVD_SU(dn);
} else
TRACE("already created, refreshing config...");
- error = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUType"),
attributes, 0, &su->saAmfSUType);
+ error = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUType"),
attributes, 0, &temp_name);
osafassert(error == SA_AIS_OK);
+ su->saAmfSUType = Amf::to_string(&temp_name);
if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSURank"),
attributes, 0, &su->saAmfSURank) != SA_AIS_OK) {
/* Empty, assign default value (highest number => lowest rank)
*/
@@ -400,15 +410,31 @@
/* If 0 (zero), treat as lowest possible rank. Should be a positive
integer */
if (su->saAmfSURank == 0) {
su->saAmfSURank = ~0U;
- TRACE("'%s' saAmfSURank auto-changed to lowest",
su->name.value);
+ TRACE("'%s' saAmfSURank auto-changed to lowest",
su->name.c_str());
}
- (void)
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostedByNode"), attributes,
0, &su->saAmfSUHostedByNode);
+ error =
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostedByNode"), attributes,
0, &temp_name);
+ if (error == SA_AIS_OK) {
+ su->saAmfSUHostedByNode = Amf::to_string(&temp_name);
+ TRACE("saAmfSUHostedByNode set to %s",
su->saAmfSUHostedByNode.c_str());
+ } else {
+ su->saAmfSUHostedByNode = "";
+ TRACE("saAmfSUHostedByNode set to blank");
+ }
- (void)
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
attributes, 0, &su->saAmfSUHostNodeOrNodeGroup);
+
+ error =
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
attributes, 0, &temp_name);
+ if (error == SA_AIS_OK) {
+ su->saAmfSUHostNodeOrNodeGroup = Amf::to_string(&temp_name);
+ TRACE("saAmfSUHostNodeOrNodeGroup set to %s",
su->saAmfSUHostNodeOrNodeGroup.c_str());
+ } else {
+ su->saAmfSUHostNodeOrNodeGroup = "";
+ TRACE("saAmfSUHostNodeOrNodeGroup set to blank");
+ }
- if ((sut = sutype_db->find(Amf::to_string(&su->saAmfSUType))) ==
nullptr) {
- LOG_ER("saAmfSUType '%s' does not exist",
su->saAmfSUType.value);
+
+ if ((sut = sutype_db->find(su->saAmfSUType)) == nullptr) {
+ LOG_ER("saAmfSUType '%s' does not exist",
su->saAmfSUType.c_str());
goto done;
}
@@ -419,7 +445,8 @@
else
su->saAmfSUFailover_configured = true;
-
(void)immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUMaintenanceCampaign"),
attributes, 0, &su->saAmfSUMaintenanceCampaign);
+
(void)immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUMaintenanceCampaign"),
attributes, 0, &temp_name);
+ su->saAmfSUMaintenanceCampaign = Amf::to_string(&temp_name);
if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUAdminState"),
attributes, 0, &su->saAmfSUAdminState) != SA_AIS_OK)
su->saAmfSUAdminState = SA_AMF_ADMIN_UNLOCKED;
@@ -452,20 +479,19 @@
std::vector<AVD_SU*>::const_iterator su_iter;
std::vector<AVD_SU*> *su_list = nullptr;
- TRACE_ENTER2("'%s'", su->name.value);
+ TRACE_ENTER2("'%s'", su->name.c_str());
/* If node is configured in SU we are done */
- if (strstr((char *)su->saAmfSUHostNodeOrNodeGroup.value, "safAmfNode=")
!= nullptr) {
- node = avd_node_get(&su->saAmfSUHostNodeOrNodeGroup);
+ if (su->saAmfSUHostNodeOrNodeGroup.find("safAmfNode=") !=
std::string::npos) {
+ node = avd_node_get(su->saAmfSUHostNodeOrNodeGroup);
goto done;
}
/* A node group configured in the SU is prioritized before the same in
SG */
- if (strstr((char *)su->saAmfSUHostNodeOrNodeGroup.value,
"safAmfNodeGroup=") != nullptr)
- ng = avd_ng_get(&su->saAmfSUHostNodeOrNodeGroup);
- else {
- if (strstr((char *)su->sg_of_su->saAmfSGSuHostNodeGroup.value,
"safAmfNodeGroup=") != nullptr)
- ng = avd_ng_get(&su->sg_of_su->saAmfSGSuHostNodeGroup);
+ if (su->saAmfSUHostNodeOrNodeGroup.find("safAmfNodeGroup=") !=
std::string::npos) {
+ ng = avd_ng_get(su->saAmfSUHostNodeOrNodeGroup);
+ } else if
(su->sg_of_su->saAmfSGSuHostNodeGroup.find("safAmfNodeGroup=") !=
std::string::npos) {
+ ng = avd_ng_get(su->sg_of_su->saAmfSGSuHostNodeGroup);
}
osafassert(ng);
@@ -497,8 +523,8 @@
/* All nodes already have an SU mapped for the SG. Return a node in the
node group. */
node = avd_node_get(*ng->saAmfNGNodeList.begin());
done:
- memcpy(&su->saAmfSUHostedByNode, &node->name, sizeof(SaNameT));
- TRACE_LEAVE2("hosted by %s", node->name.value);
+ su->saAmfSUHostedByNode = node->name;
+ TRACE_LEAVE2("hosted by %s", node->name.c_str());
return node;
}
@@ -508,12 +534,12 @@
*/
static void su_add_to_model(AVD_SU *su)
{
- SaNameT dn;
+ std::string dn;
AVD_AVND *node;
bool new_su = false;
unsigned int rc;
- TRACE_ENTER2("%s", su->name.value);
+ TRACE_ENTER2("%s", su->name.c_str());
/* Check parent link to see if it has been added already */
if (su->sg_of_su != nullptr) {
@@ -522,37 +548,39 @@
}
/* Determine of the SU is added now, if so msg to amfnd needs to be
sent */
- if (su_db->find(Amf::to_string(&su->name)) == nullptr)
+ if (su_db->find(su->name) == nullptr)
new_su = true;
- avsv_sanamet_init(&su->name, &dn, "safSg");
+ avsv_sanamet_init(su->name, dn, "safSg");
/*
** Refresh the SG reference, by now it must exist.
** An SU can be created (on the standby) from the checkpointing logic.
** In that case the SG reference could now be nullptr.
*/
- su->sg_of_su = sg_db->find(Amf::to_string(&dn));
+ su->sg_of_su = sg_db->find(dn);
osafassert(su->sg_of_su);
- if (su_db->find(Amf::to_string(&su->name)) == nullptr) {
- rc = su_db->insert(Amf::to_string(&su->name), su);
+ if (su_db->find(su->name) == nullptr) {
+ TRACE("su_db inserted %s", su->name.c_str());
+ rc = su_db->insert(su->name, su);
osafassert(rc == NCSCC_RC_SUCCESS);
}
- su->su_type = sutype_db->find(Amf::to_string(&su->saAmfSUType));
+ su->su_type = sutype_db->find(su->saAmfSUType);
osafassert(su->su_type);
avd_sutype_add_su(su);
avd_sg_add_su(su);
if (!su->su_is_external) {
- if (su->saAmfSUHostedByNode.length == 0) {
+ if (su->saAmfSUHostedByNode.empty() == true) {
/* This node has not been mapped yet, do it */
su->su_on_node = map_su_to_node(su);
} else {
/* Already mapped, setup the node link */
- su->su_on_node = avd_node_get(&su->saAmfSUHostedByNode);
+ su->su_on_node = avd_node_get(su->saAmfSUHostedByNode);
}
+ osafassert(su->su_on_node != nullptr);
avd_node_add_su(su);
node = su->su_on_node;
} else {
@@ -587,7 +615,7 @@
avd_node_remove_su(su);
avd_sg_remove_su(su);
- LOG_ER("%s: avd_snd_su_msg failed %s",
__FUNCTION__, su->name.value);
+ LOG_ER("%s: avd_snd_su_msg failed %s",
__FUNCTION__, su->name.c_str());
goto done;
}
@@ -597,30 +625,32 @@
}
done:
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUOperState",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUOperState",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSUOperState);
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUPreInstantiable",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUPreInstantiable",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSUPreInstantiable);
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUHostedByNode",
- SA_IMM_ATTR_SANAMET, &su->saAmfSUHostedByNode);
+ const SaNameTWrapper hosted_by_node(su->saAmfSUHostedByNode);
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUHostedByNode",
+ SA_IMM_ATTR_SANAMET, (void*)static_cast<const
SaNameT*>(hosted_by_node));
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUPresenceState",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUPresenceState",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSUPresenceState);
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUReadinessState",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUReadinessState",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSuReadinessState);
TRACE_LEAVE();
}
-SaAisErrorT avd_su_config_get(const SaNameT *sg_name, AVD_SG *sg)
+SaAisErrorT avd_su_config_get(const std::string& sg_name, AVD_SG *sg)
{
SaAisErrorT error, rc;
SaImmSearchHandleT searchHandle;
SaImmSearchParametersT_2 searchParam;
- SaNameT su_name;
+ char* tmp_su_name;
+ std::string su_name;
const SaImmAttrValuesT_2 **attributes;
const char *className = "SaAmfSU";
AVD_SU *su;
@@ -641,7 +671,7 @@
searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
searchParam.searchOneAttr.attrValue = &className;
- error = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle, sg_name,
SA_IMM_SUBTREE,
+ error = immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle,
sg_name.c_str(), SA_IMM_SUBTREE,
SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_SOME_ATTR,
&searchParam,
configAttributes, &searchHandle);
@@ -650,21 +680,22 @@
goto done1;
}
- while ((rc = immutil_saImmOmSearchNext_2(searchHandle, &su_name,
+ while ((rc = immutil_saImmOmSearchNext_o2(searchHandle, &tmp_su_name,
(SaImmAttrValuesT_2 ***)&attributes))
== SA_AIS_OK) {
- if (!is_config_valid(&su_name, attributes, nullptr)) {
+ su_name = tmp_su_name;
+ if (!is_config_valid(su_name, attributes, nullptr)) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
- if ((su = su_create(&su_name, attributes)) == nullptr) {
+ if ((su = su_create(su_name, attributes)) == nullptr) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
su_add_to_model(su);
- if (avd_comp_config_get(&su_name, su) != SA_AIS_OK) {
+ if (avd_comp_config_get(su_name, su) != SA_AIS_OK) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
@@ -705,7 +736,7 @@
return;
osafassert(pres_state <= SA_AMF_PRESENCE_TERMINATION_FAILED);
- TRACE_ENTER2("'%s' %s => %s", name.value,
+ TRACE_ENTER2("'%s' %s => %s", name.c_str(),
avd_pres_state_name[saAmfSUPresenceState],
avd_pres_state_name[pres_state]);
@@ -717,13 +748,13 @@
pres_state == SA_AMF_PRESENCE_RESTARTING) {
saflog(LOG_NOTICE, amfSvcUsrName, "%s PresenceState %s => %s",
- name.value, avd_pres_state_name[old_state],
+ name.c_str(), avd_pres_state_name[old_state],
avd_pres_state_name[saAmfSUPresenceState]);
- avd_send_su_pres_state_chg_ntf(&name, old_state,
+ avd_send_su_pres_state_chg_ntf(name, old_state,
saAmfSUPresenceState);
}
- avd_saImmOiRtObjectUpdate(&name, "saAmfSUPresenceState",
+ avd_saImmOiRtObjectUpdate(name, "saAmfSUPresenceState",
SA_IMM_ATTR_SAUINT32T, &saAmfSUPresenceState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_PRES_STATE);
if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATED) &&
@@ -749,20 +780,20 @@
return;
osafassert(oper_state <= SA_AMF_OPERATIONAL_DISABLED);
- TRACE_ENTER2("'%s' %s => %s", name.value,
+ TRACE_ENTER2("'%s' %s => %s", name.c_str(),
avd_oper_state_name[saAmfSUOperState],
avd_oper_state_name[oper_state]);
- saflog(LOG_NOTICE, amfSvcUsrName, "%s OperState %s => %s", name.value,
+ saflog(LOG_NOTICE, amfSvcUsrName, "%s OperState %s => %s", name.c_str(),
avd_oper_state_name[saAmfSUOperState],
avd_oper_state_name[oper_state]);
saAmfSUOperState = oper_state;
- avd_send_oper_chg_ntf(&name, SA_AMF_NTFID_SU_OP_STATE, old_state,
+ avd_send_oper_chg_ntf(name, SA_AMF_NTFID_SU_OP_STATE, old_state,
saAmfSUOperState);
- avd_saImmOiRtObjectUpdate(&name, "saAmfSUOperState",
+ avd_saImmOiRtObjectUpdate(name, "saAmfSUOperState",
SA_IMM_ATTR_SAUINT32T, &saAmfSUOperState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_OPER_STATE);
@@ -779,15 +810,15 @@
return;
osafassert(readiness_state <= SA_AMF_READINESS_STOPPING);
- TRACE_ENTER2("'%s' %s", name.value,
+ TRACE_ENTER2("'%s' %s", name.c_str(),
avd_readiness_state_name[readiness_state]);
saflog(LOG_NOTICE, amfSvcUsrName, "%s ReadinessState %s => %s",
- name.value,
+ name.c_str(),
avd_readiness_state_name[saAmfSuReadinessState],
avd_readiness_state_name[readiness_state]);
saAmfSuReadinessState = readiness_state;
if (get_surestart() == false)
- avd_saImmOiRtObjectUpdate(&name, "saAmfSUReadinessState",
+ avd_saImmOiRtObjectUpdate(name, "saAmfSUReadinessState",
SA_IMM_ATTR_SAUINT32T, &saAmfSuReadinessState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
AVSV_CKPT_SU_READINESS_STATE);
@@ -815,16 +846,16 @@
SaAmfAdminStateT old_state = saAmfSUAdminState;
osafassert(admin_state <= SA_AMF_ADMIN_SHUTTING_DOWN);
- TRACE_ENTER2("'%s' %s => %s", name.value,
+ TRACE_ENTER2("'%s' %s => %s", name.c_str(),
avd_adm_state_name[old_state], avd_adm_state_name[admin_state]);
- saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s", name.value,
+ saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s", name.c_str(),
avd_adm_state_name[saAmfSUAdminState],
avd_adm_state_name[admin_state]);
saAmfSUAdminState = admin_state;
- avd_saImmOiRtObjectUpdate(&name, "saAmfSUAdminState",
+ avd_saImmOiRtObjectUpdate(name, "saAmfSUAdminState",
SA_IMM_ATTR_SAUINT32T, &saAmfSUAdminState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
AVSV_CKPT_SU_ADMIN_STATE);
- avd_send_admin_state_chg_ntf(&name, SA_AMF_NTFID_SU_ADMIN_STATE,
+ avd_send_admin_state_chg_ntf(name, SA_AMF_NTFID_SU_ADMIN_STATE,
old_state, saAmfSUAdminState);
TRACE_LEAVE();
}
@@ -832,7 +863,7 @@
void AVD_SU::unlock(SaImmOiHandleT immoi_handle, SaInvocationT invocation) {
bool is_oper_successful = true;
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
set_admin_state(SA_AMF_ADMIN_UNLOCKED);
/* Return as cluster timer haven't expired.*/
@@ -854,7 +885,7 @@
avd_sg_app_su_inst_func(avd_cb, sg_of_su);
} else
- LOG_IN("SU '%s' is not in service", name.value);
+ LOG_IN("SU '%s' is not in service", name.c_str());
avd_sg_app_su_inst_func(avd_cb, sg_of_su);
if (is_oper_successful == true) {
@@ -881,7 +912,7 @@
SaAmfAdminStateT back_admin_state;
bool is_oper_successful = true;
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
/* Change the admin state to lock and return as cluster timer haven't
expired.*/
if (avd_cb->init_state == AVD_INIT_DONE) {
set_readiness_state(SA_AMF_READINESS_OUT_OF_SERVICE);
@@ -929,7 +960,7 @@
}
void AVD_SU::shutdown(SaImmOiHandleT immoi_handle, SaInvocationT invocation) {
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
lock(immoi_handle, invocation, SA_AMF_ADMIN_SHUTTING_DOWN);
TRACE_LEAVE();
}
@@ -938,7 +969,7 @@
SaInvocationT invocation) {
AVD_AVND *node = get_node_ptr();
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
/* For non-preinstantiable SU lock-inst is same as lock */
if (saAmfSUPreInstantiable == false) {
@@ -949,7 +980,7 @@
if (list_of_susi != nullptr) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "SIs still assigned to this SU '%s'", name.value);
+ "SIs still assigned to this SU '%s'", name.c_str());
goto done;
}
@@ -957,7 +988,7 @@
(saAmfSUPresenceState == SA_AMF_PRESENCE_TERMINATING) ||
(saAmfSUPresenceState == SA_AMF_PRESENCE_RESTARTING)) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "'%s' presence state is '%u'", name.value,
saAmfSUPresenceState);
+ "'%s' presence state is '%u'", name.c_str(),
saAmfSUPresenceState);
goto done;
}
@@ -999,11 +1030,11 @@
SaInvocationT invocation) {
AVD_AVND *node = get_node_ptr();
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
if (list_of_comp.empty() == true) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
- "There is no component configured for SU
'%s'.", name.value);
+ "There is no component configured for SU
'%s'.", name.c_str());
goto done;
}
@@ -1019,7 +1050,7 @@
if (saAmfSUPresenceState != SA_AMF_PRESENCE_UNINSTANTIATED) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
- "Can't instantiate '%s', whose presence state is '%u'",
name.value,
+ "Can't instantiate '%s', whose presence state is '%u'",
name.c_str(),
saAmfSUPresenceState);
goto done;
}
@@ -1058,11 +1089,11 @@
void AVD_SU::repaired(SaImmOiHandleT immoi_handle,
SaInvocationT invocation) {
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
if (saAmfSUOperState == SA_AMF_OPERATIONAL_ENABLED) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "Admin repair request for '%s', op state already
enabled", name.value);
+ "Admin repair request for '%s', op state already
enabled", name.c_str());
goto done;
}
@@ -1071,19 +1102,19 @@
/* This means that node on which this su is hosted, is absent.
*/
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"Admin repair request for '%s', hosting node'%s' is
absent",
- name.value, su_on_node->name.value);
+ name.c_str(), su_on_node->name.c_str());
goto done;
}
/* forward the admin op req to the node director */
- if (avd_admin_op_msg_snd(&name, AVSV_SA_AMF_SU, SA_AMF_ADMIN_REPAIRED,
+ if (avd_admin_op_msg_snd(name, AVSV_SA_AMF_SU, SA_AMF_ADMIN_REPAIRED,
su_on_node) == NCSCC_RC_SUCCESS) {
pend_cbk.admin_oper = SA_AMF_ADMIN_REPAIRED;
pend_cbk.invocation = invocation;
}
else {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TIMEOUT, nullptr,
- "Admin op request send failed '%s'", name.value);
+ "Admin op request send failed '%s'", name.c_str());
}
done:
@@ -1099,16 +1130,16 @@
*/
void AVD_SU::restart(SaImmOiHandleT immoi_handle,
SaInvocationT invocation) {
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
pend_cbk.admin_oper = SA_AMF_ADMIN_RESTART;
pend_cbk.invocation = invocation;
if ((su_all_comps_restartable() == true) ||
(is_any_non_restartable_comp_assigned() == false)) {
- if (avd_admin_op_msg_snd(&name, AVSV_SA_AMF_SU,
SA_AMF_ADMIN_RESTART,
+ if (avd_admin_op_msg_snd(name, AVSV_SA_AMF_SU,
SA_AMF_ADMIN_RESTART,
su_on_node) != NCSCC_RC_SUCCESS) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TIMEOUT, nullptr,
- "Admin op request send failed '%s'",
name.value);
+ "Admin op request send failed '%s'",
name.c_str());
pend_cbk.invocation = 0;
pend_cbk.admin_oper =
static_cast<SaAmfAdminOperationIdT>(0);
}
@@ -1169,7 +1200,7 @@
/* su's sg_fsm_state is checked below, just check other su. */
if ((su != su_ptr) && (su_ptr->pend_cbk.invocation != 0)) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "Admin operation is already going on
(su'%s')", su_ptr->name.value);
+ "Admin operation is already going on
(su'%s')", su_ptr->name.c_str());
goto done;
}
}
@@ -1177,7 +1208,7 @@
/* Avoid if any single Csi assignment is undergoing on SG. */
if (csi_assignment_validate(su->sg_of_su) == true) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "Single Csi assignment undergoing on (sg'%s')",
su->sg_of_su->name.value);
+ "Single Csi assignment undergoing on (sg'%s')",
su->sg_of_su->name.c_str());
goto done;
}
@@ -1194,14 +1225,14 @@
and then allow lock operation to proceed. */
report_admin_op_error(immoi_handle,
su->pend_cbk.invocation,
SA_AIS_ERR_INTERRUPT, &su->pend_cbk,
- "SU lock has been issued '%s'",
su->name.value);
+ "SU lock has been issued '%s'",
su->name.c_str());
}
}
/* if Tolerance timer is running for any SI's withing this SG, then
return SA_AIS_ERR_TRY_AGAIN */
if (sg_is_tolerance_timer_running_for_any_si(su->sg_of_su)) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
"Tolerance timer is running for some of the
SI's in the SG '%s', "
- "so differing admin
opr",su->sg_of_su->name.value);
+ "so differing admin
opr",su->sg_of_su->name.c_str());
goto done;
}
@@ -1241,7 +1272,7 @@
if (su->sg_of_su->sg_ncs_spec == true) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"Not allowed on middleware SU: %s,
op_id: %llu",
- su->name.value, op_id);
+ su->name.c_str(), op_id);
goto done;
}
if (su->saAmfSUPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED)
{
@@ -1263,15 +1294,15 @@
SA_AIS_ERR_TRY_AGAIN, nullptr,
"Some entity is unstable,
Operation cannot "
"be performed on '%s'"
- "Check syslog for entity
details", su->name.value);
+ "Check syslog for entity
details", su->name.c_str());
goto done;
}
}
node = su->get_node_ptr();
if (node->admin_node_pend_cbk.admin_oper != 0) {
report_admin_op_error(immoi_handle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "Node'%s' hosting SU'%s', undergoing admin
operation'%u'", node->name.value,
- su->name.value,
node->admin_node_pend_cbk.admin_oper);
+ "Node'%s' hosting SU'%s', undergoing admin
operation'%u'", node->name.c_str(),
+ su->name.c_str(),
node->admin_node_pend_cbk.admin_oper);
goto done;
}
@@ -1312,7 +1343,8 @@
static SaAisErrorT su_rt_attr_cb(SaImmOiHandleT immOiHandle,
const SaNameT *objectName, const SaImmAttrNameT *attributeNames)
{
- AVD_SU *su = su_db->find(Amf::to_string(objectName));
+ const std::string obj_name(Amf::to_string(objectName));
+ AVD_SU *su = su_db->find(obj_name);
SaImmAttrNameT attributeName;
int i = 0;
SaAisErrorT rc = SA_AIS_OK;
@@ -1328,13 +1360,13 @@
attributeName, SA_IMM_ATTR_SAUINT32T,
&saAmfSUAssignedSIs);
#endif
} else if (!strcmp("saAmfSUNumCurrActiveSIs", attributeName)) {
- rc = avd_saImmOiRtObjectUpdate_sync(objectName,
attributeName,
+ rc = avd_saImmOiRtObjectUpdate_sync(obj_name,
attributeName,
SA_IMM_ATTR_SAUINT32T,
&su->saAmfSUNumCurrActiveSIs);
} else if (!strcmp("saAmfSUNumCurrStandbySIs", attributeName)) {
- rc = avd_saImmOiRtObjectUpdate_sync(objectName,
attributeName,
+ rc = avd_saImmOiRtObjectUpdate_sync(obj_name,
attributeName,
SA_IMM_ATTR_SAUINT32T,
&su->saAmfSUNumCurrStandbySIs);
} else if (!strcmp("saAmfSURestartCount", attributeName)) {
- rc = avd_saImmOiRtObjectUpdate_sync(objectName,
attributeName,
+ rc = avd_saImmOiRtObjectUpdate_sync(obj_name,
attributeName,
SA_IMM_ATTR_SAUINT32T,
&su->saAmfSURestartCount);
} else {
LOG_ER("Ignoring unknown attribute '%s'",
attributeName);
@@ -1393,12 +1425,12 @@
*/
if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE) {
rc = SA_AIS_ERR_TRY_AGAIN;
- report_ccb_validation_error(opdata, "'%s' is
not stable",su->sg_of_su->name.value);
+ report_ccb_validation_error(opdata, "'%s' is
not stable",su->sg_of_su->name.c_str());
goto done;
}
if (su_failover > SA_TRUE) {
- report_ccb_validation_error(opdata, "Invalid
saAmfSUFailover SU:'%s'", su->name.value);
+ report_ccb_validation_error(opdata, "Invalid
saAmfSUFailover SU:'%s'", su->name.c_str());
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
@@ -1407,9 +1439,9 @@
continue;
AVD_SU *su =
su_db->find(Amf::to_string(&opdata->objectName));
- if (su->saAmfSUMaintenanceCampaign.length > 0) {
+ if (su->saAmfSUMaintenanceCampaign.length() > 0) {
report_ccb_validation_error(opdata,
"saAmfSUMaintenanceCampaign already set for %s",
- su->name.value);
+ su->name.c_str());
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
@@ -1511,48 +1543,50 @@
* @param opdata
* @return true if so
*/
-static bool node_admin_state_is_valid_for_su_create(const SaNameT *su_dn,
+static bool node_admin_state_is_valid_for_su_create(const std::string& su_dn,
const SaImmAttrValuesT_2 **attributes,
const CcbUtilOperationData_t *opdata)
{
- TRACE_ENTER2("%s", su_dn->value);
- SaNameT node_name = {0};
- (void) immutil_getAttr("saAmfSUHostNodeOrNodeGroup", attributes, 0,
&node_name);
- if (node_name.length == 0) {
+ TRACE_ENTER2("%s", su_dn.c_str());
+ SaNameT tmp_node_name = {0};
+ (void) immutil_getAttr("saAmfSUHostNodeOrNodeGroup", attributes, 0,
&tmp_node_name);
+ const std::string node_name(Amf::to_string(&tmp_node_name));
+
+ if (node_name.empty() == true) {
// attribute empty but this is probably not an error, just trace
TRACE("Create '%s', saAmfSUHostNodeOrNodeGroup not configured",
- su_dn->value);
+ su_dn.c_str());
TRACE_LEAVE();
return false;
}
- if (strncmp((char*)node_name.value, "safAmfNode=", 11) != 0) {
+ if (node_name.compare(0, 11, "safAmfNode=") != 0) {
// attribute non empty but does not contain a node DN, not OK
amflog(SA_LOG_SEV_NOTICE,
"Create '%s', saAmfSUHostNodeOrNodeGroup not configured
with a node (%s)",
- su_dn->value, node_name.value);
+ su_dn.c_str(), node_name.c_str());
TRACE_LEAVE();
return false;
}
- const AVD_AVND *node = avd_node_get(&node_name);
+ const AVD_AVND *node = avd_node_get(node_name);
if (node == nullptr) {
- if (opdata == nullptr ||
ccbutil_getCcbOpDataByDN(opdata->ccbId, &node_name) == nullptr) {
+ if (opdata == nullptr ||
ccbutil_getCcbOpDataByDN(opdata->ccbId, &tmp_node_name) == nullptr) {
// node must exist in the current model, or created in
the same CCB
amflog(SA_LOG_SEV_WARNING,
"Create '%s', configured with a non existing
node (%s)",
- su_dn->value, node_name.value);
+ su_dn.c_str(), node_name.c_str());
TRACE_LEAVE();
return false;
} else {
// check admin state of the new node
SaAmfAdminStateT admin_state;
- const CcbUtilOperationData_t *t_opdata =
ccbutil_getCcbOpDataByDN(opdata->ccbId, &node_name);
+ const CcbUtilOperationData_t *t_opdata =
ccbutil_getCcbOpDataByDN(opdata->ccbId, &tmp_node_name);
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeAdminState"),
t_opdata->param.create.attrValues, 0,
&admin_state);
if (admin_state != SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
TRACE("Create '%s', configured node '%s' is not
locked instantiation",
- su_dn->value, node_name.value);
+ su_dn.c_str(), node_name.c_str());
TRACE_LEAVE();
return false;
}
@@ -1562,7 +1596,7 @@
// configured with a node DN, accept only locked-in state
if (node->saAmfNodeAdminState !=
SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
TRACE("Create '%s', configured node '%s' is not locked
instantiation",
- su_dn->value, node_name.value);
+ su_dn.c_str(), node_name.c_str());
TRACE_LEAVE();
return false;
}
@@ -1581,21 +1615,22 @@
* @param opdata
* @return true if so
*/
-static bool sg_admin_state_is_valid_for_su_create(const SaNameT *su_dn,
+static bool sg_admin_state_is_valid_for_su_create(const std::string& su_dn,
const SaImmAttrValuesT_2 **attributes,
const CcbUtilOperationData_t *opdata)
{
- SaNameT sg_name = {0};
+ std::string sg_name;
SaAmfAdminStateT admin_state;
- avsv_sanamet_init(su_dn, &sg_name, "safSg");
- const AVD_SG *sg = sg_db->find(Amf::to_string(&sg_name));
+ avsv_sanamet_init(su_dn, sg_name, "safSg");
+ const AVD_SG *sg = sg_db->find(sg_name);
if (sg != nullptr) {
admin_state = sg->saAmfSGAdminState;
} else {
+ const SaNameTWrapper tmp_sg_name(sg_name);
// SG does not exist in current model, check CCB
const CcbUtilOperationData_t *tmp =
- ccbutil_getCcbOpDataByDN(opdata->ccbId, &sg_name);
+ ccbutil_getCcbOpDataByDN(opdata->ccbId, tmp_sg_name);
osafassert(tmp != nullptr); // already validated
(void) immutil_getAttr("saAmfSGAdminState",
@@ -1604,7 +1639,7 @@
if (admin_state != SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
TRACE("'%s' created UNLOCKED but '%s' is not locked
instantiation",
- su_dn->value, sg_name.value);
+ su_dn.c_str(), sg_name.c_str());
return false;
}
@@ -1619,7 +1654,7 @@
*
* @return bool
*/
-static bool is_ccb_create_config_valid(const SaNameT *dn,
+static bool is_ccb_create_config_valid(const std::string& dn,
const SaImmAttrValuesT_2 **attributes,
const CcbUtilOperationData_t *opdata)
{
@@ -1629,7 +1664,7 @@
assert(opdata != nullptr); // must be called in CCB context
bool is_mw_su = false;
- if (strstr((char *)dn->value, "safApp=OpenSAF") != nullptr)
+ if (strstr((char *)dn.c_str(), "safApp=OpenSAF") != nullptr)
is_mw_su = true;
rc = immutil_getAttr("saAmfSUAdminState", attributes, 0, &admstate);
@@ -1661,7 +1696,7 @@
if (admstate != SA_AMF_ADMIN_UNLOCKED) {
report_ccb_validation_error(opdata,
"'%s' created with invalid saAmfSUAdminState (%u)",
- dn->value, admstate);
+ dn.c_str(), admstate);
return false;
}
@@ -1672,7 +1707,7 @@
return true;
amflog(SA_LOG_SEV_NOTICE, "CCB %d creation of '%s' failed",
- opdata->ccbId, dn->value);
+ opdata->ccbId, dn.c_str());
report_ccb_validation_error(opdata,
"SG or node not configured properly to allow creation of
UNLOCKED SU");
@@ -1682,13 +1717,13 @@
static SaAisErrorT su_ccb_completed_cb(CcbUtilOperationData_t *opdata)
{
SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
-
- TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId,
opdata->objectName.value);
+ const std::string obj_name(Amf::to_string(&opdata->objectName));
+ TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, obj_name.c_str());
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata) &&
- is_ccb_create_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(obj_name, opdata->param.create.attrValues,
opdata) &&
+ is_ccb_create_config_valid(obj_name,
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
@@ -1755,21 +1790,22 @@
}
} else if (!strcmp(attr_mod->modAttr.attrName,
"saAmfSUMaintenanceCampaign")) {
if (value_is_deleted) {
- su->saAmfSUMaintenanceCampaign.length = 0;
- TRACE("saAmfSUMaintenanceCampaign cleared for
'%s'", su->name.value);
+ su->saAmfSUMaintenanceCampaign = "";
+ TRACE("saAmfSUMaintenanceCampaign cleared for
'%s'", su->name.c_str());
} else {
-
osafassert(su->saAmfSUMaintenanceCampaign.length == 0);
- su->saAmfSUMaintenanceCampaign = *((SaNameT
*)attr_mod->modAttr.attrValues[0]);
+
osafassert(su->saAmfSUMaintenanceCampaign.empty() == true);
+ su->saAmfSUMaintenanceCampaign = Amf::to_string(
+
reinterpret_cast<SaNameT*>(attr_mod->modAttr.attrValues[0]));
TRACE("saAmfSUMaintenanceCampaign set to '%s'
for '%s'",
- su->saAmfSUMaintenanceCampaign.value,
su->name.value);
+
su->saAmfSUMaintenanceCampaign.c_str(), su->name.c_str());
}
} else if (!strcmp(attr_mod->modAttr.attrName, "saAmfSUType")) {
AVD_SUTYPE *sut;
SaNameT sutype_name = *(SaNameT*)
attr_mod->modAttr.attrValues[0];
- TRACE("Modified saAmfSUType from '%s' to '%s'",
su->saAmfSUType.value, sutype_name.value);
+ TRACE("Modified saAmfSUType from '%s' to '%s'",
su->saAmfSUType.c_str(), sutype_name.value);
sut = sutype_db->find(Amf::to_string(&sutype_name));
avd_sutype_remove_su(su);
- su->saAmfSUType = sutype_name;
+ su->saAmfSUType = Amf::to_string(&sutype_name);
su->su_type = sut;
avd_sutype_add_su(su);
if (su->saAmfSUPreInstantiable) {
@@ -1800,7 +1836,7 @@
AVSV_PARAM_INFO param;
AVD_SG *sg = su->sg_of_su;
- TRACE_ENTER2("'%s'", su->name.value);
+ TRACE_ENTER2("'%s'", su->name.c_str());
if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
su->remove_from_model();
@@ -1816,7 +1852,8 @@
memset(((uint8_t *)¶m), '\0', sizeof(AVSV_PARAM_INFO));
param.class_id = AVSV_SA_AMF_SU;
param.act = AVSV_OBJ_OPR_DEL;
- param.name = su->name;
+ const SaNameTWrapper tmp_su_name(su->name);
+ param.name = tmp_su_name;
avd_snd_op_req_msg(avd_cb, su_node_ptr, ¶m);
}
@@ -1857,7 +1894,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- su = su_create(&opdata->objectName,
opdata->param.create.attrValues);
+ su = su_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(su);
su_add_to_model(su);
break;
@@ -1878,7 +1915,7 @@
void AVD_SU::inc_curr_act_si() {
saAmfSUNumCurrActiveSIs++;
osafassert(saAmfSUNumCurrActiveSIs <=
sg_of_su->saAmfSGMaxActiveSIsperSU);
- TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.value,
+ TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.c_str(),
saAmfSUNumCurrActiveSIs);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
AVSV_CKPT_SU_SI_CURR_ACTIVE);
}
@@ -1886,7 +1923,7 @@
void AVD_SU::dec_curr_act_si() {
osafassert(saAmfSUNumCurrActiveSIs > 0);
saAmfSUNumCurrActiveSIs--;
- TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.value,
+ TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.c_str(),
saAmfSUNumCurrActiveSIs);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
AVSV_CKPT_SU_SI_CURR_ACTIVE);
}
@@ -1894,7 +1931,7 @@
void AVD_SU::inc_curr_stdby_si() {
saAmfSUNumCurrStandbySIs++;
osafassert(saAmfSUNumCurrStandbySIs <=
sg_of_su->saAmfSGMaxStandbySIsperSU);
- TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.value,
+ TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.c_str(),
saAmfSUNumCurrStandbySIs);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
AVSV_CKPT_SU_SI_CURR_STBY);
}
@@ -1902,7 +1939,7 @@
void AVD_SU::dec_curr_stdby_si() {
osafassert(saAmfSUNumCurrStandbySIs > 0);
saAmfSUNumCurrStandbySIs--;
- TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.value,
+ TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.c_str(),
saAmfSUNumCurrStandbySIs);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
AVSV_CKPT_SU_SI_CURR_STBY);
}
@@ -1933,7 +1970,8 @@
param.class_id = AVSV_SA_AMF_SU;
param.act = AVSV_OBJ_OPR_MOD;
- param.name = name;
+ const SaNameTWrapper temp_name(name);
+ param.name = temp_name;
switch (attrib_id) {
case saAmfSUFailOver_ID:
@@ -1955,7 +1993,7 @@
(su_node_ptr->node_state == AVD_AVND_STATE_NO_CONFIG) ||
(su_node_ptr->node_state == AVD_AVND_STATE_NCS_INIT))) {
if (avd_snd_op_req_msg(avd_cb, su_node_ptr, ¶m) !=
NCSCC_RC_SUCCESS) {
- LOG_ER("%s:failed for %s",__FUNCTION__,
su_node_ptr->name.value);
+ LOG_ER("%s:failed for %s",__FUNCTION__,
su_node_ptr->name.c_str());
}
}
@@ -1965,7 +2003,7 @@
void AVD_SU::set_su_failover(bool value) {
saAmfSUFailover = value;
TRACE("Modified saAmfSUFailover to '%u' for '%s'",
- saAmfSUFailover, name.value);
+ saAmfSUFailover, name.c_str());
send_attribute_update(saAmfSUFailOver_ID);
}
@@ -1974,7 +2012,7 @@
*
*/
void AVD_SU::delete_all_susis(void) {
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
while (list_of_susi != nullptr) {
avd_compcsi_delete(avd_cb, list_of_susi, false);
@@ -1991,7 +2029,7 @@
void AVD_SU::set_all_susis_assigned_quiesced(void) {
AVD_SU_SI_REL *susi = list_of_susi;
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
for (; susi != nullptr; susi = susi->su_next) {
if (susi->fsm != AVD_SU_SI_STATE_UNASGN) {
@@ -2011,7 +2049,7 @@
void AVD_SU::set_all_susis_assigned(void) {
AVD_SU_SI_REL *susi = list_of_susi;
- TRACE_ENTER2("'%s'", name.value);
+ TRACE_ENTER2("'%s'", name.c_str());
for (; susi != nullptr; susi = susi->su_next) {
if (susi->fsm != AVD_SU_SI_STATE_UNASGN) {
@@ -2026,13 +2064,13 @@
void AVD_SU::set_term_state(bool state) {
term_state = state;
- TRACE("%s term_state %u", name.value, term_state);
+ TRACE("%s term_state %u", name.c_str(), term_state);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_TERM_STATE);
}
void AVD_SU::set_su_switch(SaToggleState state) {
su_switch = state;
- TRACE("%s su_switch %u", name.value, su_switch);
+ TRACE("%s su_switch %u", name.c_str(), su_switch);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_SWITCH);
}
@@ -2102,9 +2140,9 @@
void AVD_SU::set_saAmfSUPreInstantiable(bool value) {
saAmfSUPreInstantiable = static_cast<SaBoolT>(value);
- avd_saImmOiRtObjectUpdate(&name, "saAmfSUPreInstantiable",
+ avd_saImmOiRtObjectUpdate(name, "saAmfSUPreInstantiable",
SA_IMM_ATTR_SAUINT32T, &saAmfSUPreInstantiable);
- TRACE("%s saAmfSUPreInstantiable %u", name.value, value);
+ TRACE("%s saAmfSUPreInstantiable %u", name.c_str(), value);
}
/**
@@ -2119,13 +2157,13 @@
* @param cstype
* @return
*/
-AVD_COMP *AVD_SU::find_unassigned_comp_that_provides_cstype(const SaNameT
*cstype) {
+AVD_COMP *AVD_SU::find_unassigned_comp_that_provides_cstype(const std::string&
cstype) {
AVD_COMP *l_comp = nullptr;
auto iter = list_of_comp.begin();
for (; iter != list_of_comp.end(); ++iter) {
l_comp = *iter;
bool npi_is_assigned = false;
- AVD_COMP_TYPE *comptype =
comptype_db->find(Amf::to_string(&l_comp->saAmfCompType));
+ AVD_COMP_TYPE *comptype =
comptype_db->find(l_comp->saAmfCompType);
osafassert(comptype);
if ((comptype->saAmfCtCompCategory == SA_AMF_COMP_LOCAL) &&
is_comp_assigned_any_csi(l_comp))
npi_is_assigned = true;
@@ -2260,20 +2298,20 @@
SaAisErrorT rc = SA_AIS_OK;
if (pend_cbk.admin_oper != 0) {
- LOG_NO("'%s' undergoing admin operation", name.value);
+ LOG_NO("'%s' undergoing admin operation", name.c_str());
rc = SA_AIS_ERR_TRY_AGAIN;
goto done;
}
if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATING) ||
(saAmfSUPresenceState == SA_AMF_PRESENCE_TERMINATING) ||
(saAmfSUPresenceState == SA_AMF_PRESENCE_RESTARTING)) {
- LOG_NO("'%s' has presence state '%u'",
name.value,saAmfSUPresenceState);
+ LOG_NO("'%s' has presence state '%u'",
name.c_str(),saAmfSUPresenceState);
rc = SA_AIS_ERR_TRY_AGAIN;
goto done;
}
if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATION_FAILED) ||
(saAmfSUPresenceState ==
SA_AMF_PRESENCE_TERMINATION_FAILED)) {
- LOG_NO("'%s' is in repair pending state", name.value);
+ LOG_NO("'%s' is in repair pending state", name.c_str());
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
@@ -2348,7 +2386,7 @@
bool AVD_SU::all_pi_comps_restartable()
{
for (const auto& comp : list_of_comp) {
- AVD_COMP_TYPE *comptype =
comptype_db->find(Amf::to_string(&comp->saAmfCompType));
+ AVD_COMP_TYPE *comptype =
comptype_db->find(comp->saAmfCompType);
if ((comp->comp_info.comp_restart == true) &&
((comptype->saAmfCtCompCategory ==
SA_AMF_COMP_SA_AWARE) ||
(IS_COMP_PROXIED_PI(comptype->saAmfCtCompCategory))))
@@ -2365,7 +2403,7 @@
bool AVD_SU::all_pi_comps_nonrestartable()
{
for (const auto& comp : list_of_comp) {
- AVD_COMP_TYPE *comptype =
comptype_db->find(Amf::to_string(&comp->saAmfCompType));
+ AVD_COMP_TYPE *comptype =
comptype_db->find(comp->saAmfCompType);
if ((comp->comp_info.comp_restart == false) &&
((comptype->saAmfCtCompCategory ==
SA_AMF_COMP_SA_AWARE) ||
(IS_COMP_PROXIED_PI(comptype->saAmfCtCompCategory))))
@@ -2396,7 +2434,7 @@
void AVD_SU::set_surestart(bool value)
{
surestart = value;
- TRACE("surestart flag set to '%u' for '%s'",surestart, name.value);
+ TRACE("surestart flag set to '%u' for '%s'",surestart, name.c_str());
}
bool AVD_SU::get_surestart() const
diff --git a/osaf/services/saf/amf/amfd/sutcomptype.cc
b/osaf/services/saf/amf/amfd/sutcomptype.cc
--- a/osaf/services/saf/amf/amfd/sutcomptype.cc
+++ b/osaf/services/saf/amf/amfd/sutcomptype.cc
@@ -28,20 +28,19 @@
static void sutcomptype_db_add(AVD_SUTCOMP_TYPE *sutcomptype)
{
- unsigned int rc =
sutcomptype_db->insert(Amf::to_string(&sutcomptype->name),sutcomptype);
+ unsigned int rc = sutcomptype_db->insert(sutcomptype->name,sutcomptype);
osafassert(rc == NCSCC_RC_SUCCESS);
}
-static AVD_SUTCOMP_TYPE *sutcomptype_create(SaNameT *dn, const
SaImmAttrValuesT_2 **attributes)
+static AVD_SUTCOMP_TYPE *sutcomptype_create(const std::string& dn, const
SaImmAttrValuesT_2 **attributes)
{
AVD_SUTCOMP_TYPE *sutcomptype;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
sutcomptype = new AVD_SUTCOMP_TYPE();
- memcpy(sutcomptype->name.value, dn->value, dn->length);
- sutcomptype->name.length = dn->length;
+ sutcomptype->name = dn;
if
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutMaxNumComponents"),
attributes, 0, &sutcomptype->saAmfSutMaxNumComponents) != SA_AIS_OK)
sutcomptype->saAmfSutMaxNumComponents = -1; /* no limit */
@@ -55,17 +54,17 @@
static void sutcomptype_delete(AVD_SUTCOMP_TYPE *sutcomptype)
{
- sutcomptype_db->erase(Amf::to_string(&sutcomptype->name));
+ sutcomptype_db->erase(sutcomptype->name);
delete sutcomptype;
}
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
{
// TODO
return 1;
}
-SaAisErrorT avd_sutcomptype_config_get(SaNameT *sutype_name, AVD_SUTYPE *sut)
+SaAisErrorT avd_sutcomptype_config_get(const std::string& sutype_name,
AVD_SUTYPE *sut)
{
AVD_SUTCOMP_TYPE *sutcomptype;
SaAisErrorT error;
@@ -81,7 +80,7 @@
searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
searchParam.searchOneAttr.attrValue = &className;
- error = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle,
sutype_name, SA_IMM_SUBTREE,
+ error = immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle,
sutype_name.c_str(), SA_IMM_SUBTREE,
SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_ALL_ATTR,
&searchParam,
nullptr, &searchHandle);
@@ -91,10 +90,10 @@
}
while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
(SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
- if (!is_config_valid(&dn, attributes, nullptr))
+ if (!is_config_valid(Amf::to_string(&dn), attributes, nullptr))
goto done2;
if ((sutcomptype = sutcomptype_db->find(Amf::to_string(&dn)))
== nullptr) {
- if ((sutcomptype = sutcomptype_create(&dn, attributes))
== nullptr) {
+ if ((sutcomptype =
sutcomptype_create(Amf::to_string(&dn), attributes)) == nullptr) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
@@ -121,7 +120,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
@@ -150,7 +149,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- sutcomptype = sutcomptype_create(&opdata->objectName,
opdata->param.create.attrValues);
+ sutcomptype =
sutcomptype_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(sutcomptype);
sutcomptype_db_add(sutcomptype);
break;
diff --git a/osaf/services/saf/amf/amfd/sutype.cc
b/osaf/services/saf/amf/amfd/sutype.cc
--- a/osaf/services/saf/amf/amfd/sutype.cc
+++ b/osaf/services/saf/amf/amfd/sutype.cc
@@ -32,12 +32,12 @@
AmfDb<std::string, AVD_SUTYPE> *sutype_db = nullptr;
//
-AVD_SUTYPE::AVD_SUTYPE(const SaNameT *dn) {
- memcpy(&name.value, dn->value, dn->length);
- name.length = dn->length;
+AVD_SUTYPE::AVD_SUTYPE(const std::string& dn) :
+ name(dn)
+{
}
-static AVD_SUTYPE *sutype_new(const SaNameT *dn)
+static AVD_SUTYPE *sutype_new(const std::string& dn)
{
AVD_SUTYPE *sutype = new AVD_SUTYPE(dn);
@@ -47,18 +47,17 @@
static void sutype_delete(AVD_SUTYPE **sutype)
{
osafassert(true == (*sutype)->list_of_su.empty());
- delete [] (*sutype)->saAmfSutProvidesSvcTypes;
delete *sutype;
*sutype = nullptr;
}
static void sutype_db_add(AVD_SUTYPE *sutype)
{
- unsigned int rc =
sutype_db->insert(Amf::to_string(&sutype->name),sutype);
+ unsigned int rc = sutype_db->insert(sutype->name,sutype);
osafassert(rc == NCSCC_RC_SUCCESS);
}
-static AVD_SUTYPE *sutype_create(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes)
+static AVD_SUTYPE *sutype_create(const std::string& dn, const
SaImmAttrValuesT_2 **attributes)
{
const SaImmAttrValuesT_2 *attr;
AVD_SUTYPE *sutype;
@@ -66,7 +65,7 @@
unsigned i = 0;
SaAisErrorT error;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
if ((sutype = sutype_new(dn)) == nullptr) {
LOG_ER("avd_sutype_new failed");
@@ -87,14 +86,16 @@
osafassert(attr->attrValuesNumber > 0);
sutype->number_svc_types = attr->attrValuesNumber;
- sutype->saAmfSutProvidesSvcTypes = new
SaNameT[sutype->number_svc_types];
+ osafassert(sutype->saAmfSutProvidesSvcTypes.empty() == true);
for (i = 0; i < sutype->number_svc_types; i++) {
- if
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutProvidesSvcTypes"),
attributes, i, &sutype->saAmfSutProvidesSvcTypes[i]) != SA_AIS_OK) {
- LOG_ER("Get saAmfSutProvidesSvcTypes FAILED for '%s'",
dn->value);
+ SaNameT svc_type;
+ if
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutProvidesSvcTypes"),
attributes, i, &svc_type) != SA_AIS_OK) {
+ LOG_ER("Get saAmfSutProvidesSvcTypes FAILED for '%s'",
dn.c_str());
osafassert(0);
}
- TRACE("%s", sutype->saAmfSutProvidesSvcTypes[i].value);
+
sutype->saAmfSutProvidesSvcTypes.push_back(Amf::to_string(&svc_type));
+ TRACE("%s", sutype->saAmfSutProvidesSvcTypes.back().c_str());
}
rc = 0;
@@ -107,23 +108,21 @@
return sutype;
}
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
{
SaAisErrorT rc;
SaBoolT abool;
/* int i = 0; */
- char *parent;
+ std::string::size_type pos;
- if ((parent = strchr((char*)dn->value, ',')) == nullptr) {
- report_ccb_validation_error(opdata, "No parent to '%s' ",
dn->value);
+ if ((pos = dn.find(',')) == std::string::npos) {
+ report_ccb_validation_error(opdata, "No parent to '%s' ",
dn.c_str());
return 0;
}
- parent++;
-
/* Should be children to the SU Base type */
- if (strncmp(parent, "safSuType=", 10) != 0) {
- report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", parent, dn->value);
+ if (dn.compare(pos + 1, 10, "safSuType=") != 0) {
+ report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", dn.substr(pos +1).c_str(), dn.c_str());
return 0;
}
#if 0
@@ -152,7 +151,7 @@
if
((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutDefSUFailover"),
attributes, 0, &abool) == SA_AIS_OK) &&
(abool > SA_TRUE)) {
- report_ccb_validation_error(opdata, "Invalid
saAmfSutDefSUFailover %u for '%s'", abool, dn->value);
+ report_ccb_validation_error(opdata, "Invalid
saAmfSutDefSUFailover %u for '%s'", abool, dn.c_str());
return 0;
}
@@ -161,7 +160,7 @@
if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutIsExternal"),
attributes, 0, &abool) == SA_AIS_OK) &&
(abool > SA_TRUE)) {
- report_ccb_validation_error(opdata, "Invalid saAmfSutIsExternal
%u for '%s'", abool, dn->value);
+ report_ccb_validation_error(opdata, "Invalid saAmfSutIsExternal
%u for '%s'", abool, dn.c_str());
return 0;
}
@@ -194,12 +193,13 @@
}
while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
(SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
- if (!is_config_valid(&dn, attributes, nullptr))
+ const std::string temp_dn(Amf::to_string(&dn));
+ if (!is_config_valid(temp_dn, attributes, nullptr))
goto done2;
- if (( sut = sutype_db->find(Amf::to_string(&dn))) == nullptr) {
+ if (( sut = sutype_db->find(temp_dn)) == nullptr) {
- if ((sut = sutype_create(&dn, attributes)) == nullptr) {
+ if ((sut = sutype_create(temp_dn, attributes)) ==
nullptr) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
@@ -207,7 +207,7 @@
sutype_db_add(sut);
}
- if (avd_sutcomptype_config_get(&dn, sut) != SA_AIS_OK) {
+ if (avd_sutcomptype_config_get(temp_dn, sut) != SA_AIS_OK) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
@@ -265,7 +265,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- sut = sutype_create(&opdata->objectName,
opdata->param.create.attrValues);
+ sut = sutype_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(sut);
sutype_db_add(sut);
break;
@@ -274,7 +274,7 @@
break;
case CCBUTIL_DELETE:
sut = sutype_db->find(Amf::to_string(&opdata->objectName));
- sutype_db->erase(Amf::to_string(&sut->name));
+ sutype_db->erase(sut->name);
sutype_delete(&sut);
break;
default:
@@ -310,7 +310,7 @@
uint32_t sut_failover = *((SaUint32T
*)attr_mod->modAttr.attrValues[0]);
if (sut_failover > SA_TRUE) {
- report_ccb_validation_error(opdata, "invalid
saAmfSutDefSUFailover in:'%s'", sut->name.value);
+ report_ccb_validation_error(opdata, "invalid
saAmfSutDefSUFailover in:'%s'", sut->name.c_str());
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
@@ -353,7 +353,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
@@ -367,7 +367,8 @@
*/
for (const auto& su : sut->list_of_su) {
- t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
&su->name);
+ const SaNameTWrapper su_name(su->name);
+ t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
su_name);
if ((t_opData == nullptr) || (t_opData->operationType
!= CCBUTIL_DELETE)) {
su_exist = true;
break;
@@ -375,7 +376,7 @@
}
if (su_exist == true) {
- report_ccb_validation_error(opdata, "SaAmfSUType '%s'is
in use",sut->name.value);
+ report_ccb_validation_error(opdata, "SaAmfSUType '%s'is
in use",sut->name.c_str());
goto done;
}
rc = SA_AIS_OK;
diff --git a/osaf/services/saf/amf/amfd/svctype.cc
b/osaf/services/saf/amf/amfd/svctype.cc
--- a/osaf/services/saf/amf/amfd/svctype.cc
+++ b/osaf/services/saf/amf/amfd/svctype.cc
@@ -44,14 +44,14 @@
static void svctype_db_add(AVD_SVC_TYPE *svct)
{
- unsigned int rc = svctype_db->insert(Amf::to_string(&svct->name),svct);
+ unsigned int rc = svctype_db->insert(svct->name,svct);
osafassert (rc == NCSCC_RC_SUCCESS);
}
static void svctype_delete(AVD_SVC_TYPE *svc_type)
{
- svctype_db->erase(Amf::to_string(&svc_type->name));
+ svctype_db->erase(svc_type->name);
if (svc_type->saAmfSvcDefActiveWeight != nullptr) {
unsigned int i = 0;
@@ -74,18 +74,18 @@
}
//
-AVD_SVC_TYPE::AVD_SVC_TYPE(const SaNameT *dn) {
- memcpy(&name.value, dn->value, dn->length);
- name.length = dn->length;
+AVD_SVC_TYPE::AVD_SVC_TYPE(const std::string& dn) :
+ name(dn)
+{
}
-static AVD_SVC_TYPE *svctype_create(const SaNameT *dn, const
SaImmAttrValuesT_2 **attributes)
+static AVD_SVC_TYPE *svctype_create(const std::string& dn, const
SaImmAttrValuesT_2 **attributes)
{
unsigned int i;
AVD_SVC_TYPE *svct;
SaUint32T attrValuesNumber;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
svct = new AVD_SVC_TYPE(dn);
@@ -116,18 +116,18 @@
return svct;
}
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
{
- char *parent;
+ std::string::size_type pos;
- if ((parent = strchr((char*)dn->value, ',')) == nullptr) {
- report_ccb_validation_error(opdata, "No parent to '%s' ",
dn->value);
+ if ((pos = dn.find(',')) == std::string::npos) {
+ report_ccb_validation_error(opdata, "No parent to '%s' ",
dn.c_str());
return 0;
}
/* Should be children to the SvcBasetype */
- if (strncmp(++parent, "safSvcType=", 11) != 0) {
- report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", parent, dn->value);
+ if (dn.compare(pos + 1, 11, "safSvcType=") != 0) {
+ report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", dn.substr(pos +1).c_str(), dn.c_str());
return 0;
}
@@ -146,7 +146,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
@@ -159,7 +159,8 @@
* each of the SI in the svc_type list in the current CCB
*/
for (const auto& si : svc_type->list_of_si) {
- t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
&si->name);
+ const SaNameTWrapper si_name(si->name);
+ t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
si_name);
if ((t_opData == nullptr) || (t_opData->operationType
!= CCBUTIL_DELETE)) {
si_exist = true;
break;
@@ -167,7 +168,7 @@
}
if (si_exist == true) {
- report_ccb_validation_error(opdata, "SaAmfSvcType '%s'
is in use",svc_type->name.value);
+ report_ccb_validation_error(opdata, "SaAmfSvcType '%s'
is in use",svc_type->name.c_str());
goto done;
}
opdata->userData = svc_type;
@@ -190,7 +191,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- svc_type = svctype_create(&opdata->objectName,
opdata->param.create.attrValues);
+ svc_type = svctype_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(svc_type);
svctype_db_add(svc_type);
break;
@@ -239,17 +240,18 @@
}
while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
(SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
- if (!is_config_valid(&dn, attributes, nullptr))
+ const std::string temp_dn(Amf::to_string(&dn));
+ if (!is_config_valid(temp_dn, attributes, nullptr))
goto done2;
- if ((svc_type = svctype_db->find(Amf::to_string(&dn))) ==
nullptr) {
- if ((svc_type = svctype_create(&dn, attributes)) ==
nullptr)
+ if ((svc_type = svctype_db->find(temp_dn)) == nullptr) {
+ if ((svc_type = svctype_create(temp_dn, attributes)) ==
nullptr)
goto done2;
svctype_db_add(svc_type);
}
- if (avd_svctypecstypes_config_get(&dn) != SA_AIS_OK)
+ if (avd_svctypecstypes_config_get(temp_dn) != SA_AIS_OK)
goto done2;
}
diff --git a/osaf/services/saf/amf/amfd/svctypecstypes.cc
b/osaf/services/saf/amf/amfd/svctypecstypes.cc
--- a/osaf/services/saf/amf/amfd/svctypecstypes.cc
+++ b/osaf/services/saf/amf/amfd/svctypecstypes.cc
@@ -26,21 +26,21 @@
AmfDb<std::string, AVD_SVC_TYPE_CS_TYPE> *svctypecstypes_db = nullptr;
static void svctypecstype_db_add(AVD_SVC_TYPE_CS_TYPE *svctypecstype)
{
- uint32_t rc =
svctypecstypes_db->insert(Amf::to_string(&svctypecstype->name),svctypecstype);
+ uint32_t rc =
svctypecstypes_db->insert(svctypecstype->name,svctypecstype);
osafassert(rc == NCSCC_RC_SUCCESS);
}
//
-AVD_SVC_TYPE_CS_TYPE::AVD_SVC_TYPE_CS_TYPE(const SaNameT *dn) {
- memcpy(&name.value, dn->value, dn->length);
- name.length = dn->length;
+AVD_SVC_TYPE_CS_TYPE::AVD_SVC_TYPE_CS_TYPE(const std::string& dn) :
+ name(dn)
+{
}
-static AVD_SVC_TYPE_CS_TYPE *svctypecstypes_create(SaNameT *dn, const
SaImmAttrValuesT_2 **attributes)
+static AVD_SVC_TYPE_CS_TYPE *svctypecstypes_create(const std::string& dn,
const SaImmAttrValuesT_2 **attributes)
{
AVD_SVC_TYPE_CS_TYPE *svctypecstype;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
svctypecstype = new AVD_SVC_TYPE_CS_TYPE(dn);
@@ -60,7 +60,7 @@
*
* @return SaAisErrorT
*/
-SaAisErrorT avd_svctypecstypes_config_get(SaNameT *svctype_name)
+SaAisErrorT avd_svctypecstypes_config_get(const std::string& svctype_name)
{
AVD_SVC_TYPE_CS_TYPE *svctypecstype;
SaAisErrorT error;
@@ -74,7 +74,7 @@
searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
searchParam.searchOneAttr.attrValue = &className;
- error = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle,
svctype_name, SA_IMM_SUBTREE,
+ error = immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle,
svctype_name.c_str(), SA_IMM_SUBTREE,
SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_ALL_ATTR,
&searchParam,
nullptr, &searchHandle);
@@ -86,7 +86,7 @@
while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
(SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
if ((svctypecstype =
svctypecstypes_db->find(Amf::to_string(&dn)))== nullptr) {
- if ((svctypecstype = svctypecstypes_create(&dn,
attributes)) == nullptr) {
+ if ((svctypecstype =
svctypecstypes_create(Amf::to_string(&dn), attributes)) == nullptr) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
@@ -117,26 +117,27 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE: {
- SaNameT cstype_dn;
- const SaNameT *dn = &opdata->objectName;
+ std::string cstype_dn;
+ const std::string dn = Amf::to_string(&opdata->objectName);
- if (get_child_dn_from_ass_dn(dn, &cstype_dn) != 0) {
- report_ccb_validation_error(opdata, "malformed DN
'%s'", dn->value);
+ if (get_child_dn_from_ass_dn(dn, cstype_dn) != 0) {
+ report_ccb_validation_error(opdata, "malformed DN
'%s'", dn.c_str());
goto done;
}
- if (cstype_db->find(Amf::to_string(&cstype_dn)) == nullptr) {
- if (cstype_db->find(Amf::to_string(&cstype_dn)) ==
nullptr) {
+ if (cstype_db->find(cstype_dn) == nullptr) {
+ if (cstype_db->find(cstype_dn) == nullptr) {
if (opdata == nullptr) {
report_ccb_validation_error(opdata,
- "SaAmfCSType object '%s' does
not exist", cstype_dn.value);
+ "SaAmfCSType object '%s' does
not exist", cstype_dn.c_str());
goto done;
}
- if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
&cstype_dn) == nullptr) {
+ const SaNameTWrapper type_cstype_dn(cstype_dn);
+ if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
type_cstype_dn) == nullptr) {
report_ccb_validation_error(opdata,
"SaAmfCSType object '%s' does
not exist in model or in CCB",
- cstype_dn.value);
+ cstype_dn.c_str());
goto done;
}
}
@@ -176,7 +177,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- svctypecstype = svctypecstypes_create(&opdata->objectName,
opdata->param.create.attrValues);
+ svctypecstype =
svctypecstypes_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(svctypecstype);
svctypecstype_db_add(svctypecstype);
break;
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel