From d42ea1f0358cab4aec7da51f580a64df1fa3013d Mon Sep 17 00:00:00 2001 From: Artem Panchenko Date: Tue, 10 May 2016 18:16:39 +0300 Subject: [PATCH] Fallback to 'root' if provided login doesn't work In SSH manager try to use 'root' while connecting to slave nodes if authentication fails with login provided in settings. Change-Id: I647add5c67c51c26f710a3a0e92b0498478a90f9 Closes-bug: #1580199 --- fuelweb_test/helpers/ssh_manager.py | 39 ++++++++++++++++++----------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/fuelweb_test/helpers/ssh_manager.py b/fuelweb_test/helpers/ssh_manager.py index 6d09e37f5..3fb3acb3e 100644 --- a/fuelweb_test/helpers/ssh_manager.py +++ b/fuelweb_test/helpers/ssh_manager.py @@ -21,6 +21,7 @@ import traceback from devops.helpers.helpers import wait from devops.models.node import SSHClient from paramiko import RSAKey +from paramiko.ssh_exception import BadAuthenticationType import six import yaml @@ -42,6 +43,7 @@ class SSHManager(object): self.admin_login = None self.__admin_password = None self.slave_login = None + self.slave_fallback_login = 'root' self.__slave_password = None @property @@ -106,21 +108,30 @@ class SSHManager(object): keys = self._get_keys() if ip != self.admin_ip else [] if ip == self.admin_ip: - username = self.admin_login - password = self.__admin_password + ssh_client = SSHClient( + host=ip, + port=port, + username=self.admin_login, + password=self.__admin_password, + private_keys=keys + ) else: - username = self.slave_login - password = self.__slave_password - - ssh_client = SSHClient( - host=ip, - port=port, - username=username, - password=password, - private_keys=keys - ) - - if ip != self.admin_ip: + try: + ssh_client = SSHClient( + host=ip, + port=port, + username=self.slave_login, + password=self.__slave_password, + private_keys=keys + ) + except BadAuthenticationType: + ssh_client = SSHClient( + host=ip, + port=port, + username=self.slave_fallback_login, + password=self.__slave_password, + private_keys=keys + ) ssh_client.sudo_mode = True self.connections[(ip, port)] = ssh_client logger.debug('SSH_MANAGER:Return existed connection for '