Comments (5)
I think a good first step would be to list out the use case/things people would like to do with conda-store as in what exactly they will achieve by using it and also, what APIs do we have available from conda-store and after that we can start working on creating a mock UI for the same.
I will start with the use case:
Currently it is not trivial for people to get new conda environments on the QHub, while experimenting/playing with things. The current approach/solution people have is to change the qhub-config.yml
file by adding or modifying an environment. With conda-store now people will be able to manage (create, edit, build) conda environments on the fly from the JupyterLab UI itself. So here the things people would like to do with the conda-store:
- Create a new conda environment
- Edit an existing conda environment
- Delete a conda environment (?)
From the above use case there are some questions, which needs to be answered:
- Are conda environments private to the users? (Yes)
- Are they persistent across sessions, as in if the user delete and recreate the server? (Yes)
- Should the conda environments be visible in the "Select Kernel" dropdown on the right side of the notebook? (Yes)
- Where is the conda environment stored for each user?
- Are we building for JupyterLab 3? (Yes)
- Are we using TypeScript or Javascript (It seems TypeScript repo is more active)?
From the above points, we also need to know what APIs we have available in the conda-store REST API:
- Can you get the status/progress/failure of the conda build?
- Can you get a list of conda environments for the user?
- Can you sanity check the yaml from the API?
- Can you delete conda environment from the API?
- What else do we have in the API?
I think answering these questions will help us clarify the requirements more clearly and we will have a better image in our head while designing the mock. The above list might not be exhaustive, this is what came from the top of my head, feel free to add more.
from conda-store.
Adding ideas from our qhub-internal meeting. It would be nice to have an anaconda navigator like experience (at least the idea).
from conda-store.
From the above points, we also need to know what APIs we have available in the conda-store REST API
conda-store has three http endpoints:
- website (flask jinja templates) https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/ui.py
- rest api https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/api.py
- docker registry rest api https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/registry.py
Looking at the routes should give a better view of the capabilities. Along with the ORM https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/orm.py
Can you get the status/progress/failure of the conda build?
Yes via the GET /build/<build-id>
there is a status field/enum
Can you get a list of conda environments for the user?
Currently you can only list all the environments https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/api.py#L15. But it with authentication and using namespaces in the query we should be able to support this
Can you sanity check the yaml from the API?
Currently validation is built into the post request https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/api.py#L46. Via https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/schema.py#L74 pydantic schemas
Can you delete conda environment from the API?
Not at the moment. This is due to conda-store not having a concept of tasks like (build environment, delete environment, etc.) currently there is only a build action. I am planning to move towards celery for this task processing see issue #22. Celery looks like the clear choice .. spent a long time looking for alternatives celery always feels a bit heavy
What else do we have in the API?
Notable stuff:
- we have access to all packages and related information in a given set of channels via the rest api https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/api.py#L90
- build logs https://github.com/Quansight/conda-store/blob/main/conda-store-server/conda_store_server/server/views/api.py#L90
- LIST on environment(s), specification(s), and build(s)
- POST on specification
from conda-store.
After visiting this issue with the team. We will be investigating how to integrate conda-store with https://github.com/mamba-org/gator
from conda-store.
Closing since there have been a lot of developments here and this issue is broad. See all the ui
labels along with the gator/conda-store integration work.
from conda-store.
Related Issues (20)
- [BUG] - conda-store doesn't report error in logs when conda-lock poetry has a failure to solve HOT 2
- [BUG] - channel priority should be set to strict HOT 1
- [BUG] - conda-store fails on .conda files from JFrog Artifactory HOT 1
- [ENH] - URL based navigation in the conda-store UI HOT 1
- [BUG] - Unable to see the spec for latest failed environment
- [ENH] - Show installed packages versions along with the requested versions
- [BUG] - Updating existing environment fails w/ network error from conda_store_server HOT 6
- [BUG] - Environment builds locally, fails on conda-store HOT 5
- META - Update migrated documentation HOT 1
- [ENH] - Loosen requirements on environment name HOT 1
- META - User experience research HOT 1
- [DOC] - Document a release policy
- Reference - Update REST API docs
- [REL] - 2024.3.1 HOT 1
- DOC - Adjust snapshots in docs HOT 1
- Create key personas to tackle
- Rethink interaction of all conda-related tooling in conda-store
- Document support for `variables` in environment spec HOT 1
- [BUG] - `api_get_specification` is broken
- [DOC] Update documentation website theme HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from conda-store.