Skip to content

Conversation

@ftorradeflot
Copy link

@ftorradeflot ftorradeflot commented Dec 16, 2025

I was late to review the original PR including the jupyterlab extension documentation #695. This PR is an extension of the previous one, just to be able to include my review of the changes.

@ftorradeflot ftorradeflot requested a review from Soap2G December 16, 2025 09:30
Soap2G
Soap2G previously approved these changes Dec 16, 2025
Copy link
Contributor

@Soap2G Soap2G left a comment

Choose a reason for hiding this comment

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

Hi @ftorradeflot, many thanks, and sorry for missing that!
LGTM.

@ftorradeflot
Copy link
Author

sorry, it wasn't just this change. This was only an initial commit to be able to create the PR

I did some more changes and I think it is fine for the time being. But I have two philosophical questions:

  • Where is the border between the user and the operator? IMO the configuration should be on the user side
  • Is it a good idea to keep a separate "copy" of the extension documentation here? IMO Probably not, but not urgent either

@ftorradeflot
Copy link
Author

What started being a crazy idea ended up being a reality in a very short time (god bless gemini).

I added automatic import of the operator part from the jupyterlab extension repository, so we only have to maintain one copy of the configuration documentation. Feedback will be very welcome @Soap2G

Copy link
Contributor

@Soap2G Soap2G left a comment

Choose a reason for hiding this comment

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

Thanks @ftorradeflot, looks good. I've added a few comments related to CONFIGURATION.md, since it's not a plain copy paste and it might be worth to implement the previous changes in there as well.

Comment on lines -46 to -58
**Requirements:**
- At least one Rucio instance
- A storage system attached to the JupyterLab installation via FUSE (Filesystem in Userspace):
- The storage must be mounted on the host machine or Kubernetes nodes where JupyterLab pods run
- Common FUSE implementations include:
- **EOS**: CERN's disk-based storage system (via [`eos fuse mount`](https://eos-docs.web.cern.ch/configuration/fuse.html))
- **CephFS**: Distributed filesystem (via [`ceph-fuse`](https://docs.ceph.com/en/latest/man/8/ceph-fuse/))
- **XRootD**: High-performance data access protocol (via [`xrootdfs`](https://manpages.debian.org/testing/xrootd-fuse/xrootdfs.1.en.html))
- The mounted storage must be registered as a Rucio Storage Element (RSE) in your Rucio instance
- Should be shared among multiple users with read permissions for all users
- It's recommended that quotas be disabled, as the extension does not handle quota errors gracefully

For mounting examples, see the [ESCAPE VRE infrastructure documentation](https://github.com/vre-hub/vre/tree/master/infrastructure)
Copy link
Contributor

Choose a reason for hiding this comment

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

I would leave this part available in the documentation, since it's an additional help for folks that are looking into POSIX mounts.

Could we update the CONFIGURATION.md file to include these items?

Copy link
Author

Choose a reason for hiding this comment

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

Sure! I think this is the way to go

Copy link
Author

Choose a reason for hiding this comment

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

Maybe we could do the same with the User documentation


Example: `/etc/grid-security/certificates`

#### VOMS `vomses` Path - `voms_vomses_path`
Copy link
Contributor

Choose a reason for hiding this comment

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

If we import CONFIGURATION.md, we should get rid of the --vomsidr option in there, since it's not used anymore in voms-proxy-init.

See Riccardo's comment

In this mode, files are transferred by Rucio to a storage mounted to the JupyterLab server. This is the recommended mode for shared environments.

**Requirements:**
- At least one Rucio instance
Copy link
Contributor

Choose a reason for hiding this comment

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

In CONFIGURATION.md there's a line here that mentions Jupyterlab 2, while we generally mention >=3 (see this comment)

### Instance Configuration

#### Name - `name`
A unique machine-readable identifier for the Rucio instance. It is recommended to use FQDN (Fully Qualified Domain Name). Must be declared locally in the configuration file or set via the `RUCIO_NAME` environment variable.
Copy link
Contributor

Choose a reason for hiding this comment

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

In COFNIGURATION.md this text is different (there's a generic "declared locally"); we should update it with this text instead.

See this comment

Comment on lines -380 to -385
**2. Add a custom authenticator to `hub.extraConfig`:**

The `hub.extraConfig` section allows you to inject custom Python code into the JupyterHub configuration. Here, we define a custom authenticator class that handles OIDC token exchange with Rucio. This authenticator intercepts the user authentication flow, exchanges the OIDC token for a Rucio-specific token, and injects it into the spawned user environment.

See an example implementation in the [ESCAPE VRE Helm Chart](https://github.com/vre-hub/vre/blob/527982d0a9beeb6098dbb9f73e16ff65f4796b88/infrastructure/cluster/flux/jhub/jhub-release.yaml#L71).

Copy link
Contributor

Choose a reason for hiding this comment

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

This part is different wrt CONFIGURATION.md. I've updated it here to make it less heavy.
We could probably keep that, see this comment

Copy link
Contributor

Choose a reason for hiding this comment

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

I understand that the picture I've put before is SWAN specific, but I think it highlighted a few useful features, like metadata searching, and it was compatible with rucio_jupyter_browse.png (same datasets, just not available). Any chance we can reproduce that with these new images?

Copy link
Author

Choose a reason for hiding this comment

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

The problem with this image wasn't that it is swan-specific, the scopes and names are not relevant. The main (and only ) point for changing the image was that in the pop-up dialog you had "rucio_swan".

If you can generate the same image with "my_data" in the pop-up it would be the best

@ftorradeflot
Copy link
Author

I incorporated all the changes in CONFIGURATION.md file to the source repo and created a PR: rucio/jupyterlab-extension#107

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants