CLOUDSTACK-9470: Fix for SshHelper - test_network_acl was failing on Vmware due 
to a bug in sshExecute, in which value returned was null and there was still 
stdout to consume. This fix addresses this problem, consuming stdout peoperly 
to return expected value in sshExecute


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

Branch: refs/heads/4.9-bountycastle-daan
Commit: 1190d76a65e93eefec7c19255e07cea18cf4db1f
Parents: 0671a80
Author: nvazquez <[email protected]>
Authored: Wed Aug 24 09:32:55 2016 -0300
Committer: nvazquez <[email protected]>
Committed: Fri Sep 2 12:16:58 2016 -0300

----------------------------------------------------------------------
 .../src/main/java/com/cloud/utils/ssh/SshHelper.java  | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1190d76a/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
----------------------------------------------------------------------
diff --git a/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java 
b/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
index 4d7a852..1f6d30c 100644
--- a/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
+++ b/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
@@ -22,6 +22,10 @@ package com.cloud.utils.ssh;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 
 import org.apache.log4j.Logger;
 
@@ -196,6 +200,16 @@ public class SshHelper {
 
             String result = sbResult.toString();
 
+            if (StringUtils.isBlank(result)) {
+                try {
+                    result = IOUtils.toString(stdout, StandardCharsets.UTF_8);
+                }
+                catch (IOException e) {
+                    s_logger.error("Couldn't get content of input stream due 
to: " + e.getMessage());
+                    return new Pair<Boolean, String>(false, result);
+                }
+            }
+
             if (sess.getExitStatus() == null) {
                 //Exit status is NOT available. Returning failure result.
                 s_logger.error(String.format("SSH execution of command %s has 
no exit status set. Result output: %s", command, result));

Reply via email to