Update offline deployment test
Change-Id: I3c935be8ad6f038ce6c25221de6d09e93619c94d
diff --git a/tcp_tests/managers/envmanager_devops.py b/tcp_tests/managers/envmanager_devops.py
index 80818cf..1e7f66c 100644
--- a/tcp_tests/managers/envmanager_devops.py
+++ b/tcp_tests/managers/envmanager_devops.py
@@ -16,16 +16,21 @@
from devops import error
from devops.helpers import helpers
+from devops.helpers.helpers import ssh_client
from devops import models
from django import db
from oslo_config import cfg
+from paramiko.ssh_exception import (
+ AuthenticationException,
+ BadAuthenticationType)
+
+from tcp_tests.helpers import env_config
+from tcp_tests.helpers import exceptions
+from tcp_tests.helpers import ext
+from tcp_tests import logger
from tcp_tests import settings
from tcp_tests import settings_oslo
-from tcp_tests.helpers import env_config
-from tcp_tests.helpers import ext
-from tcp_tests.helpers import exceptions
-from tcp_tests import logger
LOG = logger.logger
@@ -305,8 +310,29 @@
for node in self.__env.get_nodes(role__in=underlay_node_roles):
LOG.info("Waiting for SSH on node '{0}' / {1} ...".format(
node.name, self.node_ip(node)))
+
+ def _ssh_wait(host,
+ port,
+ username=settings.SSH_NODE_CREDENTIALS['login'],
+ password=settings.SSH_NODE_CREDENTIALS['password'],
+ timeout=0):
+ try:
+ ssh = ssh_client.SSHClient(
+ host=host, port=port,
+ auth=ssh_client.SSHAuth(
+ username=username,
+ password=password))
+ except AuthenticationException:
+ return True
+ except BadAuthenticationType:
+ return True
+ except Exception:
+ return False
+
+ return ssh.execute('echo ok')['exit_code'] == 0
+
helpers.wait(
- lambda: helpers.tcp_ping(self.node_ip(node), 22),
+ lambda: _ssh_wait(self.node_ip(node), 22),
timeout=timeout,
timeout_msg="Node '{}' didn't open SSH in {} sec".format(
node.name, timeout
diff --git a/tcp_tests/managers/jenkins/client.py b/tcp_tests/managers/jenkins/client.py
index f781305..474713c 100644
--- a/tcp_tests/managers/jenkins/client.py
+++ b/tcp_tests/managers/jenkins/client.py
@@ -63,3 +63,6 @@
timeout=timeout,
timeout_msg='Timeout waiting, job {0} are not finished "{1}" build'
' still'.format(name, build_id))
+
+ def get_build_output(self, name, build_id):
+ return self.__client.get_build_console_output(name, build_id)
diff --git a/tcp_tests/managers/openstack_manager.py b/tcp_tests/managers/openstack_manager.py
index 8f6b140..feb270b 100644
--- a/tcp_tests/managers/openstack_manager.py
+++ b/tcp_tests/managers/openstack_manager.py
@@ -95,19 +95,23 @@
self,
target='gtw01', pattern=None,
conf_name='lvm_mcp.conf',
- registry=None):
+ registry=None, node_name=None):
if not registry:
registry = ('{0}/{1}'.format(settings.DOCKER_REGISTRY,
settings.DOCKER_NAME))
- target_name = [node_name for node_name
- in self.__underlay.node_names() if target in node_name]
+ if node_name is None and target is not None:
+ target_name = next(
+ name for name in self.__underlay.node_names()
+ if target in name)
+ else:
+ target_name = node_name
cmd = ("apt-get -y install docker.io")
- with self.__underlay.remote(node_name=target_name[0]) as node_remote:
+ with self.__underlay.remote(node_name=target_name) as node_remote:
result = node_remote.execute(cmd, verbose=True)
cmd_iptables = "iptables --policy FORWARD ACCEPT"
- with self.__underlay.remote(node_name=target_name[0]) as node_remote:
+ with self.__underlay.remote(node_name=target_name) as node_remote:
result = node_remote.execute(cmd_iptables, verbose=True)
with self.__underlay.remote(
diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index 06e7d0b..2b06dc3 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -198,10 +198,20 @@
'password': settings.SSH_NODE_CREDENTIALS['password']
}
- return [
- host(k, next(i for i in v['ipv4'] if i in pool_net))
- for k, v in hosts.items()
- if next(i for i in v['ipv4'] if i in pool_net)]
+ try:
+ ret = [
+ host(k, next(i for i in v['ipv4'] if i in pool_net))
+ for k, v in hosts.items()
+ if next(i for i in v['ipv4'] if i in pool_net)]
+ LOG.debug("Fetched ssh data from salt grains - {}".format(ret))
+ return ret
+ except StopIteration:
+ msg = ("Can't match nodes ip address with network cidr\n"
+ "Managment network - {net}\n"
+ "Host with address - {host_list}".format(
+ net=pool_net,
+ host_list={k: v['ipv4'] for k, v in hosts.items()}))
+ raise StopIteration(msg)
def service_status(self, tgt, service):
result = self.local(tgt=tgt, fun='service.status', args=service)
diff --git a/tcp_tests/managers/underlay_ssh_manager.py b/tcp_tests/managers/underlay_ssh_manager.py
index fce80cc..2c9ed55 100644
--- a/tcp_tests/managers/underlay_ssh_manager.py
+++ b/tcp_tests/managers/underlay_ssh_manager.py
@@ -175,6 +175,7 @@
else:
ssh_data = ssh
if ssh_data is None:
+ LOG.debug("config_ssh - {}".format(self.config_ssh))
raise Exception('Auth data for node was not found using '
'node_name="{}" , host="{}" , address_pool="{}"'
.format(node_name, host, address_pool))