示例#1
0
 def reset_metadata_on_selected_installed_repositories(self, trans, **kwd):
     repository_ids = util.listify(kwd.get("repository_ids"))
     if repository_ids:
         irmm = InstalledRepositoryMetadataManager(self.app)
         failed = []
         successful = []
         for repository_id in repository_ids:
             try:
                 repository = repository_util.get_installed_tool_shed_repository(
                     self.app, repository_id)
                 irmm.set_repository(repository)
                 irmm.reset_all_metadata_on_installed_repository()
                 if irmm.invalid_file_tups:
                     failed.append(repository_id)
                 else:
                     successful.append(repository_id)
             except Exception:
                 failed.append(repository_id)
         if successful:
             message = "Successful reset of metadata for %s." % len(
                 successful)
             if failed:
                 message += " Failed for %s." % len(failed)
         elif failed:
             message = "Failed to reset metadata for %s." % len(failed)
         return dict(message=message, successful=successful, failed=failed)
     else:
         raise exceptions.MessageException(
             "Please specify repository ids [repository_ids].")
示例#2
0
 def reset_all_metadata_on_installed_repository( self, id ):
     """Reset all metadata on a single tool shed repository installed into a Galaxy instance."""
     invalid_file_tups = []
     metadata_dict = {}
     repository = repository_util.get_installed_tool_shed_repository( self.app, id )
     repository_clone_url = common_util.generate_clone_url_for_installed_repository( self.app, repository )
     tool_path, relative_install_dir = repository.get_tool_relative_path( self.app )
     if relative_install_dir:
         original_metadata_dict = repository.metadata
         metadata_dict, invalid_file_tups = \
             self.generate_metadata_for_changeset_revision( repository=repository,
                                                            changeset_revision=repository.changeset_revision,
                                                            repository_clone_url=repository_clone_url,
                                                            shed_config_dict = repository.get_shed_config_dict( self.app ),
                                                            relative_install_dir=relative_install_dir,
                                                            repository_files_dir=None,
                                                            resetting_all_metadata_on_repository=False,
                                                            updating_installed_repository=False,
                                                            persist=False )
         repository.metadata = metadata_dict
         if metadata_dict != original_metadata_dict:
             self.update_in_shed_tool_config( repository )
             self.app.install_model.context.add( repository )
             self.app.install_model.context.flush()
             log.debug( 'Metadata has been reset on repository %s.' % repository.name )
         else:
             log.debug( 'Metadata did not need to be reset on repository %s.' % repository.name )
     else:
         log.debug( 'Error locating installation directory for repository %s.' % repository.name )
     return invalid_file_tups, metadata_dict
 def reset_metadata_on_selected_repositories(self, user, **kwd):
     """
     Inspect the repository changelog to reset metadata for all appropriate changeset revisions.
     This method is called from both Galaxy and the Tool Shed.
     """
     repository_ids = util.listify(kwd.get('repository_ids', None))
     message = ''
     status = 'done'
     if repository_ids:
         successful_count = 0
         unsuccessful_count = 0
         for repository_id in repository_ids:
             try:
                 repository = repository_util.get_installed_tool_shed_repository(
                     self.app, repository_id)
                 self.set_repository(repository)
                 self.reset_all_metadata_on_installed_repository()
                 if self.invalid_file_tups:
                     message = tool_util.generate_message_for_invalid_tools(
                         self.app,
                         self.invalid_file_tups,
                         repository,
                         None,
                         as_html=False)
                     log.debug(message)
                     unsuccessful_count += 1
                 else:
                     log.debug(
                         "Successfully reset metadata on repository %s owned by %s"
                         % (str(repository.name), str(repository.owner)))
                     successful_count += 1
             except:
                 log.exception(
                     "Error attempting to reset metadata on repository %s",
                     str(repository.name))
                 unsuccessful_count += 1
         message = "Successfully reset metadata on %d %s.  " % \
             ( successful_count, inflector.cond_plural( successful_count, "repository" ) )
         if unsuccessful_count:
             message += "Error setting metadata on %d %s - see the paster log for details.  " % \
                 ( unsuccessful_count, inflector.cond_plural( unsuccessful_count, "repository" ) )
     else:
         message = 'Select at least one repository to on which to reset all metadata.'
         status = 'error'
     return message, status
 def reset_metadata_on_selected_repositories( self, user, **kwd ):
     """
     Inspect the repository changelog to reset metadata for all appropriate changeset revisions.
     This method is called from both Galaxy and the Tool Shed.
     """
     repository_ids = util.listify( kwd.get( 'repository_ids', None ) )
     message = ''
     status = 'done'
     if repository_ids:
         successful_count = 0
         unsuccessful_count = 0
         for repository_id in repository_ids:
             try:
                 repository = repository_util.get_installed_tool_shed_repository( self.app, repository_id )
                 self.set_repository( repository )
                 self.reset_all_metadata_on_installed_repository()
                 if self.invalid_file_tups:
                     message = tool_util.generate_message_for_invalid_tools( self.app,
                                                                             self.invalid_file_tups,
                                                                             repository,
                                                                             None,
                                                                             as_html=False )
                     log.debug( message )
                     unsuccessful_count += 1
                 else:
                     log.debug( "Successfully reset metadata on repository %s owned by %s" %
                         ( str( repository.name ), str( repository.owner ) ) )
                     successful_count += 1
             except:
                 log.exception( "Error attempting to reset metadata on repository %s", str( repository.name ) )
                 unsuccessful_count += 1
         message = "Successfully reset metadata on %d %s.  " % \
             ( successful_count, inflector.cond_plural( successful_count, "repository" ) )
         if unsuccessful_count:
             message += "Error setting metadata on %d %s - see the paster log for details.  " % \
                 ( unsuccessful_count, inflector.cond_plural( unsuccessful_count, "repository" ) )
     else:
         message = 'Select at least one repository to on which to reset all metadata.'
         status = 'error'
     return message, status