osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc |  58 +++----------------------
 osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh |   8 ---
 osaf/services/saf/smfsv/smfd/SmfUtils.cc       |  18 ++++++++
 osaf/services/saf/smfsv/smfd/SmfUtils.hh       |   1 +
 4 files changed, 26 insertions(+), 59 deletions(-)


smfd wait for the node destination to appear before any command specified in 
the campaign is executed.
If the node destination does not appear within a timeout period the campaign 
will fail.

diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc 
b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc
@@ -1654,41 +1654,6 @@ SmfUpgradeStep::saveImmContent()
 }
 
 
//------------------------------------------------------------------------------
-// executeRemoteCmd()
-//------------------------------------------------------------------------------
-bool 
-SmfUpgradeStep::executeRemoteCmd( const std::string  &i_cmd,
-                                 const std::string & i_node)
-{
-       TRACE_ENTER();
-       TRACE("Executing script '%s' on node '%s'", i_cmd.c_str(), 
i_node.c_str());
-       SaTimeT timeout;
-       uint32_t cmdrc;
-       bool rc = true;
-        SmfndNodeDest nodeDest;
-        if (!getNodeDestination(i_node, &nodeDest)) {
-               LOG_NO("no node destination found for node %s", i_node.c_str());
-               rc = false;
-               goto done;
-       }
-
-       /* Execute the script remote on node */
-       timeout = smfd_cb->cliTimeout;  /* Default timeout */
-
-       cmdrc = smfnd_exec_remote_cmd(i_cmd.c_str(), &nodeDest, timeout / 
10000000, 0);
-       /* convert ns to 10 ms timeout */
-       if (cmdrc != 0) {
-               LOG_NO("executing command '%s' on node '%s' failed (%x)", 
-                      i_cmd.c_str(), i_node.c_str(), cmdrc);
-               rc = false;
-               goto done;
-       }
-done:
-       TRACE_LEAVE();
-       return rc;
-}
-
-//------------------------------------------------------------------------------
 // callActivationCmd()
 
//------------------------------------------------------------------------------
 bool 
@@ -1744,7 +1709,7 @@ SmfUpgradeStep::callActivationCmd()
 
                        TRACE("Executing activation command '%s' on node '%s' 
(single-step)", 
                              actCommand.c_str(), nodeName);
-                        if (!getNodeDestination(*n, &nodeDest)) {
+                        if (!waitForNodeDestination(*n, &nodeDest)) {
                                LOG_NO("no node destination found for node 
[%s]", nodeName);
                                result = false;
                                goto done;
@@ -1897,7 +1862,7 @@ SmfUpgradeStep::callBundleScript(SmfInst
                                char const* nodeName = n->c_str();
                                TRACE("Executing bundle script '%s' on node 
'%s' (single-step)", 
                                      command.c_str(), nodeName);
-                               if (!getNodeDestination(*n, &nodeDest)) {
+                               if (!waitForNodeDestination(*n, &nodeDest)) {
                                        LOG_NO("no node destination found for 
node [%s]", nodeName);
                                        result = false;
                                        goto done;
@@ -1910,7 +1875,6 @@ SmfUpgradeStep::callBundleScript(SmfInst
                                        goto done;
                                }
                        }
-
                } else {
 
                         SmfndNodeDest nodeDest;
@@ -1918,19 +1882,11 @@ SmfUpgradeStep::callBundleScript(SmfInst
                              command.c_str(), i_node.c_str());
                        TRACE("Get node destination for %s", i_node.c_str());
 
-                       int interval = 5;
-                       int nodetimeout = smfd_cb->rebootTimeout/1000000000; 
//seconds
-                       while (!getNodeDestination(i_node, &nodeDest)) {
-                               if (nodetimeout > 0) {
-                                       TRACE("No destination found, try again 
wait %d seconds", interval);
-                                       sleep(interval);
-                                       nodetimeout -= interval;
-                               } else {
-                                       LOG_NO("no node destination found for 
node %s", i_node.c_str());
-                                       result = false;
-                                       goto done;
-                               }
-                       }
+                        if (!waitForNodeDestination(i_node, &nodeDest)) {
+                                LOG_NO("no node destination found for node 
%s", i_node.c_str());
+                                result = false;
+                                goto done;
+                        }
 
                        /* TODO : how to handle the case where the cmd is an 
URI */
                        /* First fetch the script using e.g. wget etc */
diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh 
b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh
@@ -627,14 +627,6 @@ class SmfUpgradeStep {
        } SmfInstallRemoveT;
 
 ///
-/// Purpose:  Call script on remote node
-/// @param    -
-/// @return   -
-///
-       bool executeRemoteCmd( const std::string &i_cmd,
-                              const std::string & i_node);
-
-///
 /// Purpose:  Call bundle script on remote node
 /// @param    -
 /// @return   -
diff --git a/osaf/services/saf/smfsv/smfd/SmfUtils.cc 
b/osaf/services/saf/smfsv/smfd/SmfUtils.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUtils.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUtils.cc
@@ -60,6 +60,24 @@ SaVersionT SmfImmUtils::s_immVersion = {
  *   FUNCTION PROTOTYPES
  * ========================================================================
  */
+bool 
+waitForNodeDestination(const std::string & i_node, SmfndNodeDest* o_nodeDest)
+{
+        int interval = 2;
+        int nodetimeout = smfd_cb->rebootTimeout/1000000000; //seconds
+        while (!getNodeDestination(i_node, o_nodeDest)) {
+                if (nodetimeout > 0) {
+                        TRACE("No destination found, try again wait %d 
seconds", interval);
+                        sleep(interval);
+                        nodetimeout -= interval;
+                } else {
+                        LOG_NO("no node destination found whitin time limit 
for node %s", i_node.c_str());
+                        return false;
+               }
+        }
+
+        return true;
+}
 
 bool 
 getNodeDestination(const std::string & i_node, SmfndNodeDest* o_nodeDest)
diff --git a/osaf/services/saf/smfsv/smfd/SmfUtils.hh 
b/osaf/services/saf/smfsv/smfd/SmfUtils.hh
--- a/osaf/services/saf/smfsv/smfd/SmfUtils.hh
+++ b/osaf/services/saf/smfsv/smfd/SmfUtils.hh
@@ -69,6 +69,7 @@ extern "C" {
 #ifdef __cplusplus
 }
 #endif
+extern bool waitForNodeDestination(const std::string & i_node, SmfndNodeDest* 
o_nodeDest);
 extern bool getNodeDestination(const std::string & i_node, SmfndNodeDest* 
o_nodeDest);
 extern std::string replaceAllCopy(const std::string& i_haystack, const  
std::string& i_needle, const  std::string& i_replacement);
 

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to