2
2
import urllib3
3
3
from tabulate import tabulate
4
4
import re
5
- from datetime import datetime
5
+ from datetime import datetime , timedelta
6
6
import monitor
7
7
import argparse
8
8
import configparser
15
15
16
16
JENKINS = config_vars .get ('Settings' , 'JENKINS' )
17
17
18
+ def get_release_date ():
19
+ '''
20
+ Fetch release start date and end date
21
+ Returns:
22
+ Date: Start date
23
+ Date: End date
24
+ '''
25
+ release = input ("Enter the release: " ) #release that needs to be checked
26
+ assert len (release .strip ()) != 0 , "Release value should not be empty"
27
+ nxt_rls = input ("Enter the next release (provide latest if no next release): " ) #next release or latest
28
+ assert len (nxt_rls .strip ()) != 0 , "Next release value should not be empty"
29
+ r = re .compile (r"^\d*[.,]?\d*$" )
30
+ if re .match (r ,release )== False :
31
+ print ("Enter valid release version" )
32
+
33
+ try :
34
+
35
+ release_date_str = monitor .fetch_release_date (release )
36
+ release_date = datetime .strptime (release_date_str ,"%Y-%m-%d %H:%M:%S" )
37
+
38
+ if nxt_rls != "latest" :
39
+ nxt_rls_str = monitor .fetch_release_date (nxt_rls )
40
+ nxt_rls_date = datetime .strptime (nxt_rls_str ,"%Y-%m-%d %H:%M:%S" )
41
+ else :
42
+ nxt_rls_date = datetime .now ()
43
+ except ValueError :
44
+ print ("Invalid date format" )
45
+ return None
46
+
47
+ return nxt_rls_date ,release_date
18
48
19
49
20
50
def get_date_input ():
@@ -33,18 +63,14 @@ def get_date_input():
33
63
elif JENKINS == "True" :
34
64
date_str_1 = config_vars .get ('Settings' , 'before_date' )
35
65
date_str_2 = config_vars .get ('Settings' , 'after_date' )
36
-
37
66
try :
38
67
start_date = datetime .strptime (date_str_1 ,"%Y-%m-%d" )
39
68
end_date = datetime .strptime (date_str_2 ,"%Y-%m-%d" )
40
- start_date = start_date .date ()
41
- end_date = end_date .date ()
42
69
return start_date ,end_date
43
70
except ValueError :
44
71
print ("Invalid date format" )
45
72
return None
46
73
47
-
48
74
def check_for_node_crashes (job_list , zone ):
49
75
"""
50
76
Check for node crash across all the provided job list
@@ -218,6 +244,7 @@ def get_query_options():
218
244
print ("4. Failed testcases" )
219
245
print ("5. Get builds with testcase failure" )
220
246
print ("6. Get testcase failure frequency" )
247
+ print ("7. Get build based on release " )
221
248
option = input ("Enter the option: " )
222
249
223
250
elif JENKINS == "True" :
@@ -264,9 +291,14 @@ def main():
264
291
265
292
ci_list = display_ci_links (config_data ,filter )
266
293
if isinstance (ci_list ,dict ):
267
- start_date ,end_date = get_date_input ()
294
+ option = get_query_options ()
295
+
296
+ if option == '7' :
297
+ start_date ,end_date = get_release_date ()
298
+ else :
299
+ start_date ,end_date = get_date_input ()
300
+
268
301
if start_date != None and end_date != None :
269
- option = get_query_options ()
270
302
print ("Checking runs from" ,end_date ,"to" ,start_date )
271
303
272
304
if option == '1' :
@@ -337,6 +369,11 @@ def main():
337
369
print (len (spy_links ),"builds have run in the date range of" ,start_date ,"to" ,end_date )
338
370
print_tc_frequency (spy_links ,zone = args .zone ,tc_name = tc_list )
339
371
monitor .final_job_list = []
372
+ if option == '7' :
373
+ for ci_name ,ci_link in ci_list .items ():
374
+ spy_links = monitor .get_jobs_with_date (ci_link ,start_date ,end_date )
375
+ monitor .get_detailed_job_info (spy_links ,ci_name ,zone = args .zone )
376
+ monitor .final_job_list = []
340
377
341
378
if __name__ == "__main__" :
342
379
main ()
0 commit comments