JupyterHub

For the most part, running JupyterLab in a hub environment is the same as running locally on a workstation. However, GCS Collections cannot automatically be determined like they can on Globus Connect Personal. Custom collections will need to be speficied manually.

export GLOBUS_COLLECTION='MyCollectionUUID'

Customized Transfer Submissions

By default, JupyterLab will talk directly to Globus Transfer for submitting transfers. This behavior is customizable if desired, such that JupyterLab can submit to a third-party Globus Resource Server instead. This is useful when work needs to be done before or after a transfer such as setting ACLs.

export GLOBUS_TRANSFER_SUBMISSION_URL='https://myservice/submit-transfer'
export GLOBUS_TRANSFER_SUBMISSION_SCOPE='my_custom_globus_scope'
export GLOBUS_TRANSFER_SUBMISSION_URL_USES_HUB_AUTH=true

With these settings configured, Jupyterlab will behave slightly differently during runtime. The configured scope above will be requested on first login in addition to the original transfer scope. When a user requests a transfer, the custom URL above will be used instead of transfer, with the following request:

{
    "transfer": {
        "source_endpoint": "ddb59aef-6d04-11e5-ba46-22000b92c6ec",
        "destination_endpoint": "ddb59af0-6d04-11e5-ba46-22000b92c6ec",
        "DATA": [
            {
                "source_path": "/share/godata/file1.txt",
                "destination": "~/",
                "recursive": false
            },
            {
                "source_path": "/foo/bar",
                "destination": "~/bar",
                "recursive": true
            }
        ]
    }
}

The custom request is expected to return the following response:

{
    "task_id": “abcdeaef-6d04-11e5-ba46-22000b92c6ec"
}

The task ID returned by the service will be used to monitor the task in Globus.