Add Globus set up documentation#3125
Conversation
|
@whwjiang before I get around to reviewing this, can you take care of the failing linter items? If you haven't, you should install Pre-commit should help with these types of linter items in the future because it runs all the same cleanup hooks at commit time. |
|
@turetske is also going to run through the docs to try them out as someone who hasn't set up these types of Globus Origins before. |
jhiemstrawisc
left a comment
There was a problem hiding this comment.
Very solid first draft! Most of my nits are pretty small, but I think this would go a long way if it were merged as is.
| - The Collection UUID | ||
| - A Globus confidential OAuth client (client ID and client secret) | ||
| - A correct callback URL registered in Globus for your Origin web UI |
There was a problem hiding this comment.
I think it's a bit confusing to call these prerequisites and then cover how to get each one. It feels more correct to say that the only prerequisites are a working Pelican installation and a globus collection -- the rest you explain as part of the setup.
There was a problem hiding this comment.
I left only the "Globus Collection" prereq, as someone doesn't necessarily need a Pelican installation to do this setup
| Each Globus Collection has a UUID shown on its Collection overview page. | ||
| You will use this value `Origin.GlobusCollectionID` for single-export config. | ||
|
|
||
| This can be found by going to the "File Manager - Collection Search" tab in the Globus web UI (https://app.globus.org/file-manager/collections), searching for your collection, going to the collection overview, and copying the UUID listed at the very bottom. |
There was a problem hiding this comment.
A picture is worth a thousand words -- can you provide a few screen grabs that show how to navigate these pages in the Globus web app?
There was a problem hiding this comment.
I didn't include screenshots for this, but I did link the setup documentation from Globus about it
| When registering the client: | ||
|
|
||
| - Choose or create a Globus project | ||
| - Use any app name |
There was a problem hiding this comment.
They should probably use an app name that says something descriptive about the Globus Origin they're trying to set up.
| - Use any app name | ||
| - Add a redirect URL matching your Origin web UI callback path: | ||
| - `https://<origin-hostname>:<web-port>/view/origin/globus/callback` | ||
| - Example with defaults: `https://localhost:8444/view/origin/globus/callback` |
There was a problem hiding this comment.
I don't think this example with localhost is all that helpful because no real user will ever wind up generating something against localhost like this. In the past we've generated confusion by doing this. If you want to provide an example here, make up a hostname like https://my-osdf-globus-origin:8444/view/origin/globus/callback.
Additionally, can you reference the various Pelican config knobs that correspond to <origin-hostname> and <web-port> with links to their documentation? They should be:
Server.WebPort: https://docs.pelicanplatform.org/parameters#Server-WebPortServer.Hostname: https://docs.pelicanplatform.org/parameters#Server-Hostname- OR
Server.ExternalWebUrl: https://docs.pelicanplatform.org/parameters#Server-ExternalWebUrl
If you need an explanation of how/why the webport/hostname knobs are used slightly differently than the external web URL, let me know -- some of that nuance may be important here for containerized deployments.
|
|
||
| - https://app.globus.org/settings/developers/registration/confidential_client/select-project | ||
|
|
||
| When registering the client: |
There was a problem hiding this comment.
Can you also provide a few screenshots of what these steps look like?
| 4. Complete Globus login and consent. | ||
| 5. Return to Pelican and confirm the collection shows as active. | ||
|
|
||
| Activation authorizes the Pelican origin's client to access the collection on behalf of whoever is doing the setup. |
There was a problem hiding this comment.
Can you capitalize "origin"?
|
|
||
| ## 4. Verify Data Access | ||
|
|
||
| Note that it may take a few minutes for the Pelican origin to reboot after activation. After this occurs, test core operations from the exported namespace using a Pelican client: |
There was a problem hiding this comment.
Can you stick to one sentence per line outside of lists/enumerations and capitalize origin?
| For operators troubleshooting production setup, this is the backend flow: | ||
|
|
||
| - Pelican authenticates the admin through Globus OAuth and stores tokens for collection access. | ||
| - Pelican persists token material under `Origin.GlobusConfigLocation/tokens`. |
There was a problem hiding this comment.
How about ${Origin.GlobusConfigLocation}/tokens?
| ## Troubleshooting Checklist | ||
|
|
||
| - Callback mismatch: | ||
| - Ensure the registered Globus redirect exactly matches `https://<host>:<web-port>/view/origin/globus/callback`. |
There was a problem hiding this comment.
Small nit: however you end up modifying what's currently line 43 to include the Pelican params that set these values, can you make this URL consistent with that URL? Right now the former has <origin-hostname> while this one has <host>, but both should probably be something like https://${Server.Hostname}:${Server.WebPort}/blah or https://${Server.ExternalWebUrl}/blah
| - Callback mismatch: | ||
| - Ensure the registered Globus redirect exactly matches `https://<host>:<web-port>/view/origin/globus/callback`. | ||
| - Inactive collection after restart: | ||
| - Verify `Origin.GlobusConfigLocation` is writable and persistent enough for runtime tokens. |
There was a problem hiding this comment.
We should check in with @h2zh after he gets back from vacation to see what "writable" means in the context of his "drop privs" mode.
|
@CannonLock, @whwjiang has asked that this be back-versioned into the |
turetske
left a comment
There was a problem hiding this comment.
@whwjiang @jhiemstrawisc I agree with Justin's remarks. Most of my hangups were more my lack of familiarity with Globus rather than the documentation itself.
No, you will have to make a release. |
I have added a page for setting up Globus from scratch, now that the integration project is merged into main.