From 6be4eca2a480d4fdf78d33b879b9807236513fa7 Mon Sep 17 00:00:00 2001 From: George Paraskevopoulos Date: Tue, 13 Dec 2016 16:13:42 +0200 Subject: Use SSHUtils from releng JIRA: SFC-61 Releng is installed as a pip module and their SSHUtils module under "opnfv.utils.SSHUtils" is compatible with ours so we should use the one from releng repo Change-Id: I2f03eaa78b3b1b19c37b38ae77bef8553a076e7b Signed-off-by: George Paraskevopoulos --- tests/functest/odl-sfc/SSHUtils.py | 120 ------------------------------------ tests/functest/odl-sfc/run_tests.py | 2 +- tests/functest/odl-sfc/utils.py | 2 +- 3 files changed, 2 insertions(+), 122 deletions(-) delete mode 100644 tests/functest/odl-sfc/SSHUtils.py diff --git a/tests/functest/odl-sfc/SSHUtils.py b/tests/functest/odl-sfc/SSHUtils.py deleted file mode 100644 index 9c8c2c72..00000000 --- a/tests/functest/odl-sfc/SSHUtils.py +++ /dev/null @@ -1,120 +0,0 @@ -############################################################################## -# Copyright (c) 2015 Ericsson AB and others. -# Authors: George Paraskevopoulos (geopar@intracom-telecom.com) -# Jose Lausuch (jose.lausuch@ericsson.com) -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - - -import paramiko -import functest.utils.functest_logger as rl -import os - -logger = rl.Logger('SSHUtils').getLogger() - - -def get_ssh_client(hostname, username, password=None, proxy=None): - client = None - try: - if proxy is None: - client = paramiko.SSHClient() - else: - client = ProxyHopClient() - client.configure_jump_host(proxy['ip'], - proxy['username'], - proxy['password']) - - if client is None: - raise Exception('Could not connect to client') - - client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - client.connect(hostname, - username=username, - password=password) - return client - except Exception, e: - logger.error(e) - return None - - -def get_file(ssh_conn, src, dest): - try: - sftp = ssh_conn.open_sftp() - sftp.get(src, dest) - return True - except Exception, e: - logger.error("Error [get_file(ssh_conn, '%s', '%s']: %s" % - (src, dest, e)) - return None - - -def put_file(ssh_conn, src, dest): - try: - sftp = ssh_conn.open_sftp() - sftp.put(src, dest) - return True - except Exception, e: - logger.error("Error [put_file(ssh_conn, '%s', '%s']: %s" % - (src, dest, e)) - return None - - -class ProxyHopClient(paramiko.SSHClient): - ''' - Connect to a remote server using a proxy hop - ''' - def __init__(self, *args, **kwargs): - self.logger = rl.Logger("ProxyHopClient").getLogger() - self.proxy_ssh = None - self.proxy_transport = None - self.proxy_channel = None - self.proxy_ip = None - self.proxy_ssh_key = None - self.local_ssh_key = os.path.join(os.getcwd(), 'id_rsa') - super(ProxyHopClient, self).__init__(*args, **kwargs) - - def configure_jump_host(self, jh_ip, jh_user, jh_pass, - jh_ssh_key='/root/.ssh/id_rsa'): - self.proxy_ip = jh_ip - self.proxy_ssh_key = jh_ssh_key - self.proxy_ssh = paramiko.SSHClient() - self.proxy_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - self.proxy_ssh.connect(jh_ip, - username=jh_user, - password=jh_pass) - self.proxy_transport = self.proxy_ssh.get_transport() - - def connect(self, hostname, port=22, username='root', password=None, - pkey=None, key_filename=None, timeout=None, allow_agent=True, - look_for_keys=True, compress=False, sock=None, gss_auth=False, - gss_kex=False, gss_deleg_creds=True, gss_host=None, - banner_timeout=None): - try: - if self.proxy_ssh is None: - raise Exception('You must configure the jump ' - 'host before calling connect') - - get_file_res = get_file(self.proxy_ssh, - self.proxy_ssh_key, - self.local_ssh_key) - if get_file_res is None: - raise Exception('Could\'t fetch SSH key from jump host') - proxy_key = (paramiko.RSAKey - .from_private_key_file(self.local_ssh_key)) - - self.proxy_channel = self.proxy_transport.open_channel( - "direct-tcpip", - (hostname, 22), - (self.proxy_ip, 22)) - - self.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - super(ProxyHopClient, self).connect(hostname, - username=username, - pkey=proxy_key, - sock=self.proxy_channel) - os.remove(self.local_ssh_key) - except Exception, e: - self.logger.error(e) diff --git a/tests/functest/odl-sfc/run_tests.py b/tests/functest/odl-sfc/run_tests.py index 451ce564..654fcaf7 100644 --- a/tests/functest/odl-sfc/run_tests.py +++ b/tests/functest/odl-sfc/run_tests.py @@ -19,7 +19,7 @@ import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as ft_utils import yaml import utils -import SSHUtils as ssh_utils +import opnfv.utils.SSHUtils as ssh_utils parser = argparse.ArgumentParser() diff --git a/tests/functest/odl-sfc/utils.py b/tests/functest/odl-sfc/utils.py index de23b812..ac95da84 100644 --- a/tests/functest/odl-sfc/utils.py +++ b/tests/functest/odl-sfc/utils.py @@ -6,7 +6,7 @@ import functest.utils.functest_utils as ft_utils import functest.utils.openstack_utils as os_utils import re import json -import SSHUtils as ssh_utils +import opnfv.utils.SSHUtils as ssh_utils import functools -- cgit 1.2.3-korg