You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by wi...@apache.org on 2014/09/28 11:40:47 UTC

[47/50] [abbrv] git commit: updated refs/heads/statscollector-graphite to 621156c

CLOUDSTACK-7408: Fixed - Private key of the ssh keypair was getting corrupted

Signed-off-by: SrikanteswaraRao Talluri <ta...@apache.org>


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

Branch: refs/heads/statscollector-graphite
Commit: e921ec6ec79c50096d58264d60c15091969ff888
Parents: 9e5da75
Author: Gaurav Aradhye <ga...@clogeny.com>
Authored: Tue Sep 23 14:18:18 2014 +0530
Committer: SrikanteswaraRao Talluri <ta...@apache.org>
Committed: Fri Sep 26 16:26:56 2014 +0530

----------------------------------------------------------------------
 tools/marvin/marvin/lib/base.py  |  8 +++++---
 tools/marvin/marvin/lib/utils.py |  7 +++++--
 tools/marvin/marvin/sshClient.py | 20 +++++++++++++++++---
 3 files changed, 27 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e921ec6e/tools/marvin/marvin/lib/base.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py
index 5bd8931..d623386 100755
--- a/tools/marvin/marvin/lib/base.py
+++ b/tools/marvin/marvin/lib/base.py
@@ -552,7 +552,7 @@ class VirtualMachine:
 
     def get_ssh_client(
             self, ipaddress=None, reconnect=False, port=None,
-            keyPairFileLocation=None):
+            keyPairFileLocation=None, knownHostsFilePath=None):
         """Get SSH object of VM"""
 
         # If NAT Rules are not created while VM deployment in Advanced mode
@@ -571,14 +571,16 @@ class VirtualMachine:
                 self.ssh_port,
                 self.username,
                 self.password,
-                keyPairFileLocation=keyPairFileLocation
+                keyPairFileLocation=keyPairFileLocation,
+                knownHostsFilePath=knownHostsFilePath
             )
         self.ssh_client = self.ssh_client or is_server_ssh_ready(
             self.ssh_ip,
             self.ssh_port,
             self.username,
             self.password,
-            keyPairFileLocation=keyPairFileLocation
+            keyPairFileLocation=keyPairFileLocation,
+            knownHostsFilePath=knownHostsFilePath
         )
         return self.ssh_client
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e921ec6e/tools/marvin/marvin/lib/utils.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/lib/utils.py b/tools/marvin/marvin/lib/utils.py
index 8788b3b..b58b59d 100644
--- a/tools/marvin/marvin/lib/utils.py
+++ b/tools/marvin/marvin/lib/utils.py
@@ -121,7 +121,9 @@ def cleanup_resources(api_client, resources):
         obj.delete(api_client)
 
 
-def is_server_ssh_ready(ipaddress, port, username, password, retries=20, retryinterv=30, timeout=10.0, keyPairFileLocation=None):
+def is_server_ssh_ready(ipaddress, port, username, password, retries=20,
+        retryinterv=30, timeout=10.0, keyPairFileLocation=None,
+        knownHostsFilePath=None):
     '''
     @Name: is_server_ssh_ready
     @Input: timeout: tcp connection timeout flag,
@@ -140,7 +142,8 @@ def is_server_ssh_ready(ipaddress, port, username, password, retries=20, retryin
             keyPairFiles=keyPairFileLocation,
             retries=retries,
             delay=retryinterv,
-            timeout=timeout)
+            timeout=timeout,
+            knownHostsFilePath=knownHostsFilePath)
     except Exception, e:
         raise Exception("SSH connection has Failed. Waited %ss. Error is %s" % (retries * retryinterv, str(e)))
     else:

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e921ec6e/tools/marvin/marvin/sshClient.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/sshClient.py b/tools/marvin/marvin/sshClient.py
index df2eeee..f027890 100644
--- a/tools/marvin/marvin/sshClient.py
+++ b/tools/marvin/marvin/sshClient.py
@@ -24,6 +24,7 @@ from paramiko import (BadHostKeyException,
                       SFTPClient)
 import socket
 import time
+import os
 from marvin.cloudstackException import (
     internalError,
     GetDetailExceptionInfo
@@ -49,7 +50,8 @@ class SshClient(object):
     '''
 
     def __init__(self, host, port, user, passwd, retries=60, delay=10,
-                 log_lvl=logging.DEBUG, keyPairFiles=None, timeout=10.0):
+                 log_lvl=logging.DEBUG, keyPairFiles=None, timeout=10.0,
+                 knownHostsFilePath=None):
         self.host = None
         self.port = 22
         self.user = user
@@ -77,6 +79,18 @@ class SshClient(object):
             self.timeout = timeout
         if port is not None and port >= 0:
             self.port = port
+
+        # If the known_hosts file is not at default location,
+        # then its location can be passed, or else the default
+        # path will be considered (which is ~/.ssh/known_hosts)
+        if knownHostsFilePath:
+            self.knownHostsFilePath = knownHostsFilePath
+        else:
+            self.knownHostsFilePath = os.path.expanduser(
+                os.path.join(
+                    "~",
+                    ".ssh",
+                    "known_hosts"))
         if self.createConnection() == FAILED:
             raise internalError("SSH Connection Failed")
 
@@ -120,14 +134,14 @@ class SshClient(object):
                                      password=self.passwd,
                                      timeout=self.timeout)
                 else:
-                    self.ssh.load_host_keys(self.keyPairFiles)
+                    self.ssh.load_host_keys(self.knownHostsFilePath)
                     self.ssh.connect(hostname=self.host,
                                      port=self.port,
                                      username=self.user,
                                      password=self.passwd,
                                      key_filename=self.keyPairFiles,
                                      timeout=self.timeout,
-                                     look_for_keys=True
+                                     look_for_keys=False
                                      )
                 self.logger.debug("===SSH to Host %s port : %s SUCCESSFUL==="
                                   % (str(self.host), str(self.port)))