FrameworkSetup: Detect socket.timeout
[csit.git] / resources / libraries / python / SetupFramework.py
index 45447e9..7e3b36c 100644 (file)
@@ -1,4 +1,4 @@
-# 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:
@@ -17,6 +17,7 @@ supposed to end up here.
 """
 
 from os import environ, remove
+import socket  # For catching socket.timeout.
 from tempfile import NamedTemporaryFile
 import threading
 
@@ -126,7 +127,8 @@ def create_env_directory_at_node(node):
     )
     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']}, "
@@ -157,7 +159,7 @@ def setup_node(node, tarball, remote_tarball, results=None):
         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}"
@@ -270,7 +272,7 @@ class SetupFramework:
             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: