Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion simvue/api/objects/alert/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,9 @@ def get_status(self, run_id: str) -> typing.Literal["ok", "critical"]:
)

_url: URL = self.url / f"status/{run_id}"
_response = sv_get(url=f"{_url}", headers=self._headers)
_response = sv_get(
url=f"{_url}", headers=self._headers, verify=self._user_config.server_verify
)
_json_response = get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK],
Expand Down
1 change: 1 addition & 0 deletions simvue/api/objects/alert/fetch.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ def get(
f"{_url}",
headers=_config.headers,
params=_params | kwargs,
verify=_config.server_verify,
)

_label: str = cls.__name__.lower()
Expand Down
1 change: 1 addition & 0 deletions simvue/api/objects/alert/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ def set_status(self, run_id: str, status: typing.Literal["ok", "critical"]) -> N
url=self.url / "status" / run_id,
data={"status": status},
headers=self._headers,
verify=self._user_config.server_verify,
)

get_json_from_response(
Expand Down
18 changes: 17 additions & 1 deletion simvue/api/objects/artifact/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import http
import io
import logging
import pathlib
import typing
import pydantic

Expand Down Expand Up @@ -101,6 +102,7 @@ def attach_to_run(self, run_id: str, category: Category) -> None:
url=f"{_run_artifacts_url}",
headers=self._headers,
json={"category": category},
verify=self._user_config.server_verify,
)

get_json_from_response(
Expand Down Expand Up @@ -146,6 +148,7 @@ def _upload(self, file: io.BytesIO, timeout: int, file_size: int) -> None:
params={},
is_json=False,
timeout=timeout,
verify=self.storage_ca_cert,
files={"file": file},
data=_fields,
)
Expand All @@ -157,6 +160,7 @@ def _upload(self, file: io.BytesIO, timeout: int, file_size: int) -> None:
headers={},
is_json=False,
timeout=timeout,
verify=self.storage_ca_cert,
data=file,
)

Expand Down Expand Up @@ -189,6 +193,15 @@ def _get(
**kwargs,
)

@property
def storage_ca_cert(self) -> str | bool:
"""Return current storage CA certificate."""
_ca_cert: pathlib.Path | bool = (
self._user_config.server.certificates.storage_ca_cert
)

return f"{_ca_cert}" if isinstance(_ca_cert, pathlib.Path) else _ca_cert

@property
def checksum(self) -> str:
"""Retrieve the checksum for this artifact.
Expand Down Expand Up @@ -327,7 +340,9 @@ def get_category(self, run_id: str) -> Category:
URL(self._user_config.server.url)
/ f"runs/{run_id}/artifacts/{self._identifier}"
)
_response = sv_get(url=_run_url, header=self._headers)
_response = sv_get(
url=_run_url, header=self._headers, verify=self._user_config.server_verify
)
_json_response = get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK, http.HTTPStatus.NOT_FOUND],
Expand Down Expand Up @@ -367,6 +382,7 @@ def download_content(self) -> Generator[bytes]:
_response = sv_get(
f"{self.download_url}",
timeout=_timeout,
verify=self.storage_ca_cert,
headers=None,
)

Expand Down
11 changes: 9 additions & 2 deletions simvue/api/objects/artifact/fetch.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,10 @@ def from_run(
)
_url = URL(f"{_config.server.url}") / f"runs/{run_id}/artifacts"
_response = sv_get(
url=f"{_url}", params={"category": category}, headers=_config.headers
url=f"{_url}",
params={"category": category},
headers=_config.headers,
verify=_config.server_verify,
)
_json_response = get_json_from_response(
expected_type=list,
Expand Down Expand Up @@ -196,7 +199,10 @@ def from_name(
)
_url = URL(f"{_config.server.url}") / f"runs/{run_id}/artifacts"
_response = sv_get(
url=f"{_url}", params={"name": name}, headers=_config.headers
url=f"{_url}",
params={"name": name},
headers=_config.headers,
verify=_config.server_verify,
)
_json_response = get_json_from_response(
expected_type=list,
Expand Down Expand Up @@ -275,6 +281,7 @@ def get(
_url,
headers=_config.headers,
params=_params | kwargs,
verify=_config.server_verify,
)
_label: str = cls.__name__.lower()
_label = _label.replace("base", "")
Expand Down
20 changes: 17 additions & 3 deletions simvue/api/objects/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,7 @@ def _post_batch(
headers=self._headers | {"Content-Type": "application/msgpack"},
params=self._params or {},
data=batch_data,
verify=self._user_config.server_verify,
is_json=True,
)

Expand Down Expand Up @@ -698,6 +699,7 @@ def _post_single(
params=self._params or {},
data=data or kwargs,
is_json=is_json,
verify=self._user_config.server_verify,
)

if _response.status_code == http.HTTPStatus.FORBIDDEN:
Expand Down Expand Up @@ -735,7 +737,11 @@ def _put(self, **kwargs) -> dict[str, typing.Any]:
_ = kwargs.pop(key, None)

_response = sv_put(
url=f"{self.url}", headers=self._headers, data=kwargs, is_json=True
url=f"{self.url}",
headers=self._headers,
data=kwargs,
is_json=True,
verify=self._user_config.server_verify,
)

if _response.status_code == http.HTTPStatus.FORBIDDEN:
Expand Down Expand Up @@ -769,7 +775,12 @@ def delete(self, **kwargs) -> dict[str, typing.Any]:

if not self.url:
raise RuntimeError(f"Identifier for instance of {self.label()} Unknown")
_response = sv_delete(url=f"{self.url}", headers=self._headers, params=kwargs)
_response = sv_delete(
url=f"{self.url}",
headers=self._headers,
params=kwargs,
verify=self._user_config.server_verify,
)
_json_response = get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK, http.HTTPStatus.NO_CONTENT],
Expand All @@ -789,7 +800,10 @@ def _get(
raise RuntimeError(f"Identifier for instance of {self.label()} Unknown")

_response = sv_get(
url=f"{url or self.url}", headers=self._headers, params=kwargs
url=f"{url or self.url}",
headers=self._headers,
params=kwargs,
verify=self._user_config.server_verify,
)

if _response.status_code == http.HTTPStatus.NOT_FOUND:
Expand Down
1 change: 1 addition & 0 deletions simvue/api/objects/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ def histogram(
_response = sv_get(
url=_url,
headers=self._headers,
verify=self._user_config.server_verify,
params={
"run": self._run_id,
"window": window,
Expand Down
5 changes: 4 additions & 1 deletion simvue/api/objects/folder.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,10 @@ def _set_favourite(self, *, starred: bool) -> dict:
"""Set starred status."""
_url = self.url / "starred"
_response = sv_put(
f"{_url}", headers=self._user_config.headers, data={"starred": starred}
f"{_url}",
headers=self._user_config.headers,
data={"starred": starred},
verify=self._user_config.server_verify,
)
return get_json_from_response(
expected_status=[http.HTTPStatus.OK],
Expand Down
4 changes: 4 additions & 0 deletions simvue/api/objects/grids.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ def attach_metric_for_run(self, run_id: str, metric_name: str) -> None:
_response = sv_put(
url=f"{self.run_data_url(run_id)}",
headers=self._headers,
verify=self._user_config.server_verify,
json={"metric": metric_name},
)

Expand Down Expand Up @@ -240,6 +241,7 @@ def get_run_metric_values(
_response = sv_get(
url=f"{self.run_metric_url(run_id, metric_name) / 'values'}",
headers=self._headers,
verify=self._user_config.server_verify,
params={"step": step},
)

Expand Down Expand Up @@ -271,6 +273,7 @@ def get_run_metric_span(self, *, run_id: str, metric_name: str) -> dict:
"""
_response = sv_get(
url=f"{self.run_metric_url(run_id, metric_name) / 'span'}",
verify=self._user_config.server_verify,
headers=self._headers,
)

Expand Down Expand Up @@ -476,6 +479,7 @@ def _log_values(self, metrics: list[GridMetricSet]) -> None:
url=f"{self._user_config.server.url}/{self.run_grids_endpoint(self._run_id)}",
headers=self._headers | {"Content-Type": "application/msgpack"},
data=msgpack.packb(metrics, use_bin_type=True),
verify=self._user_config.server_verify,
is_json=False,
params={},
)
Expand Down
12 changes: 10 additions & 2 deletions simvue/api/objects/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,12 @@ def get(
def span(self, run_ids: list[str]) -> dict[str, int | float]:
"""Returns the metrics span for the given runs"""
_url = self._base_url / "span"
_response = sv_get(url=f"{_url}", headers=self._headers, json=run_ids)
_response = sv_get(
url=f"{_url}",
headers=self._headers,
json=run_ids,
verify=self._user_config.server_verify,
)
return get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK],
Expand All @@ -171,7 +176,10 @@ def names(self, run_ids: list[str]) -> list[str]:
"""Returns the metric names for the given runs"""
_url = self._base_url / "names"
_response = sv_get(
url=f"{_url}", headers=self._headers, params={"runs": json.dumps(run_ids)}
url=f"{_url}",
headers=self._headers,
params={"runs": json.dumps(run_ids)},
verify=self._user_config.server_verify,
)
return get_json_from_response(
response=_response,
Expand Down
35 changes: 29 additions & 6 deletions simvue/api/objects/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,10 @@ def _set_favourite(self, *, starred: bool) -> dict:
"""Set starred status."""
_url = self.url / "starred"
_response = sv_put(
f"{_url}", headers=self._user_config.headers, data={"starred": starred}
f"{_url}",
headers=self._user_config.headers,
data={"starred": starred},
verify=self._user_config.server_verify,
)
return get_json_from_response(
expected_status=[http.HTTPStatus.OK],
Expand Down Expand Up @@ -670,7 +673,12 @@ def send_heartbeat(self) -> dict[str, typing.Any] | None:

_url = self._base_url
_url /= f"{self._identifier}/heartbeat"
_response = sv_put(f"{_url}", headers=self._headers, data={})
_response = sv_put(
f"{_url}",
headers=self._headers,
data={},
verify=self._user_config.server_verify,
)
return get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK],
Expand Down Expand Up @@ -709,7 +717,11 @@ def abort_trigger(self) -> bool:
if self._offline or not self._identifier:
return False

_response = sv_get(f"{self._abort_url}", headers=self._headers)
_response = sv_get(
f"{self._abort_url}",
headers=self._headers,
verify=self._user_config.server_verify,
)
_json_response = get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK],
Expand All @@ -729,7 +741,11 @@ def artifacts(self) -> list[dict[str, typing.Any]]:
if self._offline or not self._artifact_url:
return []

_response = sv_get(url=self._artifact_url, headers=self._headers)
_response = sv_get(
url=self._artifact_url,
headers=self._headers,
verify=self._user_config.server_verify,
)

return get_json_from_response(
response=_response,
Expand All @@ -750,7 +766,11 @@ def grids(self) -> list[dict[str, str]]:
if self._offline or not self._grid_url:
return []

_response = sv_get(url=self._grid_url, headers=self._headers)
_response = sv_get(
url=self._grid_url,
headers=self._headers,
verify=self._user_config.server_verify,
)

return get_json_from_response(
response=_response,
Expand Down Expand Up @@ -778,7 +798,10 @@ def abort(self, reason: str) -> dict[str, typing.Any]:
raise RuntimeError("Cannot abort run, no endpoint defined")

_response = sv_put(
f"{self._abort_url}", headers=self._headers, data={"reason": reason}
f"{self._abort_url}",
headers=self._headers,
data={"reason": reason},
verify=self._user_config.server_verify,
)

return get_json_from_response(
Expand Down
4 changes: 3 additions & 1 deletion simvue/api/objects/stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ def whoami(self) -> dict[str, str]:
server response for 'whomai' query.
"""
_url: URL = URL(self._user_config.server.url) / "whoami"
_response = sv_get(url=f"{_url}", headers=self._headers)
_response = sv_get(
url=f"{_url}", headers=self._headers, verify=self._user_config.server_verify
)
return get_json_from_response(
response=_response,
expected_status=[http.HTTPStatus.OK],
Expand Down
1 change: 1 addition & 0 deletions simvue/api/objects/storage/fetch.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ def get(
_url,
headers=_class_instance._headers,
params={"start": offset, "count": count} | kwargs,
verify=_class_instance._user_config.server_verify,
)
_label: str = _class_instance.__class__.__name__.lower()
_label = _label.replace("base", "")
Expand Down
Loading
Loading