[docs]defget_status(self,is_all_pods_running):job=self.bv1.read_namespaced_job(self.name,self.namespace)try:if(job.status.conditions[0].type=='Complete'andjob.status.conditions[0].status):self.status='Complete'elif(job.status.conditions[0].type=='Failed'andjob.status.conditions[0].status):self.status='Failed'else:self.status='Error'except(TypeError):# The condition is not initialized, so it is not complete yet, wait for itself.status='Running'job_duration=0ifjob.status.activeandjob.status.start_time:job_duration=(datetime.now(timezone.utc)-job.status.start_time).total_seconds()ifjob_duration>self.timeoutandnotis_all_pods_running:pods=(self.cv1.list_namespaced_pod(self.namespace,label_selector=f'job-name={self.name}')).itemsis_all_pods_running=Trueforpodinpods:ifpod.status.phase=='Pending'andpod.status.start_time:is_all_pods_running=Falsedelta=(datetime.now(timezone.utc)-pod.status.start_time).total_seconds()if(delta>self.timeoutandpod.status.container_statuses[0].state.waiting.reason=='ImagePullBackOff'):logging.info(pod.status.container_statuses[0].state.waiting)return'Error',is_all_pods_runningreturnself.status,is_all_pods_running