Browse code

[stable-2.9] Exclude tmp dir from ansible-test results copy.

This fixes test errors related to failures copying temporary test results files from a remote system back to the local system.

It also speeds up processing of test results and reduces network utilization by avoiding the temporary files.
(cherry picked from commit 3f2380cccefe4c4352970324b57c7e3ee22558a1)

Co-authored-by: Matt Clay <matt@mystile.com>

Matt Clay authored on 2019/10/01 06:01:58
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,2 @@
0
+bugfixes:
1
+    - ansible-test now correctly excludes the test results temporary directory when copying files from the remote test system to the local system
... ...
@@ -425,7 +425,7 @@ def delegate_docker(args, exclude, require, integration_targets):
425 425
                 remote_temp_file = os.path.join('/root', remote_results_name + '.tgz')
426 426
 
427 427
                 with tempfile.NamedTemporaryFile(prefix='ansible-result-', suffix='.tgz') as local_result_fd:
428
-                    docker_exec(args, test_id, ['tar', 'czf', remote_temp_file, '-C', remote_test_root, remote_results_name])
428
+                    docker_exec(args, test_id, ['tar', 'czf', remote_temp_file, '--exclude', ResultType.TMP.name, '-C', remote_test_root, remote_results_name])
429 429
                     docker_get(args, test_id, remote_temp_file, local_result_fd.name)
430 430
                     run_command(args, ['tar', 'oxzf', local_result_fd.name, '-C', local_test_root])
431 431
         finally:
... ...
@@ -547,7 +547,7 @@ def delegate_remote(args, exclude, require, integration_targets):
547 547
                 remote_results_name = os.path.basename(remote_results_root)
548 548
                 remote_temp_path = os.path.join('/tmp', remote_results_name)
549 549
 
550
-                manage.ssh('rm -rf {0} && cp -a {1} {0} && chmod -R a+r {0}'.format(remote_temp_path, remote_results_root))
550
+                manage.ssh('rm -rf {0} && mkdir {0} && cp -a {1}/* {0}/ && chmod -R a+r {0}'.format(remote_temp_path, remote_results_root))
551 551
                 manage.download(remote_temp_path, local_test_root)
552 552
     finally:
553 553
         if args.remote_terminate == 'always' or (args.remote_terminate == 'success' and success):