Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

limit Magpie usernames #396

Merged
merged 10 commits into from
Nov 29, 2023
Merged

limit Magpie usernames #396

merged 10 commits into from
Nov 29, 2023

Conversation

mishaschwartz
Copy link
Collaborator

@mishaschwartz mishaschwartz commented Oct 25, 2023

Overview

When Jupyterhub spawns a new jupyterlab container, it escapes any non-ascii, non-digit character in the username. This results in a username that may not match the expected username (as defined by Magpie). This mismatch results in the container failing to spawn since expected volumes cannot be mounter to the jupyterlab container.

This fixes the issue by ensuring that juptyerhub does not convert the username that is receives from Magpie.

Changes

Non-breaking changes

  • limits usernames in Magpie

Breaking changes

  • If any users currently exist with invalid usernames, an admin needs to update their user name in Magpie

Related Issue / Discussion

Additional Information

birdhouse_daccs_configs_branch: master
birdhouse_skip_ci: false

@github-actions github-actions bot added ci/operations Continuous Integration components ci/tests Issues or changes related to tests scripts component/jupyterhub Related to JupyterHub as development frontend with notebooks component/magpie Related to https://github.com/Ouranosinc/Magpie documentation Improvements or additions to documentation labels Oct 25, 2023
Copy link
Collaborator

@tlvu tlvu left a comment

Choose a reason for hiding this comment

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

LGTM but consider my suggestion to group all configs together, if possible.

services:
magpie:
environment:
MAGPIE_USER_NAME_EXTRA_REGEX: "^[a-z0-9]+$$"
Copy link
Collaborator

Choose a reason for hiding this comment

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

Just curious, instead of this env var could we have done this in the magpie.ini file? I have a slight preference for all configs to be grouped together in one file for ease of tracing them.

Is the magpie.ini route not possible or there are advantages to use env var?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The reason that I put this here is that we only need to enforce this limitation if both the magpie and jupyterhub components are enabled.
Yes, this will be 99% of the use-cases but it's important to keep the dependencies clear in the way we structure things in this repo.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Another way to think about this: This follows the "pluggable component architecture" that we've been trying to create since #214

Copy link
Collaborator

Choose a reason for hiding this comment

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

Oh I see ! Never thought about that one, having Magpie without JupyterHub do not need this config. You are right.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Hey, I just think of a counter argument in favor of magpie.ini since we are discussing about control users already violating the extra regex.

Even if Magpie can initially be activated without Jupyterhub, we better ensure all the users created are "JupyterHub forward compatible". Otherwise the poor node admin will be in for a surprise the day they activate JupyterHub.

That is to say, it's more future proof to have a stricter regex, then relax it if needed, than the other way around.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@mishaschwartz Not sure if you've seen my previous comment above but I think it's better to have the new extra regex in magpie.ini so all users created are forward-compatible if JupyterHub is enabled later.

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2181/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-20.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1383/

NOTEBOOK TEST RESULTS
    
[2023-10-25T15:07:53.184Z] ============================= test session starts ==============================
[2023-10-25T15:07:53.184Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-10-25T15:07:53.184Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2023-10-25T15:07:53.184Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-10-25T15:07:53.184Z] collected 254 items
[2023-10-25T15:07:53.184Z] 
[2023-10-25T15:07:58.457Z] notebooks-auth/geoserver.ipynb .........FF..FFF.                         [  6%]
[2023-10-25T15:08:03.232Z] notebooks-auth/test_thredds.ipynb ...F..FFFF.                            [ 11%]
[2023-10-25T15:08:11.435Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 13%]
[2023-10-25T15:08:21.525Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-10-25T15:08:27.743Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb .F......       [ 19%]
[2023-10-25T15:15:55.470Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-10-25T15:15:55.470Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-10-25T15:16:03.269Z] ...............                                                          [ 30%]
[2023-10-25T15:16:12.647Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb F.F..    [ 32%]
[2023-10-25T15:16:19.509Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-10-25T15:16:34.875Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-10-25T15:16:36.276Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-10-25T15:16:43.951Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-10-25T15:16:48.449Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-10-25T15:20:58.645Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-10-25T15:22:10.724Z] .............                                                            [ 53%]
[2023-10-25T15:22:14.913Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-10-25T15:22:17.635Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 57%]
[2023-10-25T15:22:33.331Z] .................                                                        [ 64%]
[2023-10-25T15:22:41.665Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 66%]
[2023-10-25T15:22:43.057Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-10-25T15:22:44.413Z] .FFFFFFFF                                                                [ 70%]
[2023-10-25T15:22:55.252Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-10-25T15:23:05.305Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-10-25T15:23:06.691Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 77%]
[2023-10-25T15:23:09.782Z] ......                                                                   [ 80%]
[2023-10-25T15:23:17.934Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-10-25T15:23:33.268Z] .............                                                            [ 85%]
[2023-10-25T15:23:43.258Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-10-25T15:24:24.077Z] ....s.                                                                   [ 88%]
[2023-10-25T15:24:32.227Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 88%]
[2023-10-25T15:24:45.483Z] ...                                                                      [ 90%]
[2023-10-25T15:25:00.389Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-10-25T15:25:23.738Z] ......                                                                   [ 92%]
[2023-10-25T15:25:26.029Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-10-25T15:28:00.173Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-10-25T15:28:00.173Z] 
[2023-10-25T15:28:00.173Z] =================================== FAILURES ===================================
    
  

Copy link
Collaborator

@fmigneault fmigneault left a comment

Choose a reason for hiding this comment

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

Sorry to bring this up again, but just curious to see if all these Magpie changes were actually necessary. Maybe the solution was taken too hastily?

Instead of forcing a subset of escaped/lowercase characters from JupyterHub to Mapgie, it seems we could simply update the references to use {raw_username} instead of {username} and keep the large character set of Magpie usernames. Magpie names are restricted to ^[A-Za-z0-9]+(?:[\s_\-\.][A-Za-z0-9]+)*$, which should all be valid characters for the file system.

https://github.com/jupyterhub/dockerspawner/blob/a6bf72e764dfcfdf4d1dbb1c5a84bedd183505e2/dockerspawner/dockerspawner.py#L355-L357

@fmigneault
Copy link
Collaborator

fmigneault commented Oct 25, 2023

And if {raw_username} doesn't work, we can also provide our own escape function:
https://github.com/jupyterhub/dockerspawner/blob/a6bf72e764dfcfdf4d1dbb1c5a84bedd183505e2/dockerspawner/dockerspawner.py#L600-L618

Or even override escaped_name property specifically:
https://github.com/jupyterhub/dockerspawner/blob/a6bf72e764dfcfdf4d1dbb1c5a84bedd183505e2/dockerspawner/dockerspawner.py#L870-L875
since we define a custom dockerspawner anyway

class CustomDockerSpawner(DockerSpawner):

@mishaschwartz
Copy link
Collaborator Author

@fmigneault

As @tlvu mentions here (#393 (comment)) having a different username in Magpie as in Jupyterhub adds an additional burden on admins who are trying to manage the system.

Also, having mismatched names may cause confusion for users who log in with one username and see a different username displayed in jupyterlab.

Finally, any strategy that requires us to escape usernames means we have to be very very careful about conflicts.

For example, in Magpie, we can theoretically have two users: example.user and example-2euser. If the escape function converts . to -2e (as it does now) then these two users will be able to access each other's jupyterlab container.

I'm not saying we can't construct an escape function that will be foolproof, I just think that this adds a ton of extra complexity that we have to worry about.

In my opinion it is simpler for both admins, developers, and users to simply restrict the usernames in Magpie

@fmigneault
Copy link
Collaborator

@mishaschwartz
But the links I referenced here are exactly to avoid escaping, in order to remove the problematic feature Jupyter applies by default causing modified user names. Therefore, user names from Magpie would be used as is. Users would not see an escaped variations of their name in Jupyter, it would be the same one they used for signin up in Magpie.

@mishaschwartz
Copy link
Collaborator Author

@fmigneault

You're right, my comments were only responding to your suggestion to override escape_name. However:

  • just using {raw_username} in the name_template does not fix the problem since the Authenticator also normalizes the username (https://jupyterhub.readthedocs.io/en/stable/reference/authenticators.html#normalize-usernames) by converting it to lowercase
  • if we also update the Authenticator.normalize_username function to not convert the name to lowercase, we still have the problem that Magpie allows spaces in usernames and docker containers cannot be created with spaces.
  • to avoid docker containers created with spaces, we can override escape_name instead of using {raw_username} in name_template (which I don't think we should do... see above).

I really think that the best and simplest option is to just restrict user names

@fmigneault
Copy link
Collaborator

fmigneault commented Oct 26, 2023

@mishaschwartz
An override could simply be:

class CustomDockerSpawner(DockerSpawner): 
    @property
    def escaped_name(self):
        return self.user.name

Since the authenticator is also a custom implementation, it is a very quick to override normalize_username the same way.

Magpie allows spaces in usernames

Good point.
I'm not against limiting spaces in the configured regex to avoid issues with docker and paths that would not be properly quoted.
However, this is still lower impact than blocking _/-/uppercase which are more common in usernames.

@tlvu
Copy link
Collaborator

tlvu commented Oct 27, 2023

Just to recap, we are still discussing about this PR simply to have _/-/uppercase in the username?

I don't think it is worth it. No users have ever complained to us in production that they did not like the username we gave them and need to have _/-/uppercase in the username.

I would rather have the regular {username} over {raw_username} with the extra username validation regex. It just feels simpler and more safe. If JupyterHub take the effort to have a "safe" {username}, I think probably there is a reason.

@fmigneault
Copy link
Collaborator

We do have some users that have ., _, -.
Even some control users in birdhouse used these characeters, eg; admin-catalog.
These users are not actively using Jupyter, hence why nothing "broke" for them, but restricting their usernames because of Jupyter seems like patching the issue the wrong way around.

Recaping everything, I would suggest that {username} are always used (as already done), but override the 2 functionsthat do the escape (for volume and docker names respectively) to simply not do them. There is no need for extra validation regex, since that is already enforced by Magpie user registration.
In Magpie, @mishaschwartz's feature would be used to set ^[A-Za-z0-9]+(?:[_\-\.][A-Za-z0-9]+)*$ such that only the spaces are removed from Magpie's default regex.

@mishaschwartz
Copy link
Collaborator Author

mishaschwartz commented Oct 27, 2023

We do have some users that have ., _, -.
Even some control users in birdhouse used these characeters, eg; admin-catalog.

@fmigneault This would have been useful to know earlier in the discussion so that I could have understood why you were objecting so strongly to this change.

With regards to the admin-catalog user: this user is only added if the (deprecrated) catalog component is enabled and it is added to jupyterhub's blacklist anyway. I'm not inclined to limit this change in order to support a deprecated component.

Are there other control users that you are concerned about that are not deprecated?

If JupyterHub take the effort to have a "safe" {username}, I think probably there is a reason.

This is giving me pause too @tlvu . I don't want to override these functions and then create other conflicts later on. However, the fact that jupyter provides public configuration options to override these settings makes me feel a little bit better about it. I would be willing to consider overriding these functions after thorough testing.

In summary:

  • If there are non-deprecated control users that contain special character that we need to support, and
  • after we are able to thoroughly test that jupyterlab doesn't break unexpectedly if we override the functions,
  • then I'm willing to try @fmigneault's solution.
  • otherwise, we should limit the usernames in magpie to lowercase ascii and digits and convert any existing usernames that are problematic manually

@tlvu
Copy link
Collaborator

tlvu commented Nov 3, 2023

  • If there are non-deprecated control users that contain special character that we need to support,

The admin-catalog user will never login to Jupyter. If any other non-deprecated control users that ever need to login to Jupyter, we can also just rename them since they are totally under our control. So far, I think, probably, none of the control users need to login to Jupyter yet. Otherwise, we would already see problems in production.

This is just to say, unless the effort to test the override functions is simple and quick, then yes go for it since it's nice to have - and _ in username. Otherwise I don't think it's worth the time.

Note that we can always defer overriding the functions later since it's easy to relax existing restriction. It's much harder to tighten restrictions since it implies manually fixing all the relaxed usernames that become illegal with harder restriction.

@mishaschwartz
Copy link
Collaborator Author

I can try and test this a little later. I'm just working on other stuff right now so it might be a few days until I can get to this.

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2217/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-133.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1400/

NOTEBOOK TEST RESULTS
    
[2023-11-08T15:47:45.115Z] ============================= test session starts ==============================
[2023-11-08T15:47:45.115Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-08T15:47:45.115Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master@2
[2023-11-08T15:47:45.115Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-08T15:47:45.115Z] collected 255 items
[2023-11-08T15:47:45.115Z] 
[2023-11-08T15:47:52.452Z] notebooks-auth/geoserver.ipynb .........F...FFFF.                        [  7%]
[2023-11-08T15:47:56.853Z] notebooks-auth/test_thredds.ipynb ...F..FFFF.                            [ 11%]
[2023-11-08T15:48:05.530Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-08T15:48:17.913Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-08T15:48:24.511Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ........       [ 19%]
[2023-11-08T15:57:18.690Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-08T15:57:18.690Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-08T15:57:33.235Z] ...............                                                          [ 30%]
[2023-11-08T15:57:44.299Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-08T15:58:43.447Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-08T15:58:55.398Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-08T15:58:57.039Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-08T15:59:03.553Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-08T15:59:08.060Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-08T16:03:33.648Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-08T16:04:45.388Z] .............                                                            [ 53%]
[2023-11-08T16:04:50.101Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-08T16:04:52.315Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-08T16:05:09.289Z] .................                                                        [ 64%]
[2023-11-08T16:05:16.275Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-08T16:05:18.191Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-08T16:05:41.088Z] ........F                                                                [ 70%]
[2023-11-08T16:05:50.180Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-08T16:05:58.899Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-08T16:06:00.286Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-08T16:06:03.367Z] ......                                                                   [ 80%]
[2023-11-08T16:06:09.947Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-08T16:06:25.317Z] .............                                                            [ 85%]
[2023-11-08T16:06:35.325Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-08T16:07:11.901Z] ....s.                                                                   [ 88%]
[2023-11-08T16:07:18.483Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-08T16:07:33.992Z] ...                                                                      [ 90%]
[2023-11-08T16:07:46.221Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-08T16:08:10.102Z] ......                                                                   [ 92%]
[2023-11-08T16:08:12.582Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-08T16:10:46.704Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-08T16:10:46.704Z] 
[2023-11-08T16:10:46.704Z] =================================== FAILURES ===================================
    
  

@mishaschwartz
Copy link
Collaborator Author

mishaschwartz commented Nov 8, 2023

@fmigneault @tlvu

Testing the user name

Set up

  • change MAGPIE_USER_NAME_EXTRA_REGEX to ^\S+$ in order to disallow whitespace
  • add escaped_name function to CustomDockerSpawner that just returns user name as is
  • add normalize_username function to MagpieAuthenticator class that returns the user name as is

Test 1: create a user with a space in their name

  • tried to create a user in Magpie named "test test"
    • Magpie rejected the user name as invalid
Test 2: create a user with capital letter in their name
  • created a user in Magpie named "Test"
  • logged in to jupyterhub as the "Test" user
    • username in jupyterhub remained "Test"
  • spawned a jupyterlab server (eo-crim:0.3.0)
    • server spawned successfully and all workspaces are mounted properly
Test 3: create a user with capital letter in their name, sign in as lowercase username equivalent
  • created a user in Magpie named "Test"
  • logged in to jupyterhub as the "test" user
    • username in jupyterhub remained "test"
    • login was successful despite there not being a "test" user in Magpie
  • spawned a jupyterlab server (eo-crim:0.3.0)
    • server spawn failed because directory names with "test" did not exist (only "Test")
  • logged in to Magpie as the "test" user
    • successfully logged in as the "Test" user (username does NOT match)
Test 4: create a user with capital letter in their name, and another with the lowercase username equivalent, sign in as capitalized user
  • created a user in Magpie named "Test"
  • created a user in Magpie named "test" (different password as "Test")
  • logged in to jupyterhub as the "Test" user
    • invalid credentials
  • logged in to Magpie as the "Test" user
    • invalid credentials
Test 5: create a user with capital letter in their name, and another with the lowercase username equivalent, sign in as lowercase user
  • created a user in Magpie named "Test"
  • created a user in Magpie named "test" (different password as "Test")
  • logged in to jupyterhub as the "test" user
    • username in jupyterhub remained "test"
    • login was successful
  • spawned a jupyterlab server (eo-crim:0.3.0)
    • server spawned successfully and all workspaces are mounted properly
  • logged in to Magpie as the "test" user
    • successfully logged in as the "test" user
Test 6: create a user with a special character in their name
  • created a user in Magpie named "test-test"
  • logged in to jupyterhub as the "test-test" user
    • username in jupyterhub remained "test-test"
  • spawned a jupyterlab server (eo-crim:0.3.0)
    • server spawned successfully and all workspaces are mounted properly

Summary:

I don't see any issues with jupyterhub if all we do is keep jupyter from converting the username and ensuring that magpie does not allow whitespace in usernames

BUT... there is an issue in Magpie where username capitalization in ignored when logging in. We need to make sure that Magpie doesn't confuse users whose usernames only differ in terms of capitalization. Probably what is happening is that the username look up is not case sensitive.

TODO:

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2218/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-154.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1402/

NOTEBOOK TEST RESULTS
    
[2023-11-08T21:07:18.626Z] ============================= test session starts ==============================
[2023-11-08T21:07:18.626Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-08T21:07:18.626Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2023-11-08T21:07:18.626Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-08T21:07:18.626Z] collected 255 items
[2023-11-08T21:07:18.626Z] 
[2023-11-08T21:07:29.640Z] notebooks-auth/geoserver.ipynb ..................                        [  7%]
[2023-11-08T21:07:38.080Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-08T21:07:46.292Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-08T21:07:56.000Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-08T21:08:03.615Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ........       [ 19%]
[2023-11-08T21:15:14.182Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-08T21:15:16.742Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-08T21:15:27.292Z] ...............                                                          [ 30%]
[2023-11-08T21:15:36.689Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-08T21:15:47.208Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-08T21:16:02.863Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-08T21:16:04.070Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-08T21:16:12.061Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-08T21:16:16.561Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-08T21:19:25.923Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-08T21:20:32.896Z] .............                                                            [ 53%]
[2023-11-08T21:20:37.348Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-08T21:20:39.568Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-08T21:20:54.607Z] .................                                                        [ 64%]
[2023-11-08T21:21:02.226Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-08T21:21:03.611Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-08T21:21:27.804Z] ........F                                                                [ 70%]
[2023-11-08T21:21:36.889Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-08T21:21:45.871Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-08T21:21:47.258Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-08T21:21:50.016Z] ......                                                                   [ 80%]
[2023-11-08T21:21:56.610Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-08T21:22:10.569Z] .............                                                            [ 85%]
[2023-11-08T21:22:20.587Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-08T21:22:53.492Z] ....s.                                                                   [ 88%]
[2023-11-08T21:23:00.091Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-08T21:23:12.618Z] ...                                                                      [ 90%]
[2023-11-08T21:23:27.531Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-08T21:23:46.591Z] ......                                                                   [ 92%]
[2023-11-08T21:23:49.326Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-08T21:26:23.443Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-08T21:26:23.443Z] 
[2023-11-08T21:26:23.443Z] =================================== FAILURES ===================================
    
  

Copy link
Collaborator

@fmigneault fmigneault left a comment

Choose a reason for hiding this comment

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

Looks good.
Will have to see how that works with Ouranosinc/Magpie#596.
I propose we update this PR with the Magpie version that has the fix at the same time.

Copy link
Collaborator

@tlvu tlvu left a comment

Choose a reason for hiding this comment

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

The new regex surprised me.

CHANGES.md Outdated
cannot be mounter to the jupyterlab container.

This fixes the issue by limiting Magpie usernames to contain only lowercase ascii characters and digits. This ensures
that no characters will be escaped in Jupyterhub.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please mention Magpie is updated to a new version.

When Magpie changes, there is always a risk of failed DB migration on existing deployments in production so all node admin should always know if there is a Magpie update in a change.

@@ -1,5 +1,7 @@
version: "3.4"
services:
magpie:
environment:
MAGPIE_USER_NAME_EXTRA_REGEX: ^\S+$$
Copy link
Collaborator

Choose a reason for hiding this comment

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

I am completely confused here. So \S will "matches any non-whitespace character; this is equivalent to the class [^ \t\n\r\f\v]." (definition from https://docs.python.org/3/howto/regex.html#simple-patterns).

So we want the usernames to only contain non-writespace char ???

Other than non-whitespace, we probably would want to avoid other kind of illegal char like /, *, # ... Unless this is already handled by Magpie built-in username validation?

Or I might have completely mis-understood how the new MAGPIE_USER_NAME_EXTRA_REGEX works.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Opps sorry, my brain is dead past midnight, yes we want non-whitespace char.

The regex is right but I'd like something more conservative, like an explicit allow list: "^[a-zA-Z0-9_\-]+$$". This explicit list will protect us from any other illegal char that we ever forgot to think about. I'd rather be safe than sorry.

Copy link
Collaborator Author

@mishaschwartz mishaschwartz Nov 9, 2023

Choose a reason for hiding this comment

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

This regex is used in combination with the one already enforced by Magpie by default ^[A-Za-z0-9]+(?:[\s_\-\.][A-Za-z0-9]+)*$ (see #396 (review)).

The username must match both that default regex as well as ^\S+$. The default regex protects us from unexpected characters, the second regex protects us from whitespace.

I'd rather not duplicate most of the default regex here since the more complex we make it, the more prone to errors we are if we change it in the future.

Copy link
Collaborator

Choose a reason for hiding this comment

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

If we are going to override the regex either way, I agree with @tlvu that it is better to have it explicitly, even if they overlap partially. It is easier to analyze one location than having to go back into Magpie code to validate the full set. Even if we do make a mistake, the regex on Magpie side will still double-check it.

CHANGES.md Outdated Show resolved Hide resolved
host machine are discovered properly since we expect the username to match the username
set by Magpie.
"""
return self.user.name
Copy link
Collaborator

Choose a reason for hiding this comment

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

Oh I am not sure I want to override escape_name(). This will make {username} for old existing username that potentially can have invalid char actually use the raw username with invalid char.

MAGPIE_USER_NAME_EXTRA_REGEX take effect on new username only. Existing ones, if they are invalid, are still invalid.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Any user who would have that issue will not be able to spawn a jupyterlab server right now and you would know about it already.

If we don't override escape_name then we have to limit the usernames to lowercase ascii and digits. I believe that @fmigneault is still not in favour of that strategy though.

Copy link
Collaborator

Choose a reason for hiding this comment

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

The Jupyter usernames were always bounded by Magpie usernames at least. The only mismatch this escape caused was about lower/upper case (which won't even be a thing anymore with an upcoming Magpie PR), and .-_ characters.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Any user who would have that issue will not be able to spawn a jupyterlab server right now and you would know about it already.

Agreed. For existing user that never log into Jupyter before, if they generate an error, hopefully they will contact us and we'll create them a new username that is "valid".

Now that I think about it though, isn't overriding escape_name() to return self.user.name the same as simply using {raw_username}? Why overriding when we can simply use {raw_username}?

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2222/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-46.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1403/

NOTEBOOK TEST RESULTS
    
[2023-11-09T18:06:47.693Z] ============================= test session starts ==============================
[2023-11-09T18:06:47.693Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-09T18:06:47.693Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2023-11-09T18:06:47.693Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-09T18:06:47.693Z] collected 255 items
[2023-11-09T18:06:47.693Z] 
[2023-11-09T18:06:58.695Z] notebooks-auth/geoserver.ipynb ..................                        [  7%]
[2023-11-09T18:07:06.840Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-09T18:07:14.829Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-09T18:07:23.813Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-09T18:07:33.573Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ........       [ 19%]
[2023-11-09T18:14:49.568Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-09T18:14:51.484Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-09T18:14:58.958Z] ...............                                                          [ 30%]
[2023-11-09T18:15:08.377Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-09T18:15:15.021Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-09T18:15:31.234Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-09T18:15:32.620Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-09T18:15:37.893Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-09T18:15:42.156Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-09T18:20:23.336Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-09T18:21:30.922Z] .............                                                            [ 53%]
[2023-11-09T18:21:35.861Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-09T18:21:38.198Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-09T18:21:53.271Z] .................                                                        [ 64%]
[2023-11-09T18:22:01.376Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-09T18:22:02.760Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-09T18:22:27.091Z] ........F                                                                [ 70%]
[2023-11-09T18:22:36.018Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-09T18:22:45.337Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-09T18:22:47.261Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-09T18:22:50.075Z] ......                                                                   [ 80%]
[2023-11-09T18:22:58.212Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-09T18:23:12.696Z] .............                                                            [ 85%]
[2023-11-09T18:23:22.687Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-09T18:23:57.653Z] ....s.                                                                   [ 88%]
[2023-11-09T18:24:05.801Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-09T18:24:20.555Z] ...                                                                      [ 90%]
[2023-11-09T18:24:32.798Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-09T18:24:57.291Z] ......                                                                   [ 92%]
[2023-11-09T18:24:58.397Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-09T18:27:33.021Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-09T18:27:33.021Z] 
[2023-11-09T18:27:33.021Z] =================================== FAILURES ===================================
    
  

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2235/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-154.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1412/

NOTEBOOK TEST RESULTS
    
[2023-11-11T02:26:18.078Z] ============================= test session starts ==============================
[2023-11-11T02:26:18.078Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-11T02:26:18.079Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2023-11-11T02:26:18.079Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-11T02:26:18.079Z] collected 255 items
[2023-11-11T02:26:18.079Z] 
[2023-11-11T02:26:27.920Z] notebooks-auth/geoserver.ipynb ..................                        [  7%]
[2023-11-11T02:26:35.725Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-11T02:26:44.192Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-11T02:26:53.896Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-11T02:26:59.607Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb .FFFFFFF       [ 19%]
[2023-11-11T02:34:10.908Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-11T02:34:10.908Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-11T02:34:16.310Z] ...............                                                          [ 30%]
[2023-11-11T02:34:25.704Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-11T02:34:32.464Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-11T02:34:48.848Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-11T02:34:50.509Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-11T02:34:58.755Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-11T02:35:03.541Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-11T02:38:04.197Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-11T02:39:51.964Z] .............                                                            [ 53%]
[2023-11-11T02:39:53.070Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-11T02:39:55.309Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-11T02:40:21.284Z] .................                                                        [ 64%]
[2023-11-11T02:40:29.176Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-11T02:40:30.558Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-11T02:40:42.434Z] ........F                                                                [ 70%]
[2023-11-11T02:40:53.954Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-11T02:41:03.236Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-11T02:41:05.779Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-11T02:41:12.411Z] ......                                                                   [ 80%]
[2023-11-11T02:41:51.152Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-11T02:42:39.758Z] .............                                                            [ 85%]
[2023-11-11T02:42:54.673Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-11T02:43:55.685Z] ....s.                                                                   [ 88%]
[2023-11-11T02:44:03.841Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-11T02:44:20.254Z] ...                                                                      [ 90%]
[2023-11-11T02:44:35.180Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-11T02:44:59.694Z] ......                                                                   [ 92%]
[2023-11-11T02:45:02.122Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-11T02:47:36.224Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-11T02:47:36.224Z] 
[2023-11-11T02:47:36.224Z] =================================== FAILURES ===================================
    
  

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2236/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-133.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1413/

NOTEBOOK TEST RESULTS
    
[2023-11-11T02:36:47.403Z] ============================= test session starts ==============================
[2023-11-11T02:36:47.403Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-11T02:36:47.403Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master@2
[2023-11-11T02:36:47.403Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-11T02:36:47.403Z] collected 255 items
[2023-11-11T02:36:47.403Z] 
[2023-11-11T02:36:59.607Z] notebooks-auth/geoserver.ipynb ..................                        [  7%]
[2023-11-11T02:37:07.582Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-11T02:37:15.145Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-11T02:37:24.193Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-11T02:37:29.612Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ......FF       [ 19%]
[2023-11-11T02:44:47.248Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-11T02:44:47.248Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-11T02:44:51.065Z] ...............                                                          [ 30%]
[2023-11-11T02:45:00.723Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-11T02:45:07.633Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-11T02:45:23.800Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-11T02:45:25.454Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-11T02:45:30.512Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-11T02:45:35.029Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-11T02:48:16.794Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-11T02:49:32.371Z] .............                                                            [ 53%]
[2023-11-11T02:49:35.932Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-11T02:49:38.406Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-11T02:49:54.871Z] .................                                                        [ 64%]
[2023-11-11T02:50:02.674Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-11T02:50:04.055Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-11T02:50:22.116Z] ........F                                                                [ 70%]
[2023-11-11T02:50:31.470Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-11T02:50:40.806Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-11T02:50:42.210Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-11T02:50:45.018Z] ......                                                                   [ 80%]
[2023-11-11T02:50:51.594Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-11T02:51:06.097Z] .............                                                            [ 85%]
[2023-11-11T02:51:16.095Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-11T02:51:50.547Z] ....s.                                                                   [ 88%]
[2023-11-11T02:51:58.694Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-11T02:52:14.226Z] ...                                                                      [ 90%]
[2023-11-11T02:52:26.463Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-11T02:52:50.356Z] ......                                                                   [ 92%]
[2023-11-11T02:52:52.287Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-11T02:55:31.891Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-11T02:55:31.891Z] 
[2023-11-11T02:55:31.892Z] =================================== FAILURES ===================================
    
  

Copy link
Collaborator

@fmigneault fmigneault left a comment

Choose a reason for hiding this comment

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

Assuming the fix of lower/upper-case user name handling is done in Magpie, this looks fine to me.

Copy link
Collaborator

@tlvu tlvu left a comment

Choose a reason for hiding this comment

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

Please add back the extra regex in magpie.ini in explicit form.

For {raw_username} vs overriding escape_name() this is just a my reflection, don't have to change it if no new advantages.

Otherwise, the rest looks good, thanks.

@@ -1,7 +1,5 @@
version: "3.4"
services:
magpie:
environment:
MAGPIE_USER_NAME_EXTRA_REGEX: ^\S+$$
Copy link
Collaborator

Choose a reason for hiding this comment

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

I assume you migrate this change to magpie.ini to ensure forward compat if later JupyterHub is enabled? Missing corresponding change in magpie.ini. Please use an explicit regex "^[a-zA-Z0-9_\-\.]+$$" which would allow upper case, _-. and nothing else.

This is to ensure even if Magpie validation regex changes later, we are independent and as @fmigneault said, this is to simplify the life of other node admin, avoiding them to lookup the validation regex on Magpie side.

Copy link
Collaborator

@tlvu tlvu Nov 21, 2023

Choose a reason for hiding this comment

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

When adding back the extra regex, please add a comment that Magpie already has a built-in regex too, just to raise awareness for those not in the know.

I guess now that Magpie do not allow uppercase (Ouranosinc/Magpie#597), the extra regex becomes "[a-z0-9_\-\.]+$$".

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@tlvu

With the new changes, we do not need to use the MAGPIE_USER_NAME_EXTRA_REGEX feature at all. The current default checks that Magpie does are sufficient (without the need to do an extra check), see Ouranosinc/Magpie#597 for details

Copy link
Collaborator

Choose a reason for hiding this comment

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

@mishaschwartz

I see, thanks. In this case, just to help other future node admin not in the know, can you document in magpie.ini the exact permanent link to the magie regex, this one currently https://github.com/Ouranosinc/Magpie/blob/595602d2cebae94223b952f0cf04a1caa64f6546/magpie/api/management/user/user_utils.py#L66.

So this is the regex we expect at this moment. If in the future this regex changes on Magpie side, and somehow break us, we will know what was the original expected working regex.

host machine are discovered properly since we expect the username to match the username
set by Magpie.
"""
return self.user.name
Copy link
Collaborator

Choose a reason for hiding this comment

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

Any user who would have that issue will not be able to spawn a jupyterlab server right now and you would know about it already.

Agreed. For existing user that never log into Jupyter before, if they generate an error, hopefully they will contact us and we'll create them a new username that is "valid".

Now that I think about it though, isn't overriding escape_name() to return self.user.name the same as simply using {raw_username}? Why overriding when we can simply use {raw_username}?

@mishaschwartz
Copy link
Collaborator Author

Now that I think about it though, isn't overriding escape_name() to return self.user.name the same as simply using {raw_username}? Why overriding when we can simply use {raw_username}?

This only works in the places where jupyterhub allows you to specify {raw_username} in a template. We want to ensure that this applied in all cases (not just when mounting user workspaces to the container)

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2308/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-154.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1438/

NOTEBOOK TEST RESULTS
    
[2023-11-27T20:42:07.220Z] ============================= test session starts ==============================
[2023-11-27T20:42:07.220Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-27T20:42:07.220Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2023-11-27T20:42:07.220Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-27T20:42:07.220Z] collected 255 items
[2023-11-27T20:42:07.220Z] 
[2023-11-27T20:42:18.718Z] notebooks-auth/geoserver.ipynb ..................                        [  7%]
[2023-11-27T20:42:27.142Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-27T20:42:35.728Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-27T20:42:45.847Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-27T20:42:55.820Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ........       [ 19%]
[2023-11-27T20:50:22.928Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-27T20:50:22.928Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-27T20:50:32.806Z] ...............                                                          [ 30%]
[2023-11-27T20:50:42.516Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-27T20:50:50.770Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-27T20:51:07.260Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-27T20:51:08.644Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-27T20:51:13.605Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-27T20:51:18.188Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-27T20:54:50.784Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-27T20:56:08.710Z] .............                                                            [ 53%]
[2023-11-27T20:56:11.192Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-27T20:56:13.427Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-27T20:56:30.261Z] .................                                                        [ 64%]
[2023-11-27T20:56:37.709Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-27T20:56:39.093Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-27T20:56:40.461Z] .FFFFFFFF                                                                [ 70%]
[2023-11-27T20:56:51.046Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-27T20:57:00.770Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-27T20:57:02.158Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-27T20:57:05.465Z] ......                                                                   [ 80%]
[2023-11-27T20:57:13.624Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-27T20:57:27.745Z] .............                                                            [ 85%]
[2023-11-27T20:57:37.755Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-27T20:58:14.351Z] ....s.                                                                   [ 88%]
[2023-11-27T20:58:22.484Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-27T20:58:37.249Z] ...                                                                      [ 90%]
[2023-11-27T20:58:52.146Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-27T20:59:12.762Z] ......                                                                   [ 92%]
[2023-11-27T20:59:15.625Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-27T21:02:01.497Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-27T21:02:01.497Z] 
[2023-11-27T21:02:01.497Z] =================================== FAILURES ===================================
    
  

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2311/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-154.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1440/

NOTEBOOK TEST RESULTS
    
[2023-11-28T18:36:35.651Z] ============================= test session starts ==============================
[2023-11-28T18:36:35.651Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-28T18:36:35.651Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2023-11-28T18:36:35.651Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-28T18:36:35.651Z] collected 255 items
[2023-11-28T18:36:35.651Z] 
[2023-11-28T18:36:45.759Z] notebooks-auth/geoserver.ipynb ..................                        [  7%]
[2023-11-28T18:36:53.256Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-28T18:37:01.854Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-28T18:37:10.516Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-28T18:37:19.597Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ........       [ 19%]
[2023-11-28T18:58:06.372Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-28T18:58:06.372Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-28T18:58:16.478Z] ...............                                                          [ 30%]
[2023-11-28T18:58:25.881Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-28T18:58:33.443Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-28T18:58:48.827Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-28T18:58:50.217Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-28T18:58:55.506Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-28T18:58:59.769Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-28T19:02:44.819Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-28T19:04:07.687Z] .............                                                            [ 53%]
[2023-11-28T19:04:12.411Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-28T19:04:14.548Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-28T19:04:29.866Z] .................                                                        [ 64%]
[2023-11-28T19:04:37.460Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-28T19:04:39.373Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-28T19:05:52.512Z] ......FFF                                                                [ 70%]
[2023-11-28T19:06:03.358Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-28T19:06:11.719Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-28T19:06:13.104Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-28T19:06:16.185Z] ......                                                                   [ 80%]
[2023-11-28T19:06:22.766Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-28T19:06:36.266Z] .............                                                            [ 85%]
[2023-11-28T19:06:46.271Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-28T19:07:43.006Z] ....s.                                                                   [ 88%]
[2023-11-28T19:07:51.173Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-28T19:08:06.735Z] ...                                                                      [ 90%]
[2023-11-28T19:08:18.981Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-28T19:08:41.593Z] ......                                                                   [ 92%]
[2023-11-28T19:08:44.593Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-28T19:11:18.759Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-28T19:11:18.759Z] 
[2023-11-28T19:11:18.759Z] =================================== FAILURES ===================================
    
  

@mishaschwartz mishaschwartz merged commit 02e22fb into master Nov 29, 2023
4 of 5 checks passed
@mishaschwartz mishaschwartz deleted the limit-magpie-usernames branch November 29, 2023 17:06
@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/2314/
Result : failure

BIRDHOUSE_DEPLOY_BRANCH : limit-magpie-usernames
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-133.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/1443/

NOTEBOOK TEST RESULTS
    
[2023-11-29T17:16:57.409Z] ============================= test session starts ==============================
[2023-11-29T17:16:57.409Z] platform linux -- Python 3.9.16, pytest-7.3.1, pluggy-1.0.0
[2023-11-29T17:16:57.409Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master@2
[2023-11-29T17:16:57.409Z] plugins: anyio-3.6.1, dash-2.10.0, nbval-0.9.6, tornasync-0.6.0.post2, xdist-3.3.1
[2023-11-29T17:16:57.409Z] collected 255 items
[2023-11-29T17:16:57.409Z] 
[2023-11-29T17:17:06.685Z] notebooks-auth/geoserver.ipynb ..............F...                        [  7%]
[2023-11-29T17:17:14.466Z] notebooks-auth/test_thredds.ipynb ...........                            [ 11%]
[2023-11-29T17:17:22.375Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb .......        [ 14%]
[2023-11-29T17:17:59.736Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb ......         [ 16%]
[2023-11-29T17:18:07.343Z] pavics-sdi-master/docs/source/notebooks/WMS_example.ipynb ........       [ 19%]
[2023-11-29T17:43:39.580Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ............        [ 24%]
[2023-11-29T17:43:39.580Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 24%]
[2023-11-29T17:43:43.980Z] ...............                                                          [ 30%]
[2023-11-29T17:43:54.785Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 32%]
[2023-11-29T17:44:02.155Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ......            [ 34%]
[2023-11-29T17:44:18.624Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 37%]
[2023-11-29T17:44:20.268Z] pavics-sdi-master/docs/source/notebooks/jupyter_extensions.ipynb .       [ 37%]
[2023-11-29T17:44:25.310Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 40%]
[2023-11-29T17:44:30.029Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .....       [ 42%]
[2023-11-29T17:47:29.163Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb ............... [ 48%]
[2023-11-29T17:48:57.148Z] .............                                                            [ 53%]
[2023-11-29T17:48:59.881Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb ....             [ 54%]
[2023-11-29T17:49:02.114Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 58%]
[2023-11-29T17:49:18.617Z] .................                                                        [ 64%]
[2023-11-29T17:49:25.786Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb ......          [ 67%]
[2023-11-29T17:49:27.166Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 67%]
[2023-11-29T17:49:45.508Z] .........                                                                [ 70%]
[2023-11-29T17:49:54.948Z] finch-master/docs/source/notebooks/dap_subset.ipynb ...........          [ 75%]
[2023-11-29T17:50:04.280Z] finch-master/docs/source/notebooks/finch-usage.ipynb ......              [ 77%]
[2023-11-29T17:50:05.660Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 78%]
[2023-11-29T17:50:14.160Z] ......                                                                   [ 80%]
[2023-11-29T17:50:46.285Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 80%]
[2023-11-29T17:52:57.701Z] .............                                                            [ 85%]
[2023-11-29T17:53:29.812Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 86%]
[2023-11-29T17:54:06.396Z] ....s.                                                                   [ 88%]
[2023-11-29T17:54:14.534Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 89%]
[2023-11-29T17:54:27.827Z] ...                                                                      [ 90%]
[2023-11-29T17:54:42.744Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 90%]
[2023-11-29T17:55:06.094Z] ......                                                                   [ 92%]
[2023-11-29T17:55:07.768Z] notebooks/hummingbird.ipynb ............                                 [ 97%]
[2023-11-29T17:57:47.348Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2023-11-29T17:57:47.348Z] 
[2023-11-29T17:57:47.348Z] =================================== FAILURES ===================================
    
  

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci/operations Continuous Integration components ci/tests Issues or changes related to tests scripts component/jupyterhub Related to JupyterHub as development frontend with notebooks component/magpie Related to https://github.com/Ouranosinc/Magpie documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🐛 [BUG]: magpie allows special characters in usernames that mess up jupyterhub
4 participants