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

This reverts commit e921ec6ec79c50096d58264d60c15091969ff888.

CLOUDSTACK-7408: sshClient.py - removing function load_host_keys(). This function is used to load host keys from local host keys file and to save back the host key. It is not needed while running test cases because we are connecting to unknown host anyway and don't want to use any local host key file. We have the AutoAddPolicy for missing host key file, hence whenever ssh connects to a new host, it will save the host key in memory temporarily.

Signed-off-by: SrikanteswaraRao Talluri <talluri@apache.org>
This commit is contained in:
Gaurrav Aradhye 2014-10-30 12:23:49 +05:30 committed by SrikanteswaraRao Talluri
parent 0d6e3e48ba
commit 9e19a9afdb
3 changed files with 6 additions and 26 deletions

View File

@ -552,7 +552,7 @@ class VirtualMachine:
def get_ssh_client( def get_ssh_client(
self, ipaddress=None, reconnect=False, port=None, self, ipaddress=None, reconnect=False, port=None,
keyPairFileLocation=None, knownHostsFilePath=None): keyPairFileLocation=None):
"""Get SSH object of VM""" """Get SSH object of VM"""
# If NAT Rules are not created while VM deployment in Advanced mode # If NAT Rules are not created while VM deployment in Advanced mode
@ -571,16 +571,14 @@ class VirtualMachine:
self.ssh_port, self.ssh_port,
self.username, self.username,
self.password, self.password,
keyPairFileLocation=keyPairFileLocation, keyPairFileLocation=keyPairFileLocation
knownHostsFilePath=knownHostsFilePath
) )
self.ssh_client = self.ssh_client or is_server_ssh_ready( self.ssh_client = self.ssh_client or is_server_ssh_ready(
self.ssh_ip, self.ssh_ip,
self.ssh_port, self.ssh_port,
self.username, self.username,
self.password, self.password,
keyPairFileLocation=keyPairFileLocation, keyPairFileLocation=keyPairFileLocation
knownHostsFilePath=knownHostsFilePath
) )
return self.ssh_client return self.ssh_client

View File

@ -121,9 +121,7 @@ def cleanup_resources(api_client, resources):
obj.delete(api_client) obj.delete(api_client)
def is_server_ssh_ready(ipaddress, port, username, password, retries=20, def is_server_ssh_ready(ipaddress, port, username, password, retries=20, retryinterv=30, timeout=10.0, keyPairFileLocation=None):
retryinterv=30, timeout=10.0, keyPairFileLocation=None,
knownHostsFilePath=None):
''' '''
@Name: is_server_ssh_ready @Name: is_server_ssh_ready
@Input: timeout: tcp connection timeout flag, @Input: timeout: tcp connection timeout flag,
@ -142,8 +140,7 @@ def is_server_ssh_ready(ipaddress, port, username, password, retries=20,
keyPairFiles=keyPairFileLocation, keyPairFiles=keyPairFileLocation,
retries=retries, retries=retries,
delay=retryinterv, delay=retryinterv,
timeout=timeout, timeout=timeout)
knownHostsFilePath=knownHostsFilePath)
except Exception, e: except Exception, e:
raise Exception("SSH connection has Failed. Waited %ss. Error is %s" % (retries * retryinterv, str(e))) raise Exception("SSH connection has Failed. Waited %ss. Error is %s" % (retries * retryinterv, str(e)))
else: else:

View File

@ -24,7 +24,6 @@ from paramiko import (BadHostKeyException,
SFTPClient) SFTPClient)
import socket import socket
import time import time
import os
from marvin.cloudstackException import ( from marvin.cloudstackException import (
internalError, internalError,
GetDetailExceptionInfo GetDetailExceptionInfo
@ -50,8 +49,7 @@ class SshClient(object):
''' '''
def __init__(self, host, port, user, passwd, retries=60, delay=10, 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.host = None
self.port = 22 self.port = 22
self.user = user self.user = user
@ -79,18 +77,6 @@ class SshClient(object):
self.timeout = timeout self.timeout = timeout
if port is not None and port >= 0: if port is not None and port >= 0:
self.port = port 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: if self.createConnection() == FAILED:
raise internalError("SSH Connection Failed") raise internalError("SSH Connection Failed")
@ -134,7 +120,6 @@ class SshClient(object):
password=self.passwd, password=self.passwd,
timeout=self.timeout) timeout=self.timeout)
else: else:
self.ssh.load_host_keys(self.knownHostsFilePath)
self.ssh.connect(hostname=self.host, self.ssh.connect(hostname=self.host,
port=self.port, port=self.port,
username=self.user, username=self.user,