Skip to content

Commit

Permalink
Standalone implementation of tool shed client...
Browse files Browse the repository at this point in the history
  • Loading branch information
jmchilton committed Oct 25, 2022
1 parent 9753f33 commit cf5dc5a
Show file tree
Hide file tree
Showing 14 changed files with 404 additions and 108 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/toolshed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
strategy:
matrix:
python-version: ['3.7']
test-install-client: ['standalone', 'galaxy_api']
services:
postgres:
image: postgres:13
Expand Down Expand Up @@ -54,9 +55,11 @@ jobs:
key: gxy-venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('galaxy root/requirements.txt') }}-toolshed
- name: Run tests
run: './run_tests.sh -toolshed'
env:
TOOL_SHED_TEST_INSTALL_CLIENT: ${{ matrix.test-install-client }}
working-directory: 'galaxy root'
- uses: actions/upload-artifact@v3
if: failure()
with:
name: Toolshed test results (${{ matrix.python-version }})
name: Toolshed test results (${{ matrix.python-version }}, ${{ matrix.test-install-client }})
path: 'galaxy root/run_toolshed_tests.html'
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
urlopen,
)

from galaxy.tool_shed.galaxy_install import installed_repository_manager
from galaxy.tool_shed.galaxy_install.tools import tool_panel_manager
from galaxy.tool_shed.util import repository_util
from galaxy.tool_shed.util.container_util import get_components_from_key
Expand Down Expand Up @@ -263,7 +264,8 @@ def create_repository_dependency_objects(
log.info(
f"Reactivating deactivated tool_shed_repository '{str(repository_db_record.name)}'."
)
self.app.installed_repository_manager.activate_repository(repository_db_record)
irm = installed_repository_manager.InstalledRepositoryManager(self.app)
irm.activate_repository(repository_db_record)
# No additional updates to the database record are necessary.
can_update_db_record = False
elif repository_db_record.status not in [
Expand Down
21 changes: 20 additions & 1 deletion lib/galaxy/tool_shed/util/dependency_display.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import os

from galaxy import util
from galaxy.tool_shed.galaxy_install.installed_repository_manager import InstalledRepositoryManager
from galaxy.tool_shed.util import utility_container_manager
from galaxy.util.tool_shed.common_util import parse_repository_dependency_tuple

Expand Down Expand Up @@ -197,11 +198,12 @@ def populate_containers_dict_from_repository_metadata(self, repository):
"""
metadata = repository.metadata_
if metadata:
irm = InstalledRepositoryManager(self.app)
# Handle repository dependencies.
(
installed_repository_dependencies,
missing_repository_dependencies,
) = self.app.installed_repository_manager.get_installed_and_missing_repository_dependencies(repository)
) = irm.get_installed_and_missing_repository_dependencies(repository)
# Handle the current repository's tool dependencies.
repository_tool_dependencies = metadata.get("tool_dependencies", None)
# Make sure to display missing tool dependencies as well.
Expand Down Expand Up @@ -290,3 +292,20 @@ def build_repository_containers(
except Exception as e:
log.debug(f"Exception in build_repository_containers: {str(e)}")
return containers_dict


def build_manage_repository_dict(app, status, repository):
dd = DependencyDisplayer(app)
containers_dict = dd.populate_containers_dict_from_repository_metadata(
repository=repository,
)
management_dict = {
"status": status,
}
missing_repo_dependencies = containers_dict.get("missing_repository_dependencies", None)
if missing_repo_dependencies:
management_dict["missing_repository_dependencies"] = missing_repo_dependencies.to_dict()
repository_dependencies = containers_dict.get("repository_dependencies", None)
if repository_dependencies:
management_dict["repository_dependencies"] = repository_dependencies.to_dict()
return management_dict
15 changes: 1 addition & 14 deletions lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,17 +153,4 @@ def _manage_repository_json(self, trans, **kwd):
trans.install_model.context.add(repository)
trans.install_model.context.flush()
message = "The repository information has been updated."
dd = dependency_display.DependencyDisplayer(trans.app)
containers_dict = dd.populate_containers_dict_from_repository_metadata(
repository=repository,
)
management_dict = {
"status": status,
}
missing_repo_dependencies = containers_dict.get("missing_repository_dependencies", None)
if missing_repo_dependencies:
management_dict["missing_repository_dependencies"] = missing_repo_dependencies.to_dict()
repository_dependencies = containers_dict.get("repository_dependencies", None)
if repository_dependencies:
management_dict["repository_dependencies"] = repository_dependencies.to_dict()
return management_dict
return dependency_display.build_manage_repository_dict(trans.app, status, repository)
34 changes: 17 additions & 17 deletions lib/tool_shed/test/base/test_db_util.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import logging
from typing import Optional
from typing import (
List,
Optional,
)

from sqlalchemy import (
and_,
Expand Down Expand Up @@ -38,22 +41,19 @@ def get_all_repositories():
return sa_session.query(model.Repository).all()


def get_all_installed_repositories(actually_installed=False):
if actually_installed:
return (
install_session.query(galaxy.model.tool_shed_install.ToolShedRepository)
.filter(
and_(
galaxy.model.tool_shed_install.ToolShedRepository.table.c.deleted == false(),
galaxy.model.tool_shed_install.ToolShedRepository.table.c.uninstalled == false(),
galaxy.model.tool_shed_install.ToolShedRepository.table.c.status
== galaxy.model.tool_shed_install.ToolShedRepository.installation_status.INSTALLED,
)
def get_all_installed_repositories(session=install_session) -> List[galaxy.model.tool_shed_install.ToolShedRepository]:
return list(
session.query(galaxy.model.tool_shed_install.ToolShedRepository)
.filter(
and_(
galaxy.model.tool_shed_install.ToolShedRepository.table.c.deleted == false(),
galaxy.model.tool_shed_install.ToolShedRepository.table.c.uninstalled == false(),
galaxy.model.tool_shed_install.ToolShedRepository.table.c.status
== galaxy.model.tool_shed_install.ToolShedRepository.installation_status.INSTALLED,
)
.all()
)
else:
return install_session.query(galaxy.model.tool_shed_install.ToolShedRepository).all()
.all()
)


def get_galaxy_repository_by_name_owner_changeset_revision(repository_name, owner, changeset_revision):
Expand All @@ -78,8 +78,8 @@ def get_installed_repository_by_id(repository_id):
)


def get_installed_repository_by_name_owner(repository_name, owner, return_multiple=False):
query = install_session.query(galaxy.model.tool_shed_install.ToolShedRepository).filter(
def get_installed_repository_by_name_owner(repository_name, owner, return_multiple=False, session=install_session):
query = session.query(galaxy.model.tool_shed_install.ToolShedRepository).filter(
and_(
galaxy.model.tool_shed_install.ToolShedRepository.table.c.name == repository_name,
galaxy.model.tool_shed_install.ToolShedRepository.table.c.owner == owner,
Expand Down

0 comments on commit cf5dc5a

Please sign in to comment.