aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Paraskevopoulos <geopar@intracom-telecom.com>2016-12-13 16:13:42 +0200
committerGeorge Paraskevopoulos <geopar@intracom-telecom.com>2016-12-13 16:13:42 +0200
commit6be4eca2a480d4fdf78d33b879b9807236513fa7 (patch)
treeb29218e1e38d049e1b7fe74664d8e880024f59cf
parent8b09f0ad06e5ae941fc497754cc5778fae9018de (diff)
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 <geopar@intracom-telecom.com>
-rw-r--r--tests/functest/odl-sfc/SSHUtils.py120
-rw-r--r--tests/functest/odl-sfc/run_tests.py2
-rw-r--r--tests/functest/odl-sfc/utils.py2
3 files changed, 2 insertions, 122 deletions
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