Ejemplo n.º 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].")
Ejemplo n.º 2
0
    def reset_metadata_on_installed_repositories(self, trans, payload, **kwd):
        """
        PUT /api/tool_shed_repositories/reset_metadata_on_installed_repositories

        Resets all metadata on all repositories installed into Galaxy in an "orderly fashion".

        :param key: the API key of the Galaxy admin user.
        """
        start_time = strftime("%Y-%m-%d %H:%M:%S")
        results = dict(start_time=start_time,
                       successful_count=0,
                       unsuccessful_count=0,
                       repository_status=[])
        # Make sure the current user's API key proves he is an admin user in this Galaxy instance.
        if not trans.user_is_admin:
            raise HTTPForbidden(
                detail=
                'You are not authorized to reset metadata on repositories installed into this Galaxy instance.'
            )
        irmm = InstalledRepositoryMetadataManager(self.app)
        query = irmm.get_query_for_setting_metadata_on_repositories(
            order=False)
        # Now reset metadata on all remaining repositories.
        for repository in query:
            try:
                irmm.set_repository(repository)
                irmm.reset_all_metadata_on_installed_repository()
                irmm_invalid_file_tups = irmm.get_invalid_file_tups()
                if irmm_invalid_file_tups:
                    message = tool_util.generate_message_for_invalid_tools(
                        self.app,
                        irmm_invalid_file_tups,
                        repository,
                        None,
                        as_html=False)
                    results['unsuccessful_count'] += 1
                else:
                    message = "Successfully reset metadata on repository %s owned by %s" % \
                        (str(repository.name), str(repository.owner))
                    results['successful_count'] += 1
            except Exception as e:
                message = "Error resetting metadata on repository %s owned by %s: %s" % \
                    (str(repository.name), str(repository.owner), util.unicodify(e))
                results['unsuccessful_count'] += 1
            results['repository_status'].append(message)
        stop_time = strftime("%Y-%m-%d %H:%M:%S")
        results['stop_time'] = stop_time
        return json.dumps(results, sort_keys=True, indent=4)
Ejemplo n.º 3
0
    def reset_metadata_on_installed_repositories( self, trans, payload, **kwd ):
        """
        PUT /api/tool_shed_repositories/reset_metadata_on_installed_repositories

        Resets all metadata on all repositories installed into Galaxy in an "orderly fashion".

        :param key: the API key of the Galaxy admin user.
        """
        start_time = strftime( "%Y-%m-%d %H:%M:%S" )
        results = dict( start_time=start_time,
                        successful_count=0,
                        unsuccessful_count=0,
                        repository_status=[] )
        # Make sure the current user's API key proves he is an admin user in this Galaxy instance.
        if not trans.user_is_admin():
            raise HTTPForbidden( detail='You are not authorized to reset metadata on repositories installed into this Galaxy instance.' )
        irmm = InstalledRepositoryMetadataManager( self.app )
        query = irmm.get_query_for_setting_metadata_on_repositories( order=False )
        # Now reset metadata on all remaining repositories.
        for repository in query:
            try:
                irmm.set_repository( repository )
                irmm.reset_all_metadata_on_installed_repository()
                irmm_invalid_file_tups = irmm.get_invalid_file_tups()
                if irmm_invalid_file_tups:
                    message = tool_util.generate_message_for_invalid_tools( self.app,
                                                                            irmm_invalid_file_tups,
                                                                            repository,
                                                                            None,
                                                                            as_html=False )
                    results[ 'unsuccessful_count' ] += 1
                else:
                    message = "Successfully reset metadata on repository %s owned by %s" % \
                        ( str( repository.name ), str( repository.owner ) )
                    results[ 'successful_count' ] += 1
            except Exception as e:
                message = "Error resetting metadata on repository %s owned by %s: %s" % \
                    ( str( repository.name ), str( repository.owner ), str( e ) )
                results[ 'unsuccessful_count' ] += 1
            results[ 'repository_status' ].append( message )
        stop_time = strftime( "%Y-%m-%d %H:%M:%S" )
        results[ 'stop_time' ] = stop_time
        return json.dumps( results, sort_keys=True, indent=4 )