Skip to content

Commit

Permalink
[16.07] Fix tool dependencies handling in Tool Shed model (#2950)
Browse files Browse the repository at this point in the history
* Fix the cause of toolshed test 1400 failing.

* Fix handling of repositories without tool dependencies.

* Fix tool dependency retrieval.

In some cases, a process might attempt to fetch tool dependencies for revision
1:7334f6d0ac17, but the repository has been updated, and tool dependency
metadata has been reassigned to e.g. 7:ce22ceec214a. This commit resolves
that issue.

* Correct the logic that returns an empty string for an empty dict.

* Fix getting latest revision with tool dependencies.

* Use self.app instead of trans.app

Conflicts:
	lib/galaxy/webapps/tool_shed/controllers/repository.py
  • Loading branch information
davebx authored and martenson committed Sep 22, 2016
1 parent 3492e96 commit 9b3c061
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 7 deletions.
2 changes: 1 addition & 1 deletion lib/galaxy/webapps/tool_shed/api/repositories.py
Expand Up @@ -782,7 +782,7 @@ def metadata( self, trans, id, **kwd ):
else:
metadata_dict[ 'repository_dependencies' ] = []
if metadata.includes_tool_dependencies and recursive:
metadata_dict[ 'tool_dependencies' ] = repository.get_tool_dependencies( changehash )
metadata_dict[ 'tool_dependencies' ] = repository.get_tool_dependencies( self.app, changehash )
else:
metadata_dict[ 'tool_dependencies' ] = {}
if metadata.includes_tools:
Expand Down
4 changes: 2 additions & 2 deletions lib/galaxy/webapps/tool_shed/controllers/repository.py
Expand Up @@ -1713,8 +1713,8 @@ def get_tool_dependencies( self, trans, **kwd ):
owner = kwd.get( 'owner', None )
changeset_revision = kwd.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
dependencies = repository.get_tool_dependencies( changeset_revision )
if dependencies is not None:
dependencies = repository.get_tool_dependencies( trans.app, changeset_revision )
if len( dependencies ) > 0:
return encoding_util.tool_shed_encode( dependencies )
return ''

Expand Down
8 changes: 5 additions & 3 deletions lib/galaxy/webapps/tool_shed/model/__init__.py
Expand Up @@ -244,11 +244,13 @@ def get_repository_dependencies( self, app, changeset, toolshed_url ):
def get_type_class( self, app ):
return app.repository_types_registry.get_class_by_label( self.type )

def get_tool_dependencies( self, changeset_revision ):
def get_tool_dependencies( self, app, changeset_revision ):
repo = hg.repository( ui.ui(), self.repo_path( app ) )
changeset_revision = metadata_util.get_next_downloadable_changeset_revision( self, repo, changeset_revision )
for downloadable_revision in self.downloadable_revisions:
if downloadable_revision.changeset_revision == changeset_revision:
return downloadable_revision.metadata.get( 'tool_dependencies', [] )
return []
return downloadable_revision.metadata.get( 'tool_dependencies', {} )
return {}

def installable_revisions( self, app, sort_revisions=True ):
return suc.get_metadata_revisions( self,
Expand Down
2 changes: 1 addition & 1 deletion lib/tool_shed/util/metadata_util.py
Expand Up @@ -26,7 +26,7 @@ def get_all_dependencies( app, metadata_entry, processed_dependency_links=[] ):
dependency_dict[ 'tools' ] = dependency_metadata.metadata[ 'tools' ]
dependency_dict[ 'repository_dependencies' ] = []
if dependency_dict['includes_tool_dependencies']:
dependency_dict['tool_dependencies'] = repository.get_tool_dependencies( dependency_dict['changeset_revision'] )
dependency_dict['tool_dependencies'] = repository.get_tool_dependencies( app, dependency_dict['changeset_revision'] )
if dependency_dict['has_repository_dependencies']:
dependency_dict['repository_dependencies'] = get_all_dependencies( app, dependency_metadata, processed_dependency_links )
else:
Expand Down

0 comments on commit 9b3c061

Please sign in to comment.