Repository: jclouds
Updated Branches:
  refs/heads/master 449c6d8d8 -> 7dc73ee0b


Do not try to connect to ssh if already connected


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/7dc73ee0
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/7dc73ee0
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/7dc73ee0

Branch: refs/heads/master
Commit: 7dc73ee0bf1044fe1e6c9a01ff02a39d6dddbad7
Parents: 449c6d8
Author: Ignasi Barrera <[email protected]>
Authored: Fri Aug 12 00:38:51 2016 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Fri Aug 12 00:39:28 2016 +0200

----------------------------------------------------------------------
 .../org/jclouds/compute/callables/SudoAwareInitManager.java | 4 +++-
 compute/src/main/java/org/jclouds/ssh/SshClient.java        | 2 ++
 .../src/main/java/org/jclouds/ssh/jsch/JschSshClient.java   | 6 ++++++
 .../java/org/jclouds/ssh/jsch/JschSshClientLiveTest.java    | 4 ++++
 .../sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java  | 9 +++++++++
 .../test/java/org/jclouds/sshj/SshjSshClientLiveTest.java   | 4 ++++
 6 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/7dc73ee0/compute/src/main/java/org/jclouds/compute/callables/SudoAwareInitManager.java
----------------------------------------------------------------------
diff --git 
a/compute/src/main/java/org/jclouds/compute/callables/SudoAwareInitManager.java 
b/compute/src/main/java/org/jclouds/compute/callables/SudoAwareInitManager.java
index cef8056..472a214 100644
--- 
a/compute/src/main/java/org/jclouds/compute/callables/SudoAwareInitManager.java
+++ 
b/compute/src/main/java/org/jclouds/compute/callables/SudoAwareInitManager.java
@@ -71,7 +71,9 @@ public class SudoAwareInitManager {
    public ExecResponse refreshAndRunAction(String action) {
       checkState(ssh != null, "please call init() before invoking call");
       try {
-         ssh.connect();
+         if (!ssh.isConnected()) {
+            ssh.connect();
+         }
          return runAction(action);
       } finally {
          if (ssh != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7dc73ee0/compute/src/main/java/org/jclouds/ssh/SshClient.java
----------------------------------------------------------------------
diff --git a/compute/src/main/java/org/jclouds/ssh/SshClient.java 
b/compute/src/main/java/org/jclouds/ssh/SshClient.java
index f152aff..89a9af2 100644
--- a/compute/src/main/java/org/jclouds/ssh/SshClient.java
+++ b/compute/src/main/java/org/jclouds/ssh/SshClient.java
@@ -61,6 +61,8 @@ public interface SshClient {
 
    void disconnect();
 
+   boolean isConnected();
+
    void put(String path, String contents);
 
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7dc73ee0/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
----------------------------------------------------------------------
diff --git a/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java 
b/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
index d041060..6983f29 100644
--- a/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
+++ b/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
@@ -339,11 +339,17 @@ public class JschSshClient implements SshClient {
       return toString;
    }
 
+   @Override
    @PreDestroy
    public void disconnect() {
       sessionConnection.clear();
    }
 
+   @Override
+   public boolean isConnected() {
+      return sessionConnection.getSession().isConnected();
+   }
+
    protected ConnectionWithStreams<ChannelExec> execConnection(final String 
command) {
       checkNotNull(command, "command");
       return new ConnectionWithStreams<ChannelExec>() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7dc73ee0/drivers/jsch/src/test/java/org/jclouds/ssh/jsch/JschSshClientLiveTest.java
----------------------------------------------------------------------
diff --git 
a/drivers/jsch/src/test/java/org/jclouds/ssh/jsch/JschSshClientLiveTest.java 
b/drivers/jsch/src/test/java/org/jclouds/ssh/jsch/JschSshClientLiveTest.java
index 4045b52..ede5b47 100644
--- a/drivers/jsch/src/test/java/org/jclouds/ssh/jsch/JschSshClientLiveTest.java
+++ b/drivers/jsch/src/test/java/org/jclouds/ssh/jsch/JschSshClientLiveTest.java
@@ -86,6 +86,10 @@ public class JschSshClientLiveTest {
             public void disconnect() {
             }
 
+            public boolean isConnected() {
+               return false;
+            }
+
             public Payload get(String path) {
                if (path.equals("/etc/passwd")) {
                   return Payloads.newStringPayload("root");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7dc73ee0/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
----------------------------------------------------------------------
diff --git a/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java 
b/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
index 25dbbb8..4611382 100644
--- a/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
+++ b/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
@@ -410,6 +410,15 @@ public class SshjSshClient implements SshClient {
       }
    }
 
+   @Override
+   public boolean isConnected() {
+      try {
+         return sshClientConnection.getSSHClient().isConnected();
+      } catch (Exception e) {
+         throw Throwables.propagate(e);
+      }
+   }
+
    protected Connection<Session> execConnection() {
 
       return new Connection<Session>() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7dc73ee0/drivers/sshj/src/test/java/org/jclouds/sshj/SshjSshClientLiveTest.java
----------------------------------------------------------------------
diff --git 
a/drivers/sshj/src/test/java/org/jclouds/sshj/SshjSshClientLiveTest.java 
b/drivers/sshj/src/test/java/org/jclouds/sshj/SshjSshClientLiveTest.java
index eabe3f0..ba8e217 100644
--- a/drivers/sshj/src/test/java/org/jclouds/sshj/SshjSshClientLiveTest.java
+++ b/drivers/sshj/src/test/java/org/jclouds/sshj/SshjSshClientLiveTest.java
@@ -75,6 +75,10 @@ public class SshjSshClientLiveTest {
             public void disconnect() {
             }
 
+            public boolean isConnected() {
+               return false;
+            }
+
             public Payload get(String path) {
                if (path.equals("/etc/passwd")) {
                   return Payloads.newStringPayload("root");

Reply via email to