def get_installed_repositories_from_repository_dependencies( self, repository_dependencies_dict ):
     installed_repositories = []
     if repository_dependencies_dict and isinstance( repository_dependencies_dict, dict ):
         for rd_key, rd_vals in repository_dependencies_dict.items():
             if rd_key in [ 'root_key', 'description' ]:
                 continue
             # rd_key is something like: 'http://localhost:9009__ESEP__package_rdkit_2012_12__ESEP__test__ESEP__d635ffb9c665__ESEP__True'
             # rd_val is something like: [['http://localhost:9009', 'package_numpy_1_7', 'test', 'cddd64ecd985', 'True']]
             repository_components_tuple = container_util.get_components_from_key( rd_key )
             components_list = suc.extract_components_from_tuple( repository_components_tuple )
             tool_shed, name, owner, changeset_revision = components_list[ 0:4 ]
             installed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision( self.app,
                                                                                                        tool_shed,
                                                                                                        name,
                                                                                                        owner,
                                                                                                        changeset_revision )
             if installed_repository not in installed_repositories:
                 installed_repositories.append( installed_repository )
             for rd_val in rd_vals:
                 tool_shed, name, owner, changeset_revision = rd_val[ 0:4 ]
                 installed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision( self.app,
                                                                                                            tool_shed,
                                                                                                            name,
                                                                                                            owner,
                                                                                                            changeset_revision )
                 if installed_repository not in installed_repositories:
                     installed_repositories.append( installed_repository )
     return installed_repositories
Exemple #2
0
 def get_installed_repositories_from_repository_dependencies(
         self, repository_dependencies_dict):
     installed_repositories = []
     if repository_dependencies_dict and isinstance(
             repository_dependencies_dict, dict):
         for rd_key, rd_vals in repository_dependencies_dict.items():
             if rd_key in ['root_key', 'description']:
                 continue
             # rd_key is something like: 'http://localhost:9009__ESEP__package_rdkit_2012_12__ESEP__test__ESEP__d635ffb9c665__ESEP__True'
             # rd_val is something like: [['http://localhost:9009', 'package_numpy_1_7', 'test', 'cddd64ecd985', 'True']]
             repository_components_tuple = container_util.get_components_from_key(
                 rd_key)
             components_list = suc.extract_components_from_tuple(
                 repository_components_tuple)
             tool_shed, name, owner, changeset_revision = components_list[
                 0:4]
             installed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision(
                 self.app, tool_shed, name, owner, changeset_revision)
             if installed_repository not in installed_repositories:
                 installed_repositories.append(installed_repository)
             for rd_val in rd_vals:
                 tool_shed, name, owner, changeset_revision = rd_val[0:4]
                 installed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision(
                     self.app, tool_shed, name, owner, changeset_revision)
                 if installed_repository not in installed_repositories:
                     installed_repositories.append(installed_repository)
     return installed_repositories
Exemple #3
0
 def repair_repository_revision( self, trans, payload, **kwd ):
     """
     POST /api/tool_shed_repositories/repair_repository_revision
     Repair a specified repository revision previously installed into Galaxy.
     
     :param key: the current Galaxy admin user's API key
     
     The following parameters are included in the payload.
     :param tool_shed_url (required): the base URL of the Tool Shed from which the Repository was installed
     :param name (required): the name of the Repository
     :param owner (required): the owner of the Repository
     :param changset_revision (required): the changset_revision of the RepositoryMetadata object associated with the Repository
     """
     api_key = kwd.get( 'key', None )
     # Get the information about the repository to be installed from the payload.
     tool_shed_url = payload.get( 'tool_shed_url', '' )
     if not tool_shed_url:
         raise HTTPBadRequest( detail="Missing required parameter 'tool_shed_url'." )
     name = payload.get( 'name', '' )
     if not name:
         raise HTTPBadRequest( detail="Missing required parameter 'name'." )
     owner = payload.get( 'owner', '' )
     if not owner:
         raise HTTPBadRequest( detail="Missing required parameter 'owner'." )
     changeset_revision = payload.get( 'changeset_revision', '' )
     if not changeset_revision:
         raise HTTPBadRequest( detail="Missing required parameter 'changeset_revision'." )
     tool_shed_repositories = []
     tool_shed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision( trans.app, tool_shed_url, name, owner, changeset_revision )
     repair_dict = repository_util.get_repair_dict( trans, tool_shed_repository )
     ordered_tsr_ids = repair_dict.get( 'ordered_tsr_ids', [] )
     ordered_repo_info_dicts = repair_dict.get( 'ordered_repo_info_dicts', [] )
     if ordered_tsr_ids and ordered_repo_info_dicts:
         repositories_for_repair = []
         for index, tsr_id in enumerate( ordered_tsr_ids ):
             repository = trans.sa_session.query( trans.model.ToolShedRepository ).get( trans.security.decode_id( tsr_id ) )
             repo_info_dict = ordered_repo_info_dicts[ index ]
             # TODO: handle errors in repair_dict.
             repair_dict = repository_util.repair_tool_shed_repository( trans,
                                                                        repository,
                                                                        encoding_util.tool_shed_encode( repo_info_dict ) )
             repository_dict = repository.get_api_value( value_mapper=default_tool_shed_repository_value_mapper( trans, repository ) )
             repository_dict[ 'url' ] = web.url_for( controller='tool_shed_repositories',
                                                     action='show',
                                                     id=trans.security.encode_id( repository.id ) )
             if repair_dict:
                 errors = repair_dict.get( repository.name, [] )
                 repository_dict[ 'errors_attempting_repair' ] = '  '.join( errors )
             tool_shed_repositories.append( repository_dict )
     # Display the list of repaired repositories.
     return tool_shed_repositories
    def repair_repository_revision(self, trans, payload, **kwd):
        """
        POST /api/tool_shed_repositories/repair_repository_revision
        Repair a specified repository revision previously installed into Galaxy.

        :param key: the current Galaxy admin user's API key

        The following parameters are included in the payload.
        :param tool_shed_url (required): the base URL of the Tool Shed from which the Repository was installed
        :param name (required): the name of the Repository
        :param owner (required): the owner of the Repository
        :param changeset_revision (required): the changeset_revision of the RepositoryMetadata object associated with the Repository
        """
        # Get the information about the repository to be installed from the payload.
        tool_shed_url, name, owner, changeset_revision = self.__parse_repository_from_payload(
            payload, include_changeset=True)
        tool_shed_repositories = []
        tool_shed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision(
            trans.app, tool_shed_url, name, owner, changeset_revision)
        rrm = RepairRepositoryManager(trans.app)
        repair_dict = rrm.get_repair_dict(tool_shed_repository)
        ordered_tsr_ids = repair_dict.get('ordered_tsr_ids', [])
        ordered_repo_info_dicts = repair_dict.get('ordered_repo_info_dicts',
                                                  [])
        if ordered_tsr_ids and ordered_repo_info_dicts:
            for index, tsr_id in enumerate(ordered_tsr_ids):
                repository = trans.install_model.context.query(
                    trans.install_model.ToolShedRepository).get(
                        trans.security.decode_id(tsr_id))
                repo_info_dict = ordered_repo_info_dicts[index]
                # TODO: handle errors in repair_dict.
                repair_dict = rrm.repair_tool_shed_repository(
                    repository, encoding_util.tool_shed_encode(repo_info_dict))
                repository_dict = repository.to_dict(
                    value_mapper=self.__get_value_mapper(trans, repository))
                repository_dict['url'] = web.url_for(
                    controller='tool_shed_repositories',
                    action='show',
                    id=trans.security.encode_id(repository.id))
                if repair_dict:
                    errors = repair_dict.get(repository.name, [])
                    repository_dict['errors_attempting_repair'] = '  '.join(
                        errors)
                tool_shed_repositories.append(repository_dict)
        # Display the list of repaired repositories.
        return tool_shed_repositories
    def repair_repository_revision( self, trans, payload, **kwd ):
        """
        POST /api/tool_shed_repositories/repair_repository_revision
        Repair a specified repository revision previously installed into Galaxy.

        :param key: the current Galaxy admin user's API key

        The following parameters are included in the payload.
        :param tool_shed_url (required): the base URL of the Tool Shed from which the Repository was installed
        :param name (required): the name of the Repository
        :param owner (required): the owner of the Repository
        :param changeset_revision (required): the changeset_revision of the RepositoryMetadata object associated with the Repository
        """
        # Get the information about the repository to be installed from the payload.
        tool_shed_url, name, owner, changeset_revision = self.__parse_repository_from_payload( payload, include_changeset=True )
        tool_shed_repositories = []
        tool_shed_repository = suc.get_tool_shed_repository_by_shed_name_owner_changeset_revision( trans.app,
                                                                                                   tool_shed_url,
                                                                                                   name,
                                                                                                   owner,
                                                                                                   changeset_revision )
        rrm = RepairRepositoryManager( trans.app )
        repair_dict = rrm.get_repair_dict( tool_shed_repository )
        ordered_tsr_ids = repair_dict.get( 'ordered_tsr_ids', [] )
        ordered_repo_info_dicts = repair_dict.get( 'ordered_repo_info_dicts', [] )
        if ordered_tsr_ids and ordered_repo_info_dicts:
            for index, tsr_id in enumerate( ordered_tsr_ids ):
                repository = trans.install_model.context.query( trans.install_model.ToolShedRepository ).get( trans.security.decode_id( tsr_id ) )
                repo_info_dict = ordered_repo_info_dicts[ index ]
                # TODO: handle errors in repair_dict.
                repair_dict = rrm.repair_tool_shed_repository( repository,
                                                               encoding_util.tool_shed_encode( repo_info_dict ) )
                repository_dict = repository.to_dict( value_mapper=self.__get_value_mapper( trans, repository ) )
                repository_dict[ 'url' ] = web.url_for( controller='tool_shed_repositories',
                                                        action='show',
                                                        id=trans.security.encode_id( repository.id ) )
                if repair_dict:
                    errors = repair_dict.get( repository.name, [] )
                    repository_dict[ 'errors_attempting_repair' ] = '  '.join( errors )
                tool_shed_repositories.append( repository_dict )
        # Display the list of repaired repositories.
        return tool_shed_repositories