Revert "fix(IPsecUtil): Delete keywords no longer used"
[csit.git] / resources / libraries / python / SetupFramework.py
index 880b1c9..95ca8a7 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2023 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:
@@ -56,7 +56,8 @@ def pack_framework_dir():
     run(
         [
             u"tar", u"--sparse", u"--exclude-vcs", u"--exclude=output*.xml",
-            u"--exclude=./tmp", u"-zcf", file_name, u"."
+            u"--exclude=./tmp", u"--exclude=./env", u"--exclude=./.git",
+            u"-zcf", file_name, u"."
         ], msg=u"Could not pack testing framework"
     )
 
@@ -105,7 +106,7 @@ def extract_tarball_at_node(tarball, node):
         node, cmd,
         message=f"Failed to extract {tarball} at node {node[u'type']} "
         f"host {node[u'host']}, port {node[u'port']}",
-        timeout=60, include_reason=True
+        timeout=600, include_reason=True
     )
     logger.console(
         f"Extracting tarball to {con.REMOTE_FW_DIR} on {node[u'type']} "
@@ -116,9 +117,13 @@ def extract_tarball_at_node(tarball, node):
 def create_env_directory_at_node(node):
     """Create fresh virtualenv to a directory, install pip requirements.
 
+    Return stdout and stderr of the command,
+    so we see which installs are behaving weird (e.g. attempting download).
+
     :param node: Node to create virtualenv on.
     :type node: dict
-    :returns: nothing
+    :returns: Stdout and stderr.
+    :rtype: str, str
     :raises RuntimeError: When failed to setup virtualenv.
     """
     logger.console(
@@ -129,8 +134,8 @@ def create_env_directory_at_node(node):
         f"-p $(which python3) --system-site-packages --never-download env " \
         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,
+    stdout, stderr = exec_cmd_no_error(
+        node, cmd, timeout=300, include_reason=True,
         message=f"Failed install at node {node[u'type']} host {node[u'host']}, "
         f"port {node[u'port']}"
     )
@@ -138,6 +143,7 @@ def create_env_directory_at_node(node):
         f"Virtualenv setup on {node[u'type']} host {node[u'host']}, "
         f"port {node[u'port']} done."
     )
+    return stdout, stderr
 
 
 def setup_node(node, tarball, remote_tarball, results=None, logs=None):
@@ -160,7 +166,10 @@ def setup_node(node, tarball, remote_tarball, results=None, logs=None):
         copy_tarball_to_node(tarball, node)
         extract_tarball_at_node(remote_tarball, node)
         if node[u"type"] == NodeType.TG:
-            create_env_directory_at_node(node)
+            stdout, stderr = create_env_directory_at_node(node)
+            if isinstance(logs, list):
+                logs.append(f"{node[u'host']} Env stdout: {stdout}")
+                logs.append(f"{node[u'host']} Env stderr: {stderr}")
     except Exception:
         # any exception must result in result = False
         # since this runs in a thread and can't be caught anywhere else
@@ -206,7 +215,7 @@ def delete_framework_dir(node):
         node, f"sudo rm -rf {con.REMOTE_FW_DIR}",
         message=f"Framework delete failed at node {node[u'type']} "
         f"host {node[u'host']}, port {node[u'port']}",
-        timeout=100, include_reason=True
+        timeout=100, include_reason=True,
     )
     logger.console(
         f"Deleting framework directory on {node[u'type']} host {node[u'host']},"
@@ -250,9 +259,9 @@ def cleanup_node(node, results=None, logs=None):
 class SetupFramework:
     """Setup suite run on topology nodes.
 
-    Many VAT/CLI based tests need the scripts at remote hosts before executing
-    them. This class packs the whole testing directory and copies it over
-    to all nodes in topology under /tmp/
+    Some tests need the scripts at remote hosts before executing them.
+    This class packs the whole testing directory and copies it over
+    to all nodes in topology under /tmp/.
     """
 
     @staticmethod