Fix underlay.get_logs() method

- use salt minions instead of underlay SSH to get logs from
  all registered nodes
- use IP addresses from underlay.config_ssh for such nodes
  which hostnames not matched any minion
- archive the full dump of logs to /tmp instead of /root
  (archiving to /root caused duplicates in the archive at the
  second time)
- use ${ENV_NAME} as part of the name of the archive in CICD
  jobs

Change-Id: I21e6f5cb8eff6c5bccc707c5c88e509a7bf3a166
diff --git a/tcp_tests/managers/underlay_ssh_manager.py b/tcp_tests/managers/underlay_ssh_manager.py
index 66f686b..cf1fb2b 100644
--- a/tcp_tests/managers/underlay_ssh_manager.py
+++ b/tcp_tests/managers/underlay_ssh_manager.py
@@ -483,23 +483,43 @@
                               timeout=600)
 
             # create target dir for archives
-            master.check_call("mkdir /root/dump/")
+            master.check_call("mkdir -p /root/dump/")
+
+            saltkeys_res = master.check_call(
+                "salt-key --list all --out=yaml", verbose=True)
+
+            saltkeys_all = yaml.load(saltkeys_res.stdout_str)
+            minions = saltkeys_all['minions']
+
+            # add nodes registered self.config_ssh,
+            # to get logs from nodes without salt minions
+            for node in self.config_ssh:
+                # If there is no any minion which name starts
+                # with the same hostname as node['node_name']
+                if not any(minion.startswith(node['node_name'])
+                           for minion in minions):
+                    # Use IP address from node['host'] to access the node
+                    # because cfg01 node may not know it's hostname.
+                    # Note: SSH public key from system.openssh.server.team.lab
+                    #       should already be configured on that node
+                    #       in order to access the node from cfg01
+                    minions.append(str(node['host']))
 
             # get archived artifacts to the master node
-            for node in self.config_ssh:
-                LOG.info("Getting archived artifacts from the node {0}"
-                         .format(node['node_name']))
+            for minion in minions:
+                LOG.info("Getting archived artifacts from the minion {0}"
+                         .format(minion))
                 master.check_call("rsync -aruv {0}:/root/*.tar.gz "
-                                  "/root/dump/".format(node['node_name']),
+                                  "/root/dump/".format(minion.strip()),
                                   raise_on_err=False,
                                   timeout=120)
 
-            destination_name = '/root/{0}_dump.tar.gz'.format(artifact_name)
-            # Archive the artifacts from all nodes
+            destination_name = '/tmp/{0}_dump.tar.gz'.format(artifact_name)
+            # Archive the artifacts from all minions
             master.check_call(
                 'cd /root/dump/;'
                 'tar --absolute-names --warning=no-file-changed -czf '
-                ' {0} ./'.format(destination_name))
+                ' {0} ./'.format(destination_name), verbose=True)
 
             # Download the artifact to the host
             LOG.info("Downloading the artifact {0}".format(destination_name))