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, id): """ GET /api/container_resolvers/<id> """ return self._view.show(id)
[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)