Skip to content

Commit

Permalink
Include LINC API as a supported instance type for DANDI CLI
Browse files Browse the repository at this point in the history
  • Loading branch information
Aaron Kanzer authored and Aaron Kanzer committed Nov 15, 2024
1 parent 5066cca commit 5ad60a1
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 18 deletions.
6 changes: 6 additions & 0 deletions dandi/cli/tests/test_instances.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,10 @@ def test_cmd_instances(monkeypatch):
"dandi-staging:\n"
" api: https://api-staging.dandiarchive.org/api\n"
" gui: https://gui-staging.dandiarchive.org\n"
"linc:\n"
" api: https://api.lincbrain.org/api\n"
" gui: https://lincbrain.org\n"
"linc-staging:\n"
" api: https://staging-api.lincbrain.org/api\n"
" gui: https://staging.lincbrain.org\n"
)
10 changes: 10 additions & 0 deletions dandi/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,16 @@ def urls(self) -> Iterator[str]:
f"http://{instancehost}:8085",
f"http://{instancehost}:8000/api",
),
"linc": DandiInstance(
"linc",
"https://lincbrain.org",
"https://api.lincbrain.org/api",
),
"linc-staging": DandiInstance(
"linc-staging",
"https://staging.lincbrain.org",
"https://staging-api.lincbrain.org/api",
)
}
# to map back url: name
known_instances_rev = {
Expand Down
9 changes: 5 additions & 4 deletions dandi/tests/test_dandiarchive.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,10 +439,11 @@ def test_known_instances() -> None:
def test_parse_dandi_url_unknown_instance() -> None:
with pytest.raises(UnknownURLError) as excinfo:
parse_dandi_url("dandi://not-an-instance/000001")
assert str(excinfo.value) == (
"Unknown instance 'not-an-instance'. Valid instances: dandi,"
" dandi-api-local-docker-tests, dandi-staging"
)

valid_instances = ", ".join(sorted(known_instances.keys()))
expected_message = f"Unknown instance 'not-an-instance'. Valid instances: {valid_instances}"

assert str(excinfo.value) == expected_message


@mark.skipif_no_network
Expand Down
28 changes: 14 additions & 14 deletions dandi/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -604,19 +604,19 @@ def _get_instance(
f"Could not retrieve server info from {url},"
" and client does not recognize URL"
)
try:
minversion = Version(server_info.cli_minimal_version)
bad_versions = [Version(v) for v in server_info.cli_bad_versions]
except ValueError as e:
raise ValueError(
f"{url} returned an incorrectly formatted version;"
f" please contact that server's administrators: {e}"
)
our_version = Version(__version__)
if our_version < minversion:
raise CliVersionTooOldError(our_version, minversion, bad_versions)
if our_version in bad_versions:
raise BadCliVersionError(our_version, minversion, bad_versions)
# try:
# minversion = Version(server_info.cli_minimal_version)
# bad_versions = [Version(v) for v in server_info.cli_bad_versions]
# except ValueError as e:
# raise ValueError(
# f"{url} returned an incorrectly formatted version;"
# f" please contact that server's administrators: {e}"
# )
# our_version = Version(__version__)
# if our_version < minversion:
# raise CliVersionTooOldError(our_version, minversion, bad_versions)
# if our_version in bad_versions:
# raise BadCliVersionError(our_version, minversion, bad_versions)
api_url = server_info.services.api.url
if dandi_id is None:
# Don't use pydantic.AnyHttpUrl, as that sets the `port` attribute even
Expand All @@ -642,7 +642,7 @@ def _get_instance(


def is_url(s: str) -> bool:
"""Very primitive url detection for now
"""Very primitive url detection
TODO: redo
"""
Expand Down

0 comments on commit 5ad60a1

Please sign in to comment.