You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by fr...@apache.org on 2013/12/06 02:28:56 UTC

git commit: updated refs/heads/4.3 to 48a4391

Updated Branches:
  refs/heads/4.3 fd5b9a278 -> 48a439156


[UCS] increate ipmi command retry


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/48a43915
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/48a43915
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/48a43915

Branch: refs/heads/4.3
Commit: 48a43915681b9b4ce89f4b78129b38827a095c04
Parents: fd5b9a2
Author: Frank.Zhang <fr...@citrix.com>
Authored: Tue Oct 29 17:49:39 2013 -0700
Committer: Frank.Zhang <fr...@citrix.com>
Committed: Thu Dec 5 17:29:08 2013 -0800

----------------------------------------------------------------------
 .../networkservice/BareMetalResourceBase.java   | 33 ++++++++++++++++----
 1 file changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/48a43915/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
index 1ac4eed..0daafd0 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
@@ -281,8 +281,15 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
 		return doScript(cmd, null);
 	}
 
-	protected boolean doScript(Script cmd, OutputInterpreter interpreter) {
-		int retry = 5;
+    protected boolean doScript(Script cmd, int retry) {
+        return doScript(cmd, null, retry);
+    }
+
+    protected boolean doScript(Script cmd, OutputInterpreter interpreter) {
+        return doScript(cmd, interpreter, 5);
+    }
+
+	protected boolean doScript(Script cmd, OutputInterpreter interpreter, int retry) {
 		String res = null;
 		while (retry-- > 0) {
 			if (interpreter == null) {
@@ -292,7 +299,11 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
 			}
 			if (res != null && res.startsWith("Error: Unable to establish LAN")) {
 				s_logger.warn("IPMI script timeout(" + cmd.toString() + "), will retry " + retry + " times");
-				continue;
+                try {
+                    TimeUnit.SECONDS.sleep(1);
+                } catch (InterruptedException e) {
+                }
+                continue;
 			} else if (res == null) {
 				return true;
 			} else {
@@ -540,8 +551,17 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
 	}
 
 	protected RebootAnswer execute(final RebootCommand cmd) {
-		if (!doScript(_rebootCommand)) {
-			return new RebootAnswer(cmd, "IPMI reboot failed", false);
+        String infoStr = "Command not supported in present state";
+        OutputInterpreter.AllLinesParser interpreter = new OutputInterpreter.AllLinesParser();
+		if (!doScript(_rebootCommand, interpreter, 10)) {
+            if (interpreter.getLines().contains(infoStr)) {
+                // try again, this error should be temporary
+                if (!doScript(_rebootCommand, interpreter, 10)) {
+                    return new RebootAnswer(cmd, "IPMI reboot failed", false);
+                }
+            } else {
+			    return new RebootAnswer(cmd, "IPMI reboot failed", false);
+            }
 		}
 
 		return new RebootAnswer(cmd, "reboot succeeded", true);
@@ -565,7 +585,8 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
 
 			OutputInterpreter.AllLinesParser interpreter = new OutputInterpreter.AllLinesParser();
 			if (!doScript(_getStatusCommand, interpreter)) {
-				s_logger.warn("Cannot get power status of " + _name + ", assume VM state was not changed");
+                success = true;
+				s_logger.warn("Cannot get power status of " + _name + ", assume VM state changed successfully");
 				break;
 			}