Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.webapps.galaxy.api.container_resolution
"""
API operations allowing clients to manage container resolution.
"""
import logging
import requests
from galaxy.structured_app import StructuredApp
from galaxy.tool_util.deps import views
from galaxy.web import (
expose_api,
require_admin,
)
from . import BaseGalaxyAPIController
log = logging.getLogger(__name__)
[docs]class ContainerResolutionAPIController(BaseGalaxyAPIController):
[docs] def __init__(self, app: StructuredApp):
super().__init__(app)
self._view = views.ContainerResolutionView(app)
[docs] @expose_api
@require_admin
def index(self, trans, **kwd):
"""
GET /api/container_resolvers
"""
return self._view.index()
[docs] @expose_api
@require_admin
def show(self, trans, index):
"""
GET /api/container_resolvers/<id>
"""
return self._view.show(index)
[docs] @expose_api
@require_admin
def resolve(self, trans, index=None, **kwds):
"""
GET /api/container_resolvers/resolve
GET /api/container_resolvers/{index}/resolve
Resolve described requirement against specified container resolvers.
:type tool_id: str
:param tool_id: tool_id to resolve against containers
:type requirements_only: boolean
:param requirements_only: ignore tool containers, properties - just search based on tool requirements
set to True to mimic default behavior of tool dependency API.
:type index: int
:param index: index of the container resolver, if unset resolvers searched in order
:type container_type: str
:param container_type: restrict resolution to specified container type (e.g. 'docker', 'singularity')
:type resolver_type: str
:param resolver_type: restrict resolution to specified resolver type (e.g. 'build_mulled', 'explicit')
:type install: boolean
:param install: allow installation of new containers (for build_mulled* containers) the way job resolution
will operate, defaults to False
:rtype: dict
:returns: a dictified description of the container dependency, with attribute
``dependency_type: None`` if no match was found.
"""
kwds["session"] = requests.session()
return self._view.resolve(index=index, **kwds)
[docs] @expose_api
@require_admin
def resolve_toolbox(self, trans, **kwds):
"""
GET /api/container_resolvers/toolbox
GET /api/container_resolvers/{index}/toolbox
Apply resolve() to each tool in the toolbox and return the results as a list. See
documentation for resolve() for a description of parameters that can be consumed and
a description of the resulting items.
:type tool_ids: str
:param tool_ids: tool_ids to filter toolbox on
:rtype: list
:returns: list of items returned from resolve()
"""
kwds["session"] = requests.session()
return self._view.resolve_toolbox(**kwds)
[docs] @expose_api
@require_admin
def resolve_toolbox_with_install(self, trans, payload, **kwds):
"""
POST /api/container_resolvers/toolbox/install
POST /api/container_resolvers/{index}/toolbox/install
Do the resolution of dependencies like resolve_toolbox(), but allow building
and installing new containers. payload of POST body maybe contain same parameters
as resolve_toolbox query parameters.
:rtype: list
:returns: list of items returned from resolve()
"""
kwds.update(payload)
kwds["install"] = True
kwds["session"] = requests.session()
return self._view.resolve_toolbox(**kwds)
[docs] @expose_api
@require_admin
def resolve_with_install(self, trans, payload, **kwds):
"""
POST /api/container_resolvers/resolve/install
POST /api/container_resolvers/{index}/resolve/install
Do the resolution of dependencies like resolve(), but allow building
and installing new containers during installation. payload of POST body maybe
contain same parameters as resolve query parameters.
:rtype: dict
:returns: a dictified description of the container dependency, with attribute
``dependency_type: None`` if no match was found.
"""
kwds.update(payload)
kwds["install"] = True
return self._view.resolve(**kwds)