def run(auth: CromwellAuth, metadata: str = None, uuid: str = None): if metadata is not None: with open(args.metadata) as data_file: metadata = json.load(data_file) # cli top level parsing ensures metadata is set otherwise else: response = CromwellAPI.metadata( uuid=uuid, auth=auth, expandSubWorkflows=True, raise_for_status=True, ) metadata = response.json() if auth.service_key_content is None: raise exceptions.CromwellAuthenticationError( "task_runtime requires a service account key") print_task_runtime_data(metadata, auth.service_key_content)
def get_wf_metadata(cromwell_auth, wf_id, include_keys=None, exclude_keys=None): result = CromwellAPI.metadata(wf_id, cromwell_auth, includeKey=include_keys, excludeKey=exclude_keys) try: result.raise_for_status() except requests.exceptions.HTTPError as e: logging.error("Unable to fetch metadata for wf: {0}".format(wf_id)) logging.error("Message from cromwell server:\n{0}".format( result.json())) raise return result.json()
def test_metadata_returns_200(self, mock_request): workflow_id = '12345abcde' test_include_key = 'workflow' def _request_callback(request, context): context.status_code = 200 context.headers['test'] = 'header' return {'id': '12345abcde', 'actualWorkflowLanguageVersion': 'draft-2'} for cromwell_auth in self.auth_options: mock_request.get( '{0}/api/workflows/v1/{1}/metadata?expandSubWorkflows=false&includeKey={2}'.format( cromwell_auth.url, workflow_id, test_include_key ), json=_request_callback, ) result = CromwellAPI.metadata( workflow_id, cromwell_auth, includeKey=test_include_key ) self.assertEqual(result.status_code, 200) self.assertEqual(result.json()['id'], workflow_id)
def get_status(self): return pd.DataFrame( [[_a, cwt.metadata(_a, self.auth_obj).json()['status']] for _a in self.resp_list])
def sync_metadata(self): self.metadata = CromwellAPI.metadata( self.wf_id, self.auth, includeKey=["outputs", "labels", "status", "inputs"], raise_for_status=True).json()