-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove Girder support #588
Conversation
Codecov Report
@@ Coverage Diff @@
## master #588 +/- ##
==========================================
+ Coverage 81.26% 82.88% +1.62%
==========================================
Files 62 59 -3
Lines 6651 5710 -941
==========================================
- Hits 5405 4733 -672
+ Misses 1246 977 -269
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
pushed a CPed fix from #591 ... will probably proceed with that PR for now for a minimal fix to get client working for migration; added a TODO in description on docker compose recipe |
@jwodder - as part of this we can also remove migrating to new schema perhaps for the dandiset metadata. the asset related stuff can stay. |
@satra File that as a separate issue. It'll require changes to |
@yarikoptic While we wait for dandi/dandi-archive#251 to be merged, I'd appreciate if it you'd take a look at what's left of |
Why do we need to wait on it - even if docker compose ships girder, we can just not use it (i.e. nothing in dandi-cli somehow senses for girder to be present etc), can't we? |
git grep -i girder | grep -v -e CHANGELOG -e README -e docker-compose -e '^tools/'.github/workflows/test.yml: run: echo DANDI_LOG_GIRDER=1 >> "$GITHUB_ENV"
DEVELOPMENT.md:dandiarchive (both with our web frontend, and girder backend).
DEVELOPMENT.md:as `local-docker` (as opposed from `local` for a plain girder instance). See note
DEVELOPMENT.md: such as explicit specification of the girder instance, collection, etc.
DEVELOPMENT.md:- `DANDI_GIRDER_API_KEY` -- avoids using keyrings, thus making it possible to
DEVELOPMENT.md: "temporarily" use another account etc for the Girder version of the server.
DEVELOPMENT.md:- `DANDI_LOG_GIRDER` -- log REST requests.
dandi/cli/__init__.py: e.g. girder-client
dandi/consts.py:# Chunk size when iterating a download (and upload) body. Taken from girder-cli
dandi/core/digests/dandietag.py:# Derived from <https://github.com/girder/django-s3-file-field/blob/master/
dandi/dandiapi.py:# Following class is loosely based on GirderClient, with authentication etc
dandi/dandiapi.py: girder and DANDI api clients.
dandi/dandiarchive.py:Interactions with DANDI archive ATM go either through Girder or through DANDI API.
dandi/dandiarchive.py:Eventually it is largely to be "dissolved" whenever we stop talking to girder.
dandi/dandiarchive.py: old (girder inflicted): https://gui.dandiarchive.org/#/folder/5e5593cc1a343161ff7c5a92
dandi/dandiarchive.py: old (girder inflicted): https://gui.dandiarchive.org/#/folder/5dab0830f377535c7d96c2b4
dandi/dandiarchive.py: old (girder inflicted): https://gui.dandiarchive.org/#/dandiset/5e6d5c6976569eb93f451e4f
dandi/dandiarchive.py: gui.dandiarchive.org ones into girder.
dandi/dandiset.py: # girder-based, used before migration to API TODO: API-migration-remove
dandi/download.py: # by server while establishing downloader... but it seems that girder itself
dandi/download.py: A backend (girder or api) specific fixture for downloading some file into
dandi/download.py: # both girder and we use HttpError
dandi/download.py: # It seems that girder might not care about setting either mtime, so we will do if we know
dandi/metadata.py:The following section converts metadata schema from the current girder dandiset
dandi/tests/fixtures.py: GIRDER_URL = "http://localhost:8081"
dandi/tests/fixtures.py: f"{GIRDER_URL}/api/v1/user/authentication", auth=("admin", "letmein")
dandi/tests/fixtures.py: f"{GIRDER_URL}/api/v1/api_key",
dandi/tests/fixtures.py: headers={"Girder-Token": initial_api_key},
dandi/tests/fixtures.py: f"{GIRDER_URL}/api/v1/user",
dandi/tests/fixtures.py: headers={"Girder-Token": initial_api_key},
dandi/tests/fixtures.py: f"{GIRDER_URL}/api/v1/user/authentication", auth=("publish", "Z1lT4Fh7Kj")
dandi/tests/fixtures.py: # We can't refer to the Girder container as "girder" in
dandi/tests/fixtures.py: # DJANGO_DANDI_GIRDER_API_URL because Django doesn't recognize
dandi/tests/fixtures.py: # use the Girder container's in-network IP address.
dandi/tests/fixtures.py: about_girder = check_output(
dandi/tests/fixtures.py: ["docker", "inspect", f"{LOCAL_DOCKER_ENV}_girder_1"]
dandi/tests/fixtures.py: girder_ip = json.loads(about_girder)[0]["NetworkSettings"]["Networks"][
dandi/tests/fixtures.py: env["DJANGO_DANDI_GIRDER_API_URL"] = f"http://{girder_ip}:8080/api/v1"
dandi/tests/fixtures.py: env["DJANGO_DANDI_GIRDER_API_KEY"] = publish_api_key
dandi/tests/fixtures.py: f"{GIRDER_URL}/api/v1/system/setting",
dandi/tests/fixtures.py: headers={"Girder-Token": publish_api_key},
dandi/tests/fixtures.py: f"{GIRDER_URL}/api/v1/system/setting",
dandi/tests/fixtures.py: headers={"Girder-Token": publish_api_key},
dandi/tests/fixtures.py: yield {"girder_api_key": api_key, "django_api_key": django_api_key}
dandi/tests/test_dandiarchive.py: # ATM we point to drafts, so girder
dandi/tests/test_dandiarchive.py: # # And the hybrid for "drafts" where it still goes by girder ID
dandi/tests/test_dandiarchive.py: "girder": None,
dandi/tests/test_utils.py: "girder": None,
dandi/tests/test_utils.py: "girder": {"url": "https://girder.dandi"},
dandi/tests/test_utils.py: "girder": {"url": "https://girder.dandi"},
dandi/tests/test_utils.py: "girder": {"url": "https://girder.dandi"},
dandi/upload.py: # this is a path not a girder id
dandi/utils.py: ) # note: somehow was ending up with {"girder": None}
doc/demos/basic-workflow1.sh:# top url, would need to know girder id
setup.cfg: girder-client |
@yarikoptic I meant, could you please specifically look through the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left minor recommendations.
We still have good parts of code not test covered in that file, but nothing stroke me as "could be gone" ATM in dandiarchive.py
did another skim through diff (still see no coverage report overlay for some reason, but probably unrelated). Let's proceed -- thank you @jwodder ! and if no major issues we run into, let's release tomorrow or so. |
Closes #587.
TODOs
./dandi/tests/data/dandiarchive-docker/docker-compose.yml
to strip docker away - must not be needed.