66# Author: Jeny Sadadia <jeny.sadadia@collabora.com>
77
88import sys
9+
910import kernelci .config
1011from kernelci .legacy .cli import Args , Command , parse_opts
1112
1213from base import Service
1314
1415
1516class JobRetry (Service ):
16-
1717 def __init__ (self , configs , args ):
18- super ().__init__ (configs , args , ' job_retry' )
18+ super ().__init__ (configs , args , " job_retry" )
1919
2020 def _setup (self , args ):
21- return self ._api_helper .subscribe_filters ({
22- "state" : "done" ,
23- "result" : ("incomplete" , "fail" ),
24- "kind" : ("kbuild" , "job" ),
25- })
21+ return self ._api_helper .subscribe_filters (
22+ {
23+ "state" : "done" ,
24+ "result" : ("incomplete" , "fail" ),
25+ "kind" : ("kbuild" , "job" ),
26+ }
27+ )
2628
2729 def _stop (self , sub_id ):
2830 if sub_id :
2931 self ._api_helper .unsubscribe_filters (sub_id )
3032 sys .stdout .flush ()
3133
3234 def _find_parent_kind (self , node , api_helper , kind ):
33- parent_id = node .get (' parent' )
35+ parent_id = node .get (" parent" )
3436 if not parent_id :
3537 return None
3638 parent_node = api_helper .api .node .get (parent_id )
3739 if not parent_node :
3840 return None
39- if parent_node .get (' kind' ) == kind :
41+ if parent_node .get (" kind" ) == kind :
4042 return parent_node
4143 return self ._find_parent_kind (parent_node , api_helper , kind )
4244
@@ -59,10 +61,14 @@ def _run(self, sub_id):
5961
6062 # Check retry count before submitting a retry
6163 retry_counter = node .get ("retry_counter" , 0 )
62- self .log .debug (f"{ node ['id' ]} : Node current retry_counter: { retry_counter } " )
64+ self .log .debug (
65+ f"{ node ['id' ]} : Node current retry_counter: { retry_counter } "
66+ )
6367 if retry_counter >= 3 :
64- self .log .info (f"{ node ['id' ]} Job has already retried 3 times. \
65- Not submitting a retry." )
68+ self .log .info (
69+ f"{ node ['id' ]} Job has already retried 3 times. \
70+ Not submitting a retry."
71+ )
6672 continue
6773
6874 parent_kind = None
@@ -71,27 +77,39 @@ def _run(self, sub_id):
7177 if node .get ("kind" ) == "kbuild" :
7278 parent_kind = "checkout"
7379 if parent_kind :
74- event_data = self ._find_parent_kind (node , self ._api_helper , parent_kind )
80+ event_data = self ._find_parent_kind (
81+ node , self ._api_helper , parent_kind
82+ )
7583 if not event_data :
76- self .log .error (f"Not able to find parent node for { node ['id' ]} " )
84+ self .log .error (
85+ f"Not able to find parent node for { node ['id' ]} "
86+ )
7787 continue
7888 if node ["kind" ] == "kbuild" :
79- event_data ["jobfilter" ] = [f' { node [" name" ]} +' ]
89+ event_data ["jobfilter" ] = [f" { node [' name' ]} +" ]
8090 else :
8191 event_data ["jobfilter" ] = [node ["name" ]]
8292 # Change event data state to available to trigger jobs based on scheduler configs
8393 event_data ["state" ] = "available"
8494 if node ["kind" ] == "job" :
85- event_data ["platform_filter" ] = [node ["data" ].get ("platform" )]
95+ event_data ["platform_filter" ] = [
96+ node ["data" ].get ("platform" )
97+ ]
8698 event_data ["retry_counter" ] = retry_counter + 1
8799 event_data ["debug" ] = {"retry_by" : str (node ["id" ])}
88- self .log .debug (f"{ node ['id' ]} :Event data retry_counter: { event_data ['retry_counter' ]} " )
89- event = {'data' : event_data }
90- self ._api_helper .api .send_event ('retry' , event )
91- self .log .info (f"Job retry for node { node ['id' ]} submitted. Parent node: { event_data ['id' ]} " )
100+ self .log .debug (
101+ f"{ node ['id' ]} :Event data retry_counter: { event_data ['retry_counter' ]} "
102+ )
103+ event = {"data" : event_data }
104+ self ._api_helper .api .send_event ("retry" , event )
105+ self .log .info (
106+ f"Job retry for node { node ['id' ]} submitted. Parent node: { event_data ['id' ]} "
107+ )
92108 self .log .debug (f"Event:{ event } " )
93109 else :
94- self .log .error (f"Not able to retry the job as parent kind is unknown: { node ['id' ]} " )
110+ self .log .error (
111+ f"Not able to retry the job as parent kind is unknown: { node ['id' ]} "
112+ )
95113 return True
96114
97115
@@ -103,9 +121,9 @@ def __call__(self, configs, args):
103121 return JobRetry (configs , args ).run (args )
104122
105123
106- if __name__ == ' __main__' :
107- opts = parse_opts (' job_retry' , globals ())
108- yaml_configs = opts .get_yaml_configs () or ' config'
124+ if __name__ == " __main__" :
125+ opts = parse_opts (" job_retry" , globals ())
126+ yaml_configs = opts .get_yaml_configs () or " config"
109127 configs = kernelci .config .load (yaml_configs )
110128 status = opts .command (configs , opts )
111129 sys .exit (0 if status is True else 1 )
0 commit comments