1
1
import os
2
- import sys
3
2
import requests
3
+ import shutil
4
+ import sys
4
5
import tempfile
5
6
6
- from pbench .common .logger import get_pbench_logger
7
7
from pbench .agent import PbenchAgentConfig
8
8
from pbench .agent .results import MakeResultTb , CopyResultTb
9
+ from pbench .common .logger import get_pbench_logger
9
10
10
11
11
12
def move_results (ctx , _user , _prefix , _show_server ):
@@ -47,9 +48,6 @@ def move_results(ctx, _user, _prefix, _show_server):
47
48
)
48
49
sys .exit (1 )
49
50
50
- runs_copied = 0
51
- failures = 0
52
-
53
51
try :
54
52
temp_dir = tempfile .mkdtemp (
55
53
dir = config .pbench_tmp , prefix = "pbench-move-results."
@@ -58,42 +56,42 @@ def move_results(ctx, _user, _prefix, _show_server):
58
56
logger .error ("Failed to create temporary directory" )
59
57
sys .exit (1 )
60
58
61
- dirs = [
62
- _dir
63
- for _dir in next (os .walk (config .pbench_run ))[1 ]
64
- if not _dir .startswith ("tools-" ) and not _dir .startswith ("tmp" )
65
- ]
59
+ runs_copied = 0
60
+ failures = 0
66
61
67
- for _dir in dirs :
68
- result_dir = config .pbench_run / _dir
62
+ for dirent in config .pbench_run .iterdir ():
63
+ if not dirent .is_dir ():
64
+ continue
65
+ if dirent .name .startswith ("tools-" ) or dirent .name == "tmp" :
66
+ continue
67
+ result_dir = dirent
69
68
mrt = MakeResultTb (result_dir , temp_dir , _user , _prefix , config , logger )
70
69
result_tb_name = mrt .make_result_tb ()
71
- if result_tb_name :
72
- crt = CopyResultTb (controller , result_tb_name , config , logger )
73
- copy_result = crt .copy_result_tb ()
74
- try :
75
- os .remove (result_tb_name )
76
- os .remove (f"{ result_tb_name } .md5" )
77
- except OSError :
78
- logger .error ("rm failed to remove %s and its .md5 file" , result_tb_name )
79
- sys .exit (1 )
80
- if not copy_result :
81
- failures += 1
82
- continue
70
+ assert (
71
+ result_tb_name
72
+ ), "Logic bomb! make_result_tb() always returns a tar ball name"
73
+ crt = CopyResultTb (controller , result_tb_name , config , logger )
74
+ crt .copy_result_tb ()
75
+ try :
76
+ # We always remove the constructed tar ball, regardless of success
77
+ # or failure, since we keep the result directory below on failure.
78
+ os .remove (result_tb_name )
79
+ os .remove (f"{ result_tb_name } .md5" )
80
+ except OSError :
81
+ logger .error ("rm failed to remove %s and its .md5 file" , result_tb_name )
82
+ sys .exit (1 )
83
83
84
- try :
85
- os .remove (result_dir )
86
- except OSError :
87
- logger .error (
88
- "rm failed to remove the %s directory hierarchy" , result_dir
89
- )
90
- sys .exit (1 )
84
+ try :
85
+ shutil .rmtree (result_dir )
86
+ except OSError :
87
+ logger .error ("rm failed to remove the %s directory hierarchy" , result_dir )
88
+ sys .exit (1 )
91
89
92
- runs_copied += 1
90
+ runs_copied += 1
93
91
94
92
if runs_copied + failures > 0 :
95
93
logger .debug (
96
94
"successfully moved %s runs, encountered %s failures" , runs_copied , failures
97
95
)
98
96
99
- return failures
97
+ return runs_copied , failures
0 commit comments