def list_jobs(self, project_id, region, page_size=None, cluster_name=None, job_state_matcher=None): self._check_region_matches_endpoint(region) if page_size: raise NotImplementedError('page_size is not mocked') for job_key, job in self.mock_jobs.items(): job_project_id, job_region, job_id = job_key if job_project_id != project_id: continue if job_region != region: continue if cluster_name and job.placement.cluster_name != cluster_name: continue if job_state_matcher: if job_state_matcher != _STATE_MATCHER_ACTIVE: raise NotImplementedError( 'only ACTIVE job state matcher is mocked') if (_job_state_name(job.status.state) not in ('PENDING', 'RUNNING', 'CANCEL_PENDING')): continue yield deepcopy(job)
def _simulate_progress(self, mock_job): state = _job_state_name(mock_job.status.state) if state == 'SETUP_DONE': mock_job.status.state = _job_state_value('PENDING') elif state == 'PENDING': mock_job.status.state = _job_state_value('RUNNING') elif state == 'RUNNING': if self.mock_jobs_succeed: mock_job.status.state = _job_state_value('DONE') else: mock_job.status.state = _job_state_value('ERROR')
def _simulate_progress(self, mock_job): state = _job_state_name(mock_job.status.state) if state == 'SETUP_DONE': mock_job.status.state = _job_state_value('PENDING') elif state == 'PENDING': mock_job.status.state = _job_state_value('RUNNING') # for now now, we just need this to be set mock_job.driver_output_resource_uri = ( 'gs://mock-bucket-%s/google-cloud-dataproc-metainfo/' 'mock-cluster-id-%s/jobs/mock-job-%s/driveroutput' % (random_identifier(), random_identifier(), random_identifier())) elif state == 'RUNNING': if self.mock_jobs_succeed: mock_job.status.state = _job_state_value('DONE') else: mock_job.status.state = _job_state_value('ERROR')