@@ -19,6 +19,7 @@ import xcp.logger
1919
2020
2121TMP_DIR = '/tmp/'
22+ UPDATE_DIR = '/var/update/'
2223UPDATE_PRECHECK_FAILED_UNKNOWN_ERROR = 'UPDATE_PRECHECK_FAILED_UNKNOWN_ERROR'
2324UPDATE_PRECHECK_FAILED_PREREQUISITE_MISSING = 'UPDATE_PRECHECK_FAILED_PREREQUISITE_MISSING'
2425UPDATE_PRECHECK_FAILED_CONFLICT_PRESENT = 'UPDATE_PRECHECK_FAILED_CONFLICT_PRESENT'
@@ -72,7 +73,7 @@ def parse_control_package(session, yum_url):
7273 return items [0 ].getAttribute ('control' )
7374
7475
75- def execute_precheck (session , control_package , yum_conf_file ):
76+ def execute_precheck (session , control_package , yum_conf_file , update_precheck_file ):
7677 if not control_package :
7778 return 'ok'
7879 livepatch_messages = {'PATCH_PRECHECK_LIVEPATCH_COMPLETE' : 'ok_livepatch_complete' ,
@@ -102,11 +103,17 @@ def execute_precheck(session, control_package, yum_conf_file):
102103 else :
103104 raise PrecheckFailure ()
104105 else :
105- for msg in livepatch_messages .keys ():
106- if msg in output :
107- return livepatch_messages [msg ]
108- return 'ok'
109-
106+ if not os .path .isfile (update_precheck_file ):
107+ return 'ok'
108+ else :
109+ pp = subprocess .Popen (update_precheck_file , shell = False , stdout = subprocess .PIPE , close_fds = True )
110+ precheck_output , _ = pp .communicate ()
111+ xcp .logger .info ('pool_update.precheck %r precheck_output=%r' , update_precheck_file , precheck_output )
112+ for msg in livepatch_messages .keys ():
113+ if msg in precheck_output :
114+ return livepatch_messages [msg ]
115+ raise PrecheckFailure ()
116+
110117
111118if __name__ == '__main__' :
112119 xcp .logger .logToSyslog (level = logging .INFO )
@@ -166,7 +173,8 @@ if __name__ == '__main__':
166173 yum_url = config .get (update_package , 'baseurl' )
167174
168175 control_package = parse_control_package (session , yum_url )
169- print (success_message (execute_precheck (session , control_package , yum_conf_file )))
176+ update_precheck_file = os .path .join (UPDATE_DIR , update_uuid , 'precheck' )
177+ print (success_message (execute_precheck (session , control_package , yum_conf_file , update_precheck_file )))
170178 except PrerequisiteMissing as e :
171179 print (failure_message (UPDATE_PRECHECK_FAILED_PREREQUISITE_MISSING , [update_package , str (e )]))
172180 except ConflictPresent as e :
0 commit comments