Skip to content

Add Globus set up documentation#3125

Open
whwjiang wants to merge 4 commits intoPelicanPlatform:mainfrom
whwjiang:ls_new
Open

Add Globus set up documentation#3125
whwjiang wants to merge 4 commits intoPelicanPlatform:mainfrom
whwjiang:ls_new

Conversation

@whwjiang
Copy link
Contributor

I have added a page for setting up Globus from scratch, now that the integration project is merged into main.

@whwjiang whwjiang added the documentation Improvements or additions to documentation label Feb 16, 2026
@whwjiang whwjiang linked an issue Feb 16, 2026 that may be closed by this pull request
@jhiemstrawisc
Copy link
Member

@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 and then initialize it in the root of the Pelican repo, e.g.

$ python3 -m pip install pre-commit

# From root of pelican repo
$ pre-commit 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.

@jhiemstrawisc
Copy link
Member

@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.

Copy link
Member

@jhiemstrawisc jhiemstrawisc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment on lines 19 to 21
- 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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

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:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you also provide a few screenshots of what these steps look like?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about ${Origin.GlobusConfigLocation}/tokens?

## Troubleshooting Checklist

- Callback mismatch:
- Ensure the registered Globus redirect exactly matches `https://<host>:<web-port>/view/origin/globus/callback`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@jhiemstrawisc
Copy link
Member

@CannonLock, @whwjiang has asked that this be back-versioned into the v7.24 releases at some point since that's when all these features were technically made available. With our versioned docs, do we have a way to update a specific version's documentation without having to create a new release? That is, all the stuff William describes here will be available as of v7.24.0, but I'm not sure whether the documentation will cross the finish line before I cut that release. Do we have an override mechanism that would allow me to update the v7.24.0 docs without having to create a v7.24.1 solely for documentation?

Copy link
Collaborator

@turetske turetske left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.

@CannonLock
Copy link
Contributor

Do we have an override mechanism that would allow me to update the v7.24.0 docs without having to create a v7.24.1 solely for documentation?

No, you will have to make a release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Globus integration needs documentation

4 participants