Example #1
0
    def get_repository_revision_install_info( self, trans, name, owner, changeset_revision, **kwd ):
        """
        GET /api/repositories/get_repository_revision_install_info

        :param name: the name of the Repository
        :param owner: the owner of the Repository
        :param changeset_revision: the changeset_revision of the RepositoryMetadata object associated with the Repository

        Returns a list of the following dictionaries::
        - a dictionary defining the Repository.  For example:
        {
            "deleted": false,
            "deprecated": false,
            "description": "add_column hello",
            "id": "f9cad7b01a472135",
            "long_description": "add_column hello",
            "name": "add_column",
            "owner": "test",
            "private": false,
            "times_downloaded": 6,
            "url": "/api/repositories/f9cad7b01a472135",
            "user_id": "f9cad7b01a472135"
        }
        - a dictionary defining the Repository revision (RepositoryMetadata).  For example:
        {
            "changeset_revision": "3a08cc21466f",
            "downloadable": true,
            "has_repository_dependencies": false,
            "has_repository_dependencies_only_if_compiling_contained_td": false,
            "id": "f9cad7b01a472135",
            "includes_datatypes": false,
            "includes_tool_dependencies": false,
            "includes_tools": true,
            "includes_tools_for_display_in_tool_panel": true,
            "includes_workflows": false,
            "malicious": false,
            "repository_id": "f9cad7b01a472135",
            "url": "/api/repository_revisions/f9cad7b01a472135"
        }
        - a dictionary including the additional information required to install the repository.  For example:
        {
            "add_column": [
                "add_column hello",
                "http://test@localhost:9009/repos/test/add_column",
                "3a08cc21466f",
                "1",
                "test",
                {},
                {}
            ]
        }
        """
        # Example URL: 
        # http://<xyz>/api/repositories/get_repository_revision_install_info?name=<n>&owner=<o>&changeset_revision=<cr>
        if name and owner and changeset_revision:
            # Get the repository information.
            repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
            if repository is None:
                log.debug( 'Cannot locate repository %s owned by %s' % ( str( name ), str( owner ) ) )
                return {}, {}, {}
            encoded_repository_id = trans.security.encode_id( repository.id )
            repository_dict = repository.to_dict( view='element',
                                                  value_mapper=self.__get_value_mapper( trans ) )
            repository_dict[ 'url' ] = web.url_for( controller='repositories',
                                                    action='show',
                                                    id=encoded_repository_id )
            # Get the repository_metadata information.
            repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans,
                                                                                     encoded_repository_id,
                                                                                     changeset_revision )
            if repository_metadata is None:
                # The changeset_revision column in the repository_metadata table has been updated with a new
                # value value, so find the changeset_revision to which we need to update.
                repo_dir = repository.repo_path( trans.app )
                repo = hg.repository( suc.get_configured_ui(), repo_dir )
                new_changeset_revision = suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
                repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans,
                                                                                         encoded_repository_id,
                                                                                         new_changeset_revision )
                changeset_revision = new_changeset_revision
            if repository_metadata is not None:
                encoded_repository_metadata_id = trans.security.encode_id( repository_metadata.id )
                repository_metadata_dict = repository_metadata.to_dict( view='collection',
                                                                        value_mapper=self.__get_value_mapper( trans ) )
                repository_metadata_dict[ 'url' ] = web.url_for( controller='repository_revisions',
                                                                 action='show',
                                                                 id=encoded_repository_metadata_id )
                # Get the repo_info_dict for installing the repository.
                repo_info_dict, \
                includes_tools, \
                includes_tool_dependencies, \
                includes_tools_for_display_in_tool_panel, \
                has_repository_dependencies, \
                has_repository_dependencies_only_if_compiling_contained_td = \
                    repository_util.get_repo_info_dict( trans, encoded_repository_id, changeset_revision )
                return repository_dict, repository_metadata_dict, repo_info_dict
            else:
                log.debug( "Unable to locate repository_metadata record for repository id %s and changeset_revision %s" % \
                    ( str( repository.id ), str( changeset_revision ) ) )
                return repository_dict, {}, {}
        else:
            debug_msg = "Error in the Tool Shed repositories API in get_repository_revision_install_info: "
            debug_msg += "Invalid name %s or owner %s or changeset_revision %s received." % \
                ( str( name ), str( owner ), str( changeset_revision ) )
            log.debug( debug_msg )
            return {}, {}, {}
Example #2
0
 def get_repository_revision_install_info(self, trans, name, owner,
                                          changeset_revision, **kwd):
     """
     GET /api/repositories/get_repository_revision_install_info
     
     :param name: the name of the Repository
     :param owner: the owner of the Repository
     :param changset_revision: the changset_revision of the RepositoryMetadata object associated with the Repository
     
     Returns a list of the following dictionaries::
     - a dictionary defining the Repository.  For example:
     {
         "deleted": false, 
         "deprecated": false, 
         "description": "add_column hello", 
         "id": "f9cad7b01a472135", 
         "long_description": "add_column hello", 
         "name": "add_column", 
         "owner": "test", 
         "private": false, 
         "times_downloaded": 6, 
         "url": "/api/repositories/f9cad7b01a472135", 
         "user_id": "f9cad7b01a472135"
     }
     - a dictionary defining the Repository revision (RepositoryMetadata).  For example:
     {
         "changeset_revision": "3a08cc21466f", 
         "downloadable": true, 
         "has_repository_dependencies": false, 
         "id": "f9cad7b01a472135", 
         "includes_datatypes": false, 
         "includes_tool_dependencies": false, 
         "includes_tools": true,
         "includes_tools_for_display_in_tool_panel": true,
         "includes_workflows": false, 
         "malicious": false, 
         "repository_id": "f9cad7b01a472135", 
         "url": "/api/repository_revisions/f9cad7b01a472135"
     }
     - a dictionary including the additional information required to install the repository.  For example:
     {
         "add_column": [
             "add_column hello", 
             "http://test@localhost:9009/repos/test/add_column", 
             "3a08cc21466f", 
             "1", 
             "test", 
             {}, 
             {}
         ]
     }
     """
     # Example URL: http://localhost:9009/api/repositories/get_repository_revision_install_info?name=add_column&owner=test&changeset_revision=3a08cc21466f
     try:
         # Get the repository information.
         repository = suc.get_repository_by_name_and_owner(
             trans.app, name, owner)
         encoded_repository_id = trans.security.encode_id(repository.id)
         repository_dict = repository.get_api_value(
             view='element',
             value_mapper=default_repository_value_mapper(
                 trans, repository))
         repository_dict['url'] = web.url_for(controller='repositories',
                                              action='show',
                                              id=encoded_repository_id)
         # Get the repository_metadata information.
         repository_metadata = suc.get_repository_metadata_by_changeset_revision(
             trans, encoded_repository_id, changeset_revision)
         if not repository_metadata:
             # The changeset_revision column in the repository_metadata table has been updated with a new value value, so find the
             # changeset_revision to which we need to update.
             repo_dir = repository.repo_path(trans.app)
             repo = hg.repository(suc.get_configured_ui(), repo_dir)
             new_changeset_revision = suc.get_next_downloadable_changeset_revision(
                 repository, repo, changeset_revision)
             repository_metadata = suc.get_repository_metadata_by_changeset_revision(
                 trans, encoded_repository_id, new_changeset_revision)
             changeset_revision = new_changeset_revision
         if repository_metadata:
             encoded_repository_metadata_id = trans.security.encode_id(
                 repository_metadata.id)
             repository_metadata_dict = repository_metadata.get_api_value(
                 view='collection',
                 value_mapper=default_repository_metadata_value_mapper(
                     trans, repository_metadata))
             repository_metadata_dict['url'] = web.url_for(
                 controller='repository_revisions',
                 action='show',
                 id=encoded_repository_metadata_id)
             # Get the repo_info_dict for installing the repository.
             repo_info_dict, includes_tools, includes_tool_dependencies, includes_tools_for_display_in_tool_panel, has_repository_dependencies = \
                 repository_util.get_repo_info_dict( trans, encoded_repository_id, changeset_revision )
             return repository_dict, repository_metadata_dict, repo_info_dict
         else:
             message = "Unable to locate repository_metadata record for repository id %d and changeset_revision %s" % (
                 repository.id, changeset_revision)
             log.error(message, exc_info=True)
             trans.response.status = 500
             return repository_dict, {}, {}
     except Exception, e:
         message = "Error in the Tool Shed repositories API in get_repository_revision_install_info: %s" % str(
             e)
         log.error(message, exc_info=True)
         trans.response.status = 500
         return message
Example #3
0
 def get_repository_revision_install_info( self, trans, name, owner, changeset_revision, **kwd ):
     """
     GET /api/repositories/get_repository_revision_install_info
     
     :param name: the name of the Repository
     :param owner: the owner of the Repository
     :param changset_revision: the changset_revision of the RepositoryMetadata object associated with the Repository
     
     Returns a list of the following dictionaries::
     - a dictionary defining the Repository.  For example:
     {
         "deleted": false, 
         "deprecated": false, 
         "description": "add_column hello", 
         "id": "f9cad7b01a472135", 
         "long_description": "add_column hello", 
         "name": "add_column", 
         "owner": "test", 
         "private": false, 
         "times_downloaded": 6, 
         "url": "/api/repositories/f9cad7b01a472135", 
         "user_id": "f9cad7b01a472135"
     }
     - a dictionary defining the Repository revision (RepositoryMetadata).  For example:
     {
         "changeset_revision": "3a08cc21466f", 
         "downloadable": true, 
         "has_repository_dependencies": false, 
         "id": "f9cad7b01a472135", 
         "includes_datatypes": false, 
         "includes_tool_dependencies": false, 
         "includes_tools": true,
         "includes_tools_for_display_in_tool_panel": true,
         "includes_workflows": false, 
         "malicious": false, 
         "repository_id": "f9cad7b01a472135", 
         "url": "/api/repository_revisions/f9cad7b01a472135"
     }
     - a dictionary including the additional information required to install the repository.  For example:
     {
         "add_column": [
             "add_column hello", 
             "http://test@localhost:9009/repos/test/add_column", 
             "3a08cc21466f", 
             "1", 
             "test", 
             {}, 
             {}
         ]
     }
     """
     # Example URL: http://localhost:9009/api/repositories/get_repository_revision_install_info?name=add_column&owner=test&changeset_revision=3a08cc21466f
     try:
         # Get the repository information.
         repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
         encoded_repository_id = trans.security.encode_id( repository.id )
         repository_dict = repository.get_api_value( view='element', value_mapper=default_repository_value_mapper( trans, repository ) )
         repository_dict[ 'url' ] = web.url_for( controller='repositories',
                                                 action='show',
                                                 id=encoded_repository_id )
         # Get the repository_metadata information.
         repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, encoded_repository_id, changeset_revision )
         if not repository_metadata:
             # The changeset_revision column in the repository_metadata table has been updated with a new value value, so find the
             # changeset_revision to which we need to update.
             repo_dir = repository.repo_path( trans.app )
             repo = hg.repository( suc.get_configured_ui(), repo_dir )
             new_changeset_revision = suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
             repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, encoded_repository_id, new_changeset_revision )
             changeset_revision = new_changeset_revision
         if repository_metadata:
             encoded_repository_metadata_id = trans.security.encode_id( repository_metadata.id )
             repository_metadata_dict = repository_metadata.get_api_value( view='collection',
                                                                           value_mapper=default_repository_metadata_value_mapper( trans, repository_metadata ) )
             repository_metadata_dict[ 'url' ] = web.url_for( controller='repository_revisions',
                                                              action='show',
                                                              id=encoded_repository_metadata_id )
             # Get the repo_info_dict for installing the repository.
             repo_info_dict, includes_tools, includes_tool_dependencies, includes_tools_for_display_in_tool_panel, has_repository_dependencies = \
                 repository_util.get_repo_info_dict( trans, encoded_repository_id, changeset_revision )
             return repository_dict, repository_metadata_dict, repo_info_dict
         else:
             message = "Unable to locate repository_metadata record for repository id %d and changeset_revision %s" % ( repository.id, changeset_revision )
             log.error( message, exc_info=True )
             trans.response.status = 500
             return repository_dict, {}, {}
     except Exception, e:
         message = "Error in the Tool Shed repositories API in get_repository_revision_install_info: %s" % str( e )
         log.error( message, exc_info=True )
         trans.response.status = 500
         return message