diff --git a/CHANGELOG.md b/CHANGELOG.md index 105760b3..2b5c7a53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change log +## v0.10.0 + +* The `client` class can now be used to retrieve runs. + ## v0.9.1 * (Bug fix) Retries in POST/PUTs to REST APIs didn't happen. diff --git a/simvue/__init__.py b/simvue/__init__.py index 162c755b..c90b30d6 100644 --- a/simvue/__init__.py +++ b/simvue/__init__.py @@ -2,4 +2,4 @@ from simvue.client import Client from simvue.handler import Handler from simvue.models import RunInput -__version__ = '0.9.1' +__version__ = '0.10.0' diff --git a/simvue/client.py b/simvue/client.py index 345845f6..c25cc512 100644 --- a/simvue/client.py +++ b/simvue/client.py @@ -36,6 +36,47 @@ def __init__(self): self._url, self._token = get_auth() self._headers = {"Authorization": f"Bearer {self._token}"} + def get_run(self, run, system=False, tags=False, metadata=False): + """ + Get a single run + """ + params = {'name': run, + 'filter': None, + 'system': system, + 'tags': tags, + 'metadata': metadata} + + try: + response = requests.get(f"{self._url}/api/runs", headers=self._headers, params=params) + except requests.exceptions.RequestException: + return None + + if response.status_code == 200: + return response.json() + + return None + + + def get_runs(self, filters, system=False, tags=False, metadata=False): + """ + Get runs + """ + params = {'name': None, + 'filters': ','.join(filters), + 'system': system, + 'tags': tags, + 'metadata': metadata} + + try: + response = requests.get(f"{self._url}/api/runs", headers=self._headers, params=params) + except requests.exceptions.RequestException: + return None + + if response.status_code == 200: + return response.json() + + return None + def list_artifacts(self, run, category=None): """ List artifacts associated with a run