def print_safe_exec(cmd): """Specialized version of safe_exec mock to print its parameters and provide output only for initialize_persistent_disk specific calls""" if isinstance(cmd, list): cmd = ' '.join(cmd) print(cmd) if cmd == 'kubectl get pv -o json': result = {'items': []} # type: ignore result['items'].append( {'spec': { 'gcePersistentDisk': { 'pdName': GCP_DISKS[0] } }}) # type: ignore return MockedCompletedProcess(stdout=json.dumps(result)) if cmd.startswith('kubectl get pv'): return MockedCompletedProcess( stdout='CLAIM PDNAME\nblast-dbs-pvc gke-some-synthetic-name') if cmd.startswith('kubectl get -f'): fn = os.path.join(TEST_DATA_DIR, 'job-status.json') return MockedCompletedProcess(stdout=Path(fn).read_text()) if cmd.startswith('kubectl apply -f'): fn = cmd[len('kubectl apply -f '):] with open(fn) as f: print(f.read()) if cmd.startswith('gcloud compute disks update'): assert (cmd.startswith( f'gcloud compute disks update gke-some-synthetic-name --update-labels {FAKE_LABELS}' )) if cmd.startswith('kubectl logs'): return MockedCompletedProcess( stdout='2020-06-18T04:48:33.320344002Z test log entry') return MockedCompletedProcess()
def mock_safe_exec(cmd): if isinstance(cmd, list): cmd = ' '.join(cmd) if cmd == 'gsutil cat gs://blast-db/latest-dir': return MockedCompletedProcess(stdout='2020-20-20') elif cmd == 'gsutil cat gs://blast-db/2020-20-20/blastdb-manifest.json': return MockedCompletedProcess( stdout='{"nt":{"size":93.36}, "nr":{"size":227.4}}') return MockedCompletedProcess()
def safe_exec_gsutil_ls(cmd): """Mocked util.safe_exec function that simulates gsutil ls""" if cmd != f'gsutil ls {DB}.*': raise ValueError(f'Bad gsutil command line: "{cmd}"') return MockedCompletedProcess(response)
def safe_exec_bad_gcloud(cmd): """Mocked util.safe_exec function that returns incorrect JSON""" if not cmd.startswith('gcloud compute disks list --format json'): raise ValueError(f'Bad gcloud command line: {cmd}') return MockedCompletedProcess('some-non-json-string')
def subst_safe_exec_unset_project(cmd): if cmd != 'gcloud config get-value project': raise ValueError(f'Bad gcloud command line: {cmd}') # this is how gcloud reports unset project return MockedCompletedProcess('(unset)')
def safe_exec_gsutil_rm(cmd): """Mocked util.safe_exec function that simulates gsutil rm""" if cmd != f'gsutil -mq rm {QUERIES}': raise ValueError(f'Bad gsutil command line: {cmd}') return MockedCompletedProcess('')
def safe_exec_empty(cmd): """Mocked safe_exec returning an emty JSON list""" return MockedCompletedProcess('[]')
def safe_exec_bad_json(cmd): """Mocked kubectl that returns garbage""" return MockedCompletedProcess('some strange string')
def fake_safe_exec(cmd): """Mocked safe_exec""" result = {'items': []} for i in GKE_PVS: result['items'].append({'metadata': {'name': i}}) return MockedCompletedProcess(json.dumps(result))
def safe_exec_no_resources(cmd): """Mocked safe_exec returning no resources found""" return MockedCompletedProcess('No resources found')
def fake_safe_exec_failed_job(cmd): fn = os.path.join(TEST_DATA_DIR, 'job-status-failed.json') return MockedCompletedProcess(stdout=Path(fn).read_text())
def safe_exec_no_disks(cmd): """Mocked safe_exec""" result = {'items': []} return MockedCompletedProcess(json.dumps(result))