mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Add dependency_resolvers/clean endpoint
This commit is contained in:
@@ -11,6 +11,7 @@ import galaxy.tools.deps.installable
|
||||
from ..conda_util import (
|
||||
build_isolated_environment,
|
||||
cleanup_failed_install,
|
||||
exec_clean,
|
||||
CondaContext,
|
||||
CondaTarget,
|
||||
install_conda,
|
||||
@@ -98,6 +99,9 @@ class CondaDependencyResolver(DependencyResolver, ListableDependencyResolver, In
|
||||
self.auto_install = auto_install
|
||||
self.copy_dependencies = copy_dependencies
|
||||
|
||||
def clean(self, **kwds):
|
||||
return exec_clean()
|
||||
|
||||
def resolve(self, name, version, type, **kwds):
|
||||
# Check for conda just not being there, this way we can enable
|
||||
# conda by default and just do nothing in not configured.
|
||||
|
||||
@@ -125,5 +125,19 @@ class DependencyResolversView(object):
|
||||
"""
|
||||
return [index for index, resolver in enumerate(self._dependency_resolvers) if hasattr(resolver, "install_dependency") and not resolver.disabled ]
|
||||
|
||||
|
||||
def get_requirements_status(self, requested_requirements, installed_tool_dependencies=None):
|
||||
return [self.manager_dependency(installed_tool_dependencies=installed_tool_dependencies, **req) for req in requested_requirements]
|
||||
|
||||
def clean(self, index=None, **kwds):
|
||||
if index:
|
||||
resolver = self._dependency_resolver(index)
|
||||
if not hasattr(resolver, "clean"):
|
||||
raise NotImplemented()
|
||||
else:
|
||||
resolver.clean()
|
||||
return "OK"
|
||||
else:
|
||||
[resolver.clean(**kwds) for resolver in self._dependency_resolvers if hasattr(resolver, 'clean')]
|
||||
return "OK"
|
||||
|
||||
|
||||
@@ -162,3 +162,22 @@ class ToolDependenciesAPIController( BaseAPIController ):
|
||||
the corresponding resolver (keyed on 'index').
|
||||
"""
|
||||
return self._view.manager_requirements()
|
||||
|
||||
@expose_api
|
||||
@require_admin
|
||||
def clean(self, trans, id=None, **kwds):
|
||||
"""
|
||||
POST /api/dependencies_resolver/clean
|
||||
|
||||
Cleans up intermediate files created by resolvers during the dependency
|
||||
installation.
|
||||
|
||||
:type index: int
|
||||
:param index: index of the dependency resolver
|
||||
|
||||
:rtype: dict
|
||||
:returns: a dictified description of the requirement that could
|
||||
be resolved (keyed on 'requirement') and the index of
|
||||
the corresponding resolver (keyed on 'index').
|
||||
"""
|
||||
return self._view.clean(id, **kwds)
|
||||
|
||||
@@ -270,6 +270,7 @@ def populate_api_routes( webapp, app ):
|
||||
webapp.mapper.connect( '/api/dependency_resolvers/dependency', action="manager_dependency", controller="tool_dependencies", conditions=dict( method=[ "GET" ] ) )
|
||||
webapp.mapper.connect( '/api/dependency_resolvers/dependency', action="install_dependency", controller="tool_dependencies", conditions=dict( method=[ "POST" ] ) )
|
||||
webapp.mapper.connect( '/api/dependency_resolvers/requirements', action="manager_requirements", controller="tool_dependencies" )
|
||||
webapp.mapper.connect('/api/dependency_resolvers/clean', action="clean", controller="tool_dependencies", conditions=dict(method=["POST"]))
|
||||
webapp.mapper.connect( '/api/dependency_resolvers/{id}/dependency', action="resolver_dependency", controller="tool_dependencies", conditions=dict( method=[ "GET" ] ) )
|
||||
webapp.mapper.connect( '/api/dependency_resolvers/{id}/dependency', action="install_dependency", controller="tool_dependencies", conditions=dict( method=[ "POST" ] ) )
|
||||
webapp.mapper.connect( '/api/dependency_resolvers/{id}/requirements', action="resolver_requirements", controller="tool_dependencies" )
|
||||
|
||||
@@ -95,3 +95,10 @@ class CondaResolutionIntegrationTestCase(integration_util.IntegrationTestCase, A
|
||||
endpoint = "tools/%s/build_dependency_cache" % tool_id
|
||||
create_response = self._post(endpoint, data=data, admin=True)
|
||||
self._assert_status_code_is( create_response, 200 )
|
||||
|
||||
def test_conda_clean( self ):
|
||||
endpoint = 'dependencies_resolvers/clean'
|
||||
create_response = self._post(endpoint, data={}, admin=True)
|
||||
self._assert_status_code_is(create_response, 200)
|
||||
response = create_response.json()
|
||||
assert response == "OK"
|
||||
Reference in New Issue
Block a user