Implement beta support for discovering mulled containers for dependencies.#2986
Implement beta support for discovering mulled containers for dependencies.#2986martenson merged 7 commits intogalaxyproject:devfrom
Conversation
| @@ -0,0 +1,18 @@ | |||
| <tool id="mulled_example_multi_1" name="mulled_example_multi_1" version="0.1.0"> | |||
| <command><![CDATA[ | |||
There was a problem hiding this comment.
Should this tool test anything? It also fails planemo lint ;)
There was a problem hiding this comment.
All the test tools fail planemo lint. As for the tests - I don't have any because this tool really depends on the dependency resolvers working which none of the other framework test tools do. I want them testing the core tool framework - not the ... lets say dependency resolution ecosystem.
|
Obviously I'm a huge fan of this and because it contains code from us I will not vote. Just one thing this PR contains some useful Moreover, thanks a lot to @thriqon who's master thesis made all this possible! |
| else: | ||
| name = image_name(targets) | ||
| for cached_image in cached_images: | ||
| if name == cached_image.hash: |
There was a problem hiding this comment.
cached_image can be aCachedMulledImageSingleTarget that doesn't have a hash attribute, right? if cached_image.multi_target and name == cached_image.hash: should be OK
| raise Exception("requets library is unavailable, functionality not available.") | ||
|
|
||
| url = 'https://quay.io/api/v1/repository/%s/%s' % (namespace, pkg_name) | ||
| response = requests.get(url, timeout=None) |
There was a problem hiding this comment.
this fails with:
galaxy.tools.deps.mulled.util WARNING 2016-10-02 11:41:39,416 {u'status': 401, u'error_message': u'Requires authentication', u'title': u'invalid_token', u'error_type': u'invalid_token', u'detail': u'Requires authentication', u'type': u'https://quay.io/api/v1/error/invalid_token'}
There was a problem hiding this comment.
fwiw, I'm using something like https://gist.github.com/mvdbeek/5e48d2c21c1440e22bda895769f5e450 for v2 registries.
seems that you get a 401 also if the repository doesn't exist ...
|
Amazing! If there is only a single requirement to resolve it even works with my WIP udocker implementation. |
|
Okay - I've pushed through another iteration on this. I've:
|
|
Did a release of planemo which again greatly reduces the barrier to testing this PR. The new |
|
👍 this is amazing. |
|
Oh, we have a 👍 @jmchilton we have a 👍 :) |
…for dependencies. Contains all mulled fixes and enhancements through 16.10.7 including several bug fixes from @bgruening.
This is great for security in production. For my own greedy concerns, I'm adding it for development however. I don't want someone to be testing mulled containers and accidently run the job locally.
|
Updated to include the latest fixes from @bgruening's work downstream in galaxy-lib (through version 16.10.7 of that library) and rebased into two clean, atomic commits. |
Add initial documentation about the new mulled features.
|
to trigger retesting |
|
Thanks for the reviews all and thanks for the merge @martenson! |
|
🎉 🎈 I think I take a week off - this PR is awesome! |
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Similar to galaxyproject#2986, implement a mechanism that allows tool dependencies to be cached. If the `use_cached_dependency_manager` option is set to True in galaxy.ini, we build a hash of the combination of a tools' requirements, and store the resulting environment in a directory specified by the `tool_dependency_cache_dir` option in galaxy.ini.
Fix thanks to @stevecassidy. Fixes galaxyproject#3207. Broken with introduction of container resolution stradegies in galaxyproject#2986.
tl;dr - Free community managed Docker containers for all tools whose requirements are resolvable with bioconda.
Brings in the latest mulled work that was migrated into galaxy-lib and made to work with combinations of requirements, local caching, non-bioconda channels, etc....
The local test can be run with the following commands:
Then open a web browser and run the new test tool - it should find the container you built and use it without any explicit markup required in the tool XML.
This demonstrates the local cached mulled containers - but remote ones on quay.io will also be used dynamically if
GALAXY_CONFIG_ENABLE_BETA_MULLED_CONTAINERSis enabled - such as the ones @bgruening built for every package in bioconda.Update: Replaced old manual test description with much more automated approach using new release of planemo leveraging all this magic. Old instructions were: