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

Update the gallery package before building new images #50

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jtpio
Copy link
Member

@jtpio jtpio commented Jul 5, 2019

This PR Implements the idea from #37 (comment) (option 2) so the gallery can be updated automatically.

It also introduces the GALLERY_REPO environment variable to let the users configure where their gallery is located. The full install command for a new installation can then become:

#!/bin/bash
export GALLERY_REPO=git+https://github.com/<your-username>/gallery@master#"egg=tljh-voila-gallery&subdirectory=tljh-voila-gallery"
curl https://raw.githubusercontent.com/jupyterhub/the-littlest-jupyterhub/master/bootstrap/bootstrap.py \
 | sudo python3 - \
   --plugin ${GALLERY_REPO}

@yuvipanda does the JupyterHub service need to be restarted after updating the package?

@@ -11,6 +11,9 @@ PrivateTmp=yes
PrivateDevices=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
# Update with the new gallery
ExecStartPre={python_interpreter_path} -m pip install -U {gallery_repo}
Copy link
Member Author

@jtpio jtpio Jul 5, 2019

Choose a reason for hiding this comment

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

This looks like the simplest / easiest way to execute one more command.
If we plan to add more logic to this unit in the future we can consider moving it to a proper script.

Copy link
Contributor

Choose a reason for hiding this comment

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

hmm, I think this needs to be a separate process, since you'd need to restart the hub process too when this happens.

or, we can split the repo into two, code and data. Thta's the right thing to do long term anyway... we can then unconditionally pull in the data

Copy link
Member Author

Choose a reason for hiding this comment

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

what does data mean in that case?

Copy link
Contributor

Choose a reason for hiding this comment

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

Data would be gallery.yaml

Copy link
Member Author

Choose a reason for hiding this comment

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

Then we are back to the question of what happens when the structure of the yaml changes and requires the new code that goes with it.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ugh, yeah.

But now when the code changes, the files will change but the running processes will not... Immutable deployment problems.

I don't have a clear answer, but if this unblocks you I'm happy to merge as long as we open an issue talking about what is the way out.

Copy link
Member Author

Choose a reason for hiding this comment

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

Exactly, this would require a restart.

Copy link
Member Author

Choose a reason for hiding this comment

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

As a side note this change also does not cover the case when the hooks have been updated and should be run one more time through the --plugin mechanism of TLJH. For example when adding more custom actions in post_install_hook.

In that case it would probably be better to bootstrap a complete new instance and tear down the old one.

This was referenced Jul 5, 2019
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.

None yet

2 participants