Esempio n. 1
0
 def handle_key_rd_dicts_for_repository(self, current_repository_key, repository_key_rd_dicts):
     key_rd_dict = repository_key_rd_dicts.pop(0)
     repository_dependency = key_rd_dict[current_repository_key]
     toolshed, name, owner, changeset_revision, prior_installation_required, only_if_compiling_contained_td = \
         common_util.parse_repository_dependency_tuple(repository_dependency)
     if suc.tool_shed_is_this_tool_shed(toolshed):
         required_repository = tool_shed.util.repository_util.get_repository_by_name_and_owner(self.app, name, owner)
         self.repository = required_repository
         repository_id = self.app.security.encode_id(required_repository.id)
         required_repository_metadata = \
             metadata_util.get_repository_metadata_by_repository_id_changeset_revision(self.app,
                                                                                       repository_id,
                                                                                       changeset_revision)
         self.repository_metadata = required_repository_metadata
         if required_repository_metadata:
             # The required_repository_metadata changeset_revision is installable.
             required_metadata = required_repository_metadata.metadata
             if required_metadata:
                 for current_repository_key_rd_dict in repository_key_rd_dicts:
                     if not self.in_key_rd_dicts(current_repository_key_rd_dict, self.key_rd_dicts_to_be_processed):
                         # Add the current repository_dependency into self.key_rd_dicts_to_be_processed.
                         self.key_rd_dicts_to_be_processed.append(current_repository_key_rd_dict)
         if not self.in_key_rd_dicts(key_rd_dict, self.handled_key_rd_dicts):
             # Add the current repository_dependency into self.handled_key_rd_dicts.
             self.handled_key_rd_dicts.append(key_rd_dict)
         if self.in_key_rd_dicts(key_rd_dict, self.key_rd_dicts_to_be_processed):
             # Remove the current repository from self.key_rd_dicts_to_be_processed.
             self.key_rd_dicts_to_be_processed = self.remove_from_key_rd_dicts(key_rd_dict, self.key_rd_dicts_to_be_processed)
     else:
         # The repository is in a different tool shed, so build an url and send a request.
         error_message = "Repository dependencies are currently supported only within the same Tool Shed.  "
         error_message += "Ignoring repository dependency definition for tool shed "
         error_message += "{}, name {}, owner {}, changeset revision {}".format(toolshed, name, owner, changeset_revision)
         log.debug(error_message)
Esempio n. 2
0
 def handle_key_rd_dicts_for_repository( self, current_repository_key, repository_key_rd_dicts ):
     key_rd_dict = repository_key_rd_dicts.pop( 0 )
     repository_dependency = key_rd_dict[ current_repository_key ]
     toolshed, name, owner, changeset_revision, prior_installation_required, only_if_compiling_contained_td = \
         common_util.parse_repository_dependency_tuple( repository_dependency )
     if suc.tool_shed_is_this_tool_shed( toolshed ):
         required_repository = tool_shed.util.repository_util.get_repository_by_name_and_owner( self.app, name, owner )
         self.repository = required_repository
         repository_id = self.app.security.encode_id( required_repository.id )
         required_repository_metadata = \
             metadata_util.get_repository_metadata_by_repository_id_changeset_revision( self.app,
                                                                                        repository_id,
                                                                                        changeset_revision )
         self.repository_metadata = required_repository_metadata
         if required_repository_metadata:
             # The required_repository_metadata changeset_revision is installable.
             required_metadata = required_repository_metadata.metadata
             if required_metadata:
                 for current_repository_key_rd_dict in repository_key_rd_dicts:
                     if not self.in_key_rd_dicts( current_repository_key_rd_dict, self.key_rd_dicts_to_be_processed ):
                         # Add the current repository_dependency into self.key_rd_dicts_to_be_processed.
                         self.key_rd_dicts_to_be_processed.append( current_repository_key_rd_dict )
         if not self.in_key_rd_dicts( key_rd_dict, self.handled_key_rd_dicts ):
             # Add the current repository_dependency into self.handled_key_rd_dicts.
             self.handled_key_rd_dicts.append( key_rd_dict )
         if self.in_key_rd_dicts( key_rd_dict, self.key_rd_dicts_to_be_processed ):
             # Remove the current repository from self.key_rd_dicts_to_be_processed.
             self.key_rd_dicts_to_be_processed = self.remove_from_key_rd_dicts( key_rd_dict, self.key_rd_dicts_to_be_processed )
     else:
         # The repository is in a different tool shed, so build an url and send a request.
         error_message = "Repository dependencies are currently supported only within the same Tool Shed.  "
         error_message += "Ignoring repository dependency definition for tool shed "
         error_message += "%s, name %s, owner %s, changeset revision %s" % ( toolshed, name, owner, changeset_revision )
         log.debug( error_message )
Esempio n. 3
0
 def get_updated_changeset_revisions_for_repository_dependencies(self, key_rd_dicts):
     updated_key_rd_dicts = []
     for key_rd_dict in key_rd_dicts:
         key = next(iter(key_rd_dict))
         repository_dependency = key_rd_dict[key]
         rd_toolshed, rd_name, rd_owner, rd_changeset_revision, \
             rd_prior_installation_required, \
             rd_only_if_compiling_contained_td = \
             common_util.parse_repository_dependency_tuple(repository_dependency)
         if suc.tool_shed_is_this_tool_shed(rd_toolshed):
             repository = tool_shed.util.repository_util.get_repository_by_name_and_owner(self.app, rd_name, rd_owner)
             if repository:
                 repository_id = self.app.security.encode_id(repository.id)
                 repository_metadata = \
                     metadata_util.get_repository_metadata_by_repository_id_changeset_revision(self.app,
                                                                                               repository_id,
                                                                                               rd_changeset_revision)
                 if repository_metadata:
                     # The repository changeset_revision is installable, so no updates are available.
                     new_key_rd_dict = {}
                     new_key_rd_dict[key] = repository_dependency
                     updated_key_rd_dicts.append(key_rd_dict)
                 else:
                     # The repository changeset_revision is no longer installable, so see if there's been an update.
                     changeset_revision = metadata_util.get_next_downloadable_changeset_revision(self.app, repository, rd_changeset_revision)
                     if changeset_revision != rd_changeset_revision:
                         repository_metadata = \
                             metadata_util.get_repository_metadata_by_repository_id_changeset_revision(self.app,
                                                                                                       repository_id,
                                                                                                       changeset_revision)
                     if repository_metadata:
                         new_key_rd_dict = {}
                         new_key_rd_dict[key] = \
                             [rd_toolshed,
                              rd_name,
                              rd_owner,
                              repository_metadata.changeset_revision,
                              rd_prior_installation_required,
                              rd_only_if_compiling_contained_td]
                         # We have the updated changeset revision.
                         updated_key_rd_dicts.append(new_key_rd_dict)
                     else:
                         repository_components_tuple = container_util.get_components_from_key(key)
                         components_list = tool_shed.util.repository_util.extract_components_from_tuple(repository_components_tuple)
                         toolshed, repository_name, repository_owner, repository_changeset_revision = components_list[0:4]
                         # For backward compatibility to the 12/20/12 Galaxy release.
                         if len(components_list) in (4, 5):
                             rd_only_if_compiling_contained_td = 'False'
                         message = "The revision %s defined for repository %s owned by %s is invalid, so repository " % \
                             (str(rd_changeset_revision), str(rd_name), str(rd_owner))
                         message += "dependencies defined for repository %s will be ignored." % str(repository_name)
                         log.debug(message)
             else:
                 repository_components_tuple = container_util.get_components_from_key(key)
                 components_list = tool_shed.util.repository_util.extract_components_from_tuple(repository_components_tuple)
                 toolshed, repository_name, repository_owner, repository_changeset_revision = components_list[0:4]
                 message = "The revision %s defined for repository %s owned by %s is invalid, so repository " % \
                     (str(rd_changeset_revision), str(rd_name), str(rd_owner))
                 message += "dependencies defined for repository %s will be ignored." % str(repository_name)
                 log.debug(message)
     return updated_key_rd_dicts
Esempio n. 4
0
 def get_updated_changeset_revisions_for_repository_dependencies( self, key_rd_dicts ):
     updated_key_rd_dicts = []
     for key_rd_dict in key_rd_dicts:
         key = next(iter(key_rd_dict))
         repository_dependency = key_rd_dict[ key ]
         rd_toolshed, rd_name, rd_owner, rd_changeset_revision, \
             rd_prior_installation_required, \
             rd_only_if_compiling_contained_td = \
             common_util.parse_repository_dependency_tuple( repository_dependency )
         if suc.tool_shed_is_this_tool_shed( rd_toolshed ):
             repository = tool_shed.util.repository_util.get_repository_by_name_and_owner( self.app, rd_name, rd_owner )
             if repository:
                 repository_id = self.app.security.encode_id( repository.id )
                 repository_metadata = \
                     metadata_util.get_repository_metadata_by_repository_id_changeset_revision( self.app,
                                                                                                repository_id,
                                                                                                rd_changeset_revision )
                 if repository_metadata:
                     # The repository changeset_revision is installable, so no updates are available.
                     new_key_rd_dict = {}
                     new_key_rd_dict[ key ] = repository_dependency
                     updated_key_rd_dicts.append( key_rd_dict )
                 else:
                     # The repository changeset_revision is no longer installable, so see if there's been an update.
                     repo = hg_util.get_repo_for_repository( self.app, repository=repository, repo_path=None, create=False )
                     changeset_revision = metadata_util.get_next_downloadable_changeset_revision( repository, repo, rd_changeset_revision )
                     if changeset_revision != rd_changeset_revision:
                         repository_metadata = \
                             metadata_util.get_repository_metadata_by_repository_id_changeset_revision( self.app,
                                                                                                        repository_id,
                                                                                                        changeset_revision )
                     if repository_metadata:
                         new_key_rd_dict = {}
                         new_key_rd_dict[ key ] = \
                             [ rd_toolshed,
                               rd_name,
                               rd_owner,
                               repository_metadata.changeset_revision,
                               rd_prior_installation_required,
                               rd_only_if_compiling_contained_td ]
                         # We have the updated changeset revision.
                         updated_key_rd_dicts.append( new_key_rd_dict )
                     else:
                         repository_components_tuple = container_util.get_components_from_key( key )
                         components_list = tool_shed.util.repository_util.extract_components_from_tuple( repository_components_tuple )
                         toolshed, repository_name, repository_owner, repository_changeset_revision = components_list[ 0:4 ]
                         # For backward compatibility to the 12/20/12 Galaxy release.
                         if len( components_list ) in (4, 5):
                             rd_only_if_compiling_contained_td = 'False'
                         message = "The revision %s defined for repository %s owned by %s is invalid, so repository " % \
                             ( str( rd_changeset_revision ), str( rd_name ), str( rd_owner ) )
                         message += "dependencies defined for repository %s will be ignored." % str( repository_name )
                         log.debug( message )
             else:
                 repository_components_tuple = container_util.get_components_from_key( key )
                 components_list = tool_shed.util.repository_util.extract_components_from_tuple( repository_components_tuple )
                 toolshed, repository_name, repository_owner, repository_changeset_revision = components_list[ 0:4 ]
                 message = "The revision %s defined for repository %s owned by %s is invalid, so repository " % \
                     ( str( rd_changeset_revision ), str( rd_name ), str( rd_owner ) )
                 message += "dependencies defined for repository %s will be ignored." % str( repository_name )
                 log.debug( message )
     return updated_key_rd_dicts