Hi Lennart,

I've looked at your changes in the .diff file. They look good overall.

- Nevertheless, I think some updates, mostly regarding comments and log/trace printouts, are needed to make the changes consistent. You can find the places to update in the attached .diff file which can be applied onto your review repository.

- Regarding renaming legacy function names in /SmfImmOperation.h/, you missed to change two legacy functions of /SmfImmDeleteOperation/ class. Please see the attached .diff file for details and double-check my suggested update.

- About refactoring SMF TRY_AGAIN handling for IMM operations, I agree that it should be done in a new ticket.

(I have removed the original patch from the mail thread to reduce the message size)

Thanks,
Nguyen

On 5/14/2018 8:13 PM, Lennart Lund wrote:
Hi Nguyen,

Attached patch contains all fixes. Can be applied on the review request. I will 
not send out a new review request unless Hans will find something that requires 
significant changes.

This is how I have handled your comments:

SmfAdminState.cc
I have added most of your comments. Thanks for going through all comments and 
finding the mismatches between comments and variable names etc. that was wrong.
A few of the suggested changes are not added.

SmfCampState.*
I have not changed the order of #include as suggested. The reason is that it 
cannot easily be done since there are problems with .h files that does not have 
all needed includes and circular dependencies. I tried to fix this in some 
parts of the code but run into huge problems so I skipped that in the legacy 
code.

SmfCampaignWrapup.cc
Your comment ...
   // [Nguyen] smfCreateRollbackElement eventually calls 
immutil_saImmOiRtObjectCreate_2()
   // which already handles TRY_AGAIN. Should we remove the TRY_AGAIN handling 
here?
   // I've also looked at the smfCreateRollbackElement part of other campaign 
stages and
   // found no use of such doImmOpTimer.
... is correct regarding the try again loop. This "outer loop" adds a timed 
loop with a timeout of 60 sec which is completely useless since the setting for immutil 
set by smf is to always use 600 X 1000 ms which is not at all correct. However I will not 
change any of this since it is not within scope of this ticket. Maybe create a new ticket 
for this?

SmfImmOperation.h:
   // [Nguyen] The naming of class methods in this file is not consistent,
   // i.e some with capitalized initial letter, some with uncapitalized initial 
letter
   // Should we capitalize all initial letter for consistency?
   // getClassName() -> GetClassName()
This again is legacy code. I have not renamed all legacy functions according to 
Google style guide so there may be a mix in some classes. However this file is 
fixed.

SmfUtils.cc:
lldtest_delete is test code that should have been removed. Fixed

Thanks
Lennart



-----Original Message-----
From: Nguyen Luu [mailto:nguyen.tk....@dektech.com.au]
Sent: den 10 maj 2018 09:46
To: Lennart Lund <lennart.l...@ericsson.com>; Hans Nordebäck
<hans.nordeb...@ericsson.com>
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [devel] [PATCH 1/1] smf: Add capability to redo CCBs that fail
[#1398]

Hi Lennart,

I've reviewed your patch. Code review only, not tested yet.
Please see my comments in the attached diff file which was generated on
top of the changes in your patch.

Regards,
Nguyen

---
 src/smf/smfd/SmfAdminState.cc       |  3 +--
 src/smf/smfd/SmfCampState.cc        |  4 +--
 src/smf/smfd/SmfImmOperation.cc     | 54 ++++++++++++++++++-------------------
 src/smf/smfd/SmfImmOperation.h      | 12 ++++-----
 src/smf/smfd/SmfUpgradeProcedure.cc |  2 +-
 5 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/src/smf/smfd/SmfAdminState.cc b/src/smf/smfd/SmfAdminState.cc
index 3b8dbbf..0c0115b 100644
--- a/src/smf/smfd/SmfAdminState.cc
+++ b/src/smf/smfd/SmfAdminState.cc
@@ -520,7 +520,6 @@ bool 
SmfAdminStateHandler::changeAdminState(SaAmfAdminStateT fromState,
   }
 
   // Set admin state for SUs
-  // [Nguyen] just my suggestion to use suList_.empty()
   if ((rc == true) && (!suList_.empty())) {
     TRACE("%s: Use serialized for SUs", __FUNCTION__);
     // Do only if setting admin state for nodes did not fail
@@ -728,7 +727,7 @@ done:
 }
 
 /// Create a SmfAdminStateHandler instance node group with the nodes in
-/// the nodeList.
+/// the nodeList_.
 /// The saAmfNGAdminState attribute will be given fromState. The initState
 /// must be set to a state so that a state change to the wanted state for the
 /// nodes can be done.
diff --git a/src/smf/smfd/SmfCampState.cc b/src/smf/smfd/SmfCampState.cc
index 2e09f41..8f62fb0 100644
--- a/src/smf/smfd/SmfCampState.cc
+++ b/src/smf/smfd/SmfCampState.cc
@@ -145,13 +145,13 @@ SaAisErrorT SmfCampState::verify(SmfUpgradeCampaign 
*i_camp,
 }
 
 
//------------------------------------------------------------------------------
-// prerequsitescheck()
+// prerequisitescheck()
 
//------------------------------------------------------------------------------
 SaAisErrorT SmfCampState::prerequisitescheck(SmfUpgradeCampaign *i_camp,
                                             std::string &error) {
   TRACE_ENTER();
   LOG_ER(
-      "SmfCampState::prerequsitescheck default implementation, should NEVER be 
executed.");
+      "SmfCampState::prerequisitescheck default implementation, should NEVER 
be executed.");
   TRACE_LEAVE();
   return SA_AIS_OK;
 }
diff --git a/src/smf/smfd/SmfImmOperation.cc b/src/smf/smfd/SmfImmOperation.cc
index e5d9848..91d0b36 100644
--- a/src/smf/smfd/SmfImmOperation.cc
+++ b/src/smf/smfd/SmfImmOperation.cc
@@ -71,8 +71,8 @@ SaAisErrorT SmfImmCreateOperation::Execute(SmfRollbackData 
*o_rollbackData) {
   // Fill in a create descriptor. The create descriptor already declared in the
   // inherited SmfImmOperation class shall be used
   // Keep rollback handling "as is"
-  // Note: This execute operation can no longer fail except when doing
-  // prepareRollback()
+  // Note: This Execute() operation can no longer fail except when doing
+  // PrepareRollback()
 
   //object_create_
   // Verify that the create descriptor is filled in correctly,
@@ -95,7 +95,7 @@ SaAisErrorT SmfImmCreateOperation::Execute(SmfRollbackData 
*o_rollbackData) {
     SaAisErrorT rollbackResult;
     if ((rollbackResult = this->PrepareRollback(o_rollbackData)) != SA_AIS_OK) 
{
       LOG_NO(
-        "SmfImmCreateOperation::execute, Failed to prepare rollback data 
rc=%s",
+        "SmfImmCreateOperation::Execute, Failed to prepare rollback data 
rc=%s",
         saf_error(rollbackResult));
       result = SA_AIS_ERR_FAILED_OPERATION;
     }
@@ -106,7 +106,7 @@ SaAisErrorT SmfImmCreateOperation::Execute(SmfRollbackData 
*o_rollbackData) {
 }
 
 
//------------------------------------------------------------------------------
-// prepareRollback()
+// PrepareRollback()
 
//------------------------------------------------------------------------------
 SaAisErrorT SmfImmCreateOperation::PrepareRollback(
     SmfRollbackData *o_rollbackData) {
@@ -114,7 +114,7 @@ SaAisErrorT SmfImmCreateOperation::PrepareRollback(
   SaImmAttrDefinitionT_2 **attributeDefs = NULL;
 
   if (immUtil.getClassDescription(class_name_, &attributeDefs) == false) {
-    LOG_NO("SmfImmCreateOperation::prepareRollback, Could not find class %s",
+    LOG_NO("SmfImmCreateOperation::PrepareRollback, Could not find class %s",
            class_name_.c_str());
     return SA_AIS_ERR_FAILED_OPERATION;
   }
@@ -132,7 +132,7 @@ SaAisErrorT SmfImmCreateOperation::PrepareRollback(
   immUtil.classDescriptionMemoryFree(attributeDefs);
   if (rdnAttrName.length() == 0) {
     LOG_NO(
-        "SmfImmCreateOperation::prepareRollback, could not find RDN attribute 
in class %s",
+        "SmfImmCreateOperation::PrepareRollback, could not find RDN attribute 
in class %s",
         class_name_.c_str());
     return SA_AIS_ERR_FAILED_OPERATION;
   }
@@ -143,7 +143,7 @@ SaAisErrorT SmfImmCreateOperation::PrepareRollback(
     if (rdnAttrName == (elem).m_name) {
       if ((elem).m_values.size() != 1) {
         LOG_NO(
-            "SmfImmCreateOperation::prepareRollback, attribute %s contain %zu 
values, must contain exactly one value",
+            "SmfImmCreateOperation::PrepareRollback, attribute %s contain %zu 
values, must contain exactly one value",
             rdnAttrName.c_str(), (elem).m_values.size());
         return SA_AIS_ERR_FAILED_OPERATION;
       }
@@ -153,12 +153,12 @@ SaAisErrorT SmfImmCreateOperation::PrepareRollback(
   }
   if (rdnAttrValue.length() == 0) {
     LOG_NO(
-        "SmfImmCreateOperation::prepareRollback, could not find RDN value for 
%s, class %s",
+        "SmfImmCreateOperation::PrepareRollback, could not find RDN value for 
%s, class %s",
         rdnAttrName.c_str(), class_name_.c_str());
     return SA_AIS_ERR_FAILED_OPERATION;
   }
 
-  TRACE("SmfImmCreateOperation::prepareRollback, Found RDN %s=%s",
+  TRACE("SmfImmCreateOperation::PrepareRollback, Found RDN %s=%s",
         rdnAttrName.c_str(), rdnAttrValue.c_str());
 
   /* Prepare deletion of created object at rollback */
@@ -191,9 +191,9 @@ SaAisErrorT SmfImmDeleteOperation::Execute(SmfRollbackData 
*o_rollbackData) {
 
   // Prepare a corresponding rollback operation
   if (o_rollbackData != NULL) {
-    if ((result = this->prepareRollback(o_rollbackData)) != SA_AIS_OK) {
+    if ((result = this->PrepareRollback(o_rollbackData)) != SA_AIS_OK) {
       LOG_NO(
-        "SmfImmDeleteOperation::execute, failed to prepare rollback data 
rc=%s",
+        "SmfImmDeleteOperation::Execute, failed to prepare rollback data 
rc=%s",
         saf_error(result));
       result = SA_AIS_ERR_FAILED_OPERATION;
     }
@@ -203,7 +203,7 @@ SaAisErrorT SmfImmDeleteOperation::Execute(SmfRollbackData 
*o_rollbackData) {
   return result;
 }
 
-SaAisErrorT SmfImmDeleteOperation::prepareRollback(
+SaAisErrorT SmfImmDeleteOperation::PrepareRollback(
     SmfRollbackData *o_rollbackData) {
   SmfImmUtils immUtil;
   SaImmAttrDefinitionT_2 **attributeDefs;
@@ -221,13 +221,13 @@ SaAisErrorT SmfImmDeleteOperation::prepareRollback(
                                     SA_IMM_ATTR_CLASS_NAME, 0);
   if (className == NULL) {
     LOG_NO(
-        "SmfImmDeleteOperation::prepareRollback, could not find class name for 
%s",
+        "SmfImmDeleteOperation::PrepareRollback, could not find class name for 
%s",
         m_dn.c_str());
     return SA_AIS_ERR_FAILED_OPERATION;
   }
 
   if (immUtil.getClassDescription(className, &attributeDefs) == false) {
-    LOG_NO("SmfImmDeleteOperation::prepareRollback, could not find class %s",
+    LOG_NO("SmfImmDeleteOperation::PrepareRollback, could not find class %s",
            className);
     return SA_AIS_ERR_FAILED_OPERATION;
   }
@@ -356,7 +356,7 @@ SaAisErrorT SmfImmModifyOperation::Execute(SmfRollbackData 
*o_rollbackData) {
   if (o_rollbackData != NULL) {
     if ((result = this->PrepareRollback(o_rollbackData)) != SA_AIS_OK) {
       LOG_NO(
-          "SmfImmModifyOperation::execute, failed to prepare rollback data %s",
+          "SmfImmModifyOperation::Execute, failed to prepare rollback data %s",
           saf_error(result));
       result = SA_AIS_ERR_FAILED_OPERATION;
     }
@@ -455,7 +455,7 @@ bool SmfImmRTCreateOperation::CreateAttrValues(void) {
     if (smf_stringToImmType((char *)(elem).m_type.c_str(),
                             attr->attrValueType) == false) {
       LOG_NO(
-          "SmfImmRTCreateOperation::createAttrValues, fail to convert attr "
+          "SmfImmRTCreateOperation::CreateAttrValues, fail to convert attr "
           "[%s] type to valid IMM type", attr->attrName);
       delete attr;
       for (int k = 0; i > k; k++) {
@@ -474,7 +474,7 @@ bool SmfImmRTCreateOperation::CreateAttrValues(void) {
     if (smf_stringsToValues(attr, (elem).m_values) ==
         false) {  // Convert the string to a SA Forum type
       LOG_NO(
-          "SmfImmRTCreateOperation::createAttrValues, fail to convert attr "
+          "SmfImmRTCreateOperation::CreateAttrValues, fail to convert attr "
           "[%s] value string to attr value", attr->attrName);
       free(attr->attrValues);
       delete attr;
@@ -509,7 +509,7 @@ SaAisErrorT SmfImmRTCreateOperation::Execute() {
   // Convert the strings to structures and types accepted by the IMM interface
   if (this->CreateAttrValues() == false) {
     LOG_NO(
-        "SmfImmRTCreateOperation::execute, fail to convert to IMM attr "
+        "SmfImmRTCreateOperation::Execute, fail to convert to IMM attr "
         "structure");
     TRACE_LEAVE();
     return SA_AIS_ERR_FAILED_OPERATION;
@@ -519,7 +519,7 @@ SaAisErrorT SmfImmRTCreateOperation::Execute() {
 
   if (m_parentDn.length() > GetSmfMaxDnLength()) {
     LOG_NO(
-        "SmfImmRTCreateOperation::execute, createObject failed Too long "
+        "SmfImmRTCreateOperation::Execute, createObject failed Too long "
         "parent name %zu",
         m_parentDn.length());
     TRACE_LEAVE();
@@ -527,7 +527,7 @@ SaAisErrorT SmfImmRTCreateOperation::Execute() {
   }
 
   if (!m_immAttrValues) {
-    LOG_NO("SmfImmRTCreateOperation::execute, no SaImmAttrValuesT_2** is set");
+    LOG_NO("SmfImmRTCreateOperation::Execute, no SaImmAttrValuesT_2** is set");
     TRACE_LEAVE();
     return SA_AIS_ERR_UNAVAILABLE;
   }
@@ -606,7 +606,7 @@ bool SmfImmRTUpdateOperation::CreateAttrMods(void) {
       delete[] attributeModifications;
       delete mod;
       LOG_NO(
-          "SmfImmRTUpdateOperation::createAttrMods, fail convert string to IMM 
attr mod type [%s:%s]",
+          "SmfImmRTUpdateOperation::CreateAttrMods, fail convert string to IMM 
attr mod type [%s:%s]",
           m_dn.c_str(), (elem).m_name.c_str());
       TRACE_LEAVE();
       return false;
@@ -617,7 +617,7 @@ bool SmfImmRTUpdateOperation::CreateAttrMods(void) {
       delete[] attributeModifications;
       delete mod;
       LOG_NO(
-          "SmfImmRTUpdateOperation::createAttrMods, fail to convert string to 
IMM attr type [%s:%s]",
+          "SmfImmRTUpdateOperation::CreateAttrMods, fail to convert string to 
IMM attr type [%s:%s]",
           m_dn.c_str(), (elem).m_name.c_str());
       TRACE_LEAVE();
       return false;
@@ -627,7 +627,7 @@ bool SmfImmRTUpdateOperation::CreateAttrMods(void) {
 
     if ((elem).m_values.size() <= 0) {  // Must have at least one value
       LOG_NO(
-          "SmfImmRTUpdateOperation::createAttrMods, No values %s:%s 
(size=%zu)",
+          "SmfImmRTUpdateOperation::CreateAttrMods, No values %s:%s 
(size=%zu)",
           m_dn.c_str(), (elem).m_name.c_str(), (elem).m_values.size());
       delete[] attributeModifications;
       delete mod;
@@ -641,7 +641,7 @@ bool SmfImmRTUpdateOperation::CreateAttrMods(void) {
       delete[] attributeModifications;
       delete mod;
       LOG_NO(
-          "SmfImmRTUpdateOperation::createAttrMods, fail to conv string to 
value [%s:%s = %s]",
+          "SmfImmRTUpdateOperation::CreateAttrMods, fail to conv string to 
value [%s:%s = %s]",
           m_dn.c_str(), (elem).m_name.c_str(), 
(elem).m_values.front().c_str());
       TRACE_LEAVE();
       return false;
@@ -671,21 +671,21 @@ SaAisErrorT SmfImmRTUpdateOperation::Execute() {
   // Convert the strings to structures and types accepted by the IMM interface
   if (this->CreateAttrMods() == false) {
     LOG_NO(
-        "SmfImmRTUpdateOperation::execute, fail to convert to IMM attr 
structure");
+        "SmfImmRTUpdateOperation::Execute, fail to convert to IMM attr 
structure");
     result = SA_AIS_ERR_FAILED_OPERATION;
     goto exit;
   }
 
   if (m_dn.length() > GetSmfMaxDnLength()) {
     LOG_NO(
-        "SmfImmRTUpdateOperation::execute, too long DN [%zu], max=[%zu], 
dn=[%s]",
+        "SmfImmRTUpdateOperation::Execute, too long DN [%zu], max=[%zu], 
dn=[%s]",
         m_dn.length(), static_cast<size_t>(GetSmfMaxDnLength()), m_dn.c_str());
     result = SA_AIS_ERR_NAME_TOO_LONG;
     goto exit;
   }
 
   if (m_immAttrMods == NULL) {
-    LOG_NO("SmfImmRTUpdateOperation::execute, no SaImmAttrValuesT_2** is set");
+    LOG_NO("SmfImmRTUpdateOperation::Execute, no SaImmAttrValuesT_2** is set");
     result = SA_AIS_ERR_UNAVAILABLE;
     goto exit;
   }
diff --git a/src/smf/smfd/SmfImmOperation.h b/src/smf/smfd/SmfImmOperation.h
index 5b5965c..fc855d4 100644
--- a/src/smf/smfd/SmfImmOperation.h
+++ b/src/smf/smfd/SmfImmOperation.h
@@ -217,12 +217,12 @@ class SmfImmCreateOperation : public SmfImmOperation {
   ///
   SaAisErrorT PrepareRollback(SmfRollbackData* o_rollbackData);
 
-  // Note: The following two variables are used in prepareRollback.
-  // prepareRollback() could be refactored to use attributes_ instead
+  // Note: The following two variables are used in PrepareRollback.
+  // PrepareRollback() could be refactored to use attributes_ instead
   std::string class_name_; /* class name for the object to be created */
   std::string parent_dn_;  /* dn to the parent object */
 
-  // Note: Used in prepareRollback
+  // Note: Used in PrepareRollback
   std::list<SmfImmAttribute> attributes_;  /* Attributes set at creation */
 };
 
@@ -266,7 +266,7 @@ class SmfImmDeleteOperation : public SmfImmOperation {
   /// @param   None
   /// @return  const std::string
   ///
-  const std::string& getDn() { return object_delete_.object_name; }
+  const std::string& GetDn() { return object_delete_.object_name; }
 
  private:
   ///
@@ -274,9 +274,9 @@ class SmfImmDeleteOperation : public SmfImmOperation {
   /// @param   None.
   /// @return  None.
   ///
-  SaAisErrorT prepareRollback(SmfRollbackData* o_rollbackData);
+  SaAisErrorT PrepareRollback(SmfRollbackData* o_rollbackData);
 
-  // Used in prepareRollback
+  // Used in PrepareRollback
   std::string m_dn; /* dn to the object to delete */
 };
 
diff --git a/src/smf/smfd/SmfUpgradeProcedure.cc 
b/src/smf/smfd/SmfUpgradeProcedure.cc
index 908d5b3..f8d6d2f 100644
--- a/src/smf/smfd/SmfUpgradeProcedure.cc
+++ b/src/smf/smfd/SmfUpgradeProcedure.cc
@@ -4113,7 +4113,7 @@ bool SmfUpgradeProcedure::setEntitiesToAddRemMod(
         return false;
       }
     } else if ((deleteOper = dynamic_cast<SmfImmDeleteOperation *>(*it)) != 0) 
{
-      io_smfEntityToAddRemove->AddAttributeValue(deleteOper->getDn());
+      io_smfEntityToAddRemove->AddAttributeValue(deleteOper->GetDn());
     } else if ((modifyOper = dynamic_cast<SmfImmModifyOperation *>(*it)) != 0) 
{
       io_smfEntityToAddRemove->AddAttributeValue(modifyOper->GetObjectDn());
     } else {
-- 
2.8.3

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to