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
This commit is contained in:
Artem Panchenko 2016-05-10 18:16:39 +03:00 committed by Dennis Dmitriev
parent ed8305b871
commit d42ea1f035
1 changed files with 25 additions and 14 deletions

View File

@ -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 '