-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
"""
from os import environ, remove
+import socket # For catching socket.timeout.
from tempfile import NamedTemporaryFile
import threading
)
cmd = f"cd {con.REMOTE_FW_DIR} && rm -rf env && virtualenv " \
f"-p $(which python3) --system-site-packages --never-download env " \
- f"&& source env/bin/activate && pip3 install -r requirements.txt"
+ f"&& source env/bin/activate && ANSIBLE_SKIP_CONFLICT_CHECK=1 " \
+ f"pip3 install -r requirements.txt"
exec_cmd_no_error(
node, cmd, timeout=100, include_reason=True,
message=f"Failed install at node {node[u'type']} host {node[u'host']}, "
extract_tarball_at_node(remote_tarball, node)
if node[u"type"] == NodeType.TG:
create_env_directory_at_node(node)
- except RuntimeError as exc:
+ except (RuntimeError, socket.timeout) as exc:
logger.console(
f"Node {node[u'type']} host {node[u'host']}, port {node[u'port']} "
f"setup failed, error: {exc!r}"
threads.append(thread)
logger.info(
- f"Executing node setups in parallel, waiting for threads to end"
+ u"Executing node setups in parallel, waiting for threads to end."
)
for thread in threads: