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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import os
import sys
from pkg_resources import resource_stream

from tljh import systemd

GALLERY_REPO = os.environ.get('GALLERY_REPO', 'git+https://github.com/voila-gallery/gallery@master#"egg=tljh-voila-gallery&subdirectory=tljh-voila-gallery"')


def ensure_builder_units():
gallery_builder_service = 'tljh-voila-gallery-builder.service'
with resource_stream(__name__, f'./systemd-units/{gallery_builder_service}') as f:
Expand All @@ -14,6 +18,7 @@ def ensure_builder_units():

unit_params = dict(
python_interpreter_path=sys.executable,
gallery_repo=GALLERY_REPO,
)

systemd.install_unit(gallery_builder_service, builder_unit_template.format(**unit_params))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

# Build the new Docker images
ExecStart={python_interpreter_path} -m tljh_voila_gallery.build_images

[Install]
Expand Down