-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Updated path-based interactive tools with entry point path injection, support for ITs with relative links, shortened URLs, doc and config updates including Podman job_conf #16795
Conversation
3ebfc3c
to
230033a
Compare
So ITs work with podman? This would be great news for me. |
Yes, at least under CentOS stream! Finding the correct config has been a long series of trial and error but this last version has been running without a glitch for a long time. Note that I have configured to ignore the SELinux issues. A proper implementation would add a Podman mode in Galaxy that correctly labels output files. There is also an issue with Galaxy overwriting the EDIT: This is for Docker containers that runs as |
230033a
to
d4a405e
Compare
yes, should be possible. It looks like rocker-versioned2 doesn't support it directly as an env var but we could send it along in the proxy itself? I.e. add to your existing PR for gx-it-proxy, the header will probably only be read by RStudio and it'll solve it. rocker-org/rocker-versioned2#388 (comment), or we use our forked image and add it there. But yes! it is easy to support :) |
1 similar comment
This comment was marked as duplicate.
This comment was marked as duplicate.
<3 this is fantastic news |
Great info! Feels very much like a hack though to add this to all proxy requests. Also, the solution might be needed for other tools as well. It seems we should really add a |
agreed, I think exposing a custom env var that gets set at start time is a better choice, though a bit more complicated to manage on top of an existing container (it'll be fine for rstudio but) |
My point is that this is really an alternative injection method which is actually quite simple to implement and might solve a bit of headaches (I had to give up on an env-based solution for RStudio myself). But let's then make it a proper feature. |
On the other hand, it would probably not be much work to add it to this PR, and it also has some consequences on naming. So instead of |
@sveinugu Is it absolutely necessary to remove IIRC, without the shortening, using ITs out of the box without wildcard certificates would not work, while with the shortened URL, the admin would only have to setup wildcard certs if they are launching over 100 interactive tools per week. On the Galaxy side, this is especially relevant for the AnVIL, as the progress to ITs working there would be going backwards from previous work if this is removed. So, given that there are some possible negative implications, what are the advantages of removing the feature as opposed to just turning it off when one doesn't need it? |
Perhaps I have misunderstood something or perhaps I was unclear in my description. So if the PR is merged, all subdomains should now be more or less the same length as if |
I was not aware that it was possible to use ITs out of the box without wildcard certificates at all? And where does that 100 per week limit come from? Can you enlighten me? |
Btw, @almahmoud, I am trying to push for, build towards path-based support for all ITs, which will end the wildcard tyranny once and for all! See: https://f1000research.com/slides/12-1163 The general shortening of the URL is really only a side-thing here. That came about mainly from nuisiance ("why are the full urls so ridiculously long?") and also due to a general wish to simplify the code a bit by removing what I believe is the now unnecessary |
…olumns to 'interactivetool_entry_point' table and as attribute to entry points
… to entry points for tools. Sendoff to gx-it-proxy. Cleanup
…. Have also wasted time earlier due to this
…ivetools_map" config in gx-it-proxy and gravity
…x-it-proxy updates
b79c1ab
to
499c122
Compare
I have now rebased the code on top of latest dev. Dependent PRs galaxyproject/gx-it-proxy#17 and galaxyproject/gravity#114 have both been merged. Checks seems to be successful (2 still running as I write this). So everything should be in order for a potential merge. @mvdbeek? |
Co-authored-by: Marius van den Beek <[email protected]>
Thanks a lot @sveinugu! |
This PR was merged without a "kind/" label, please correct. |
And thanks for the review and merge! Great to have this finalised! |
Congratulations @sveinugu this is so fantastic to see! |
Work on path-based interactive tools started with issue #14690 concluded. Latest additions:
requires_path_in_url
to signal to gx-it-proxy whether the path should be stripped from the URL (ifFalse
, which is default) or not stripped (ifTrue
)label
to better identify specific entry pointentry_point_path_for_label
requires_path_in_header named
to signal to gx-it-proxy that the entry point path should be added to the request as a HTTP header of the provided name (if set)interactivetools_shorten_url
, removing the need for this config (now removed). This has been implemented through:/access
part for path-based ITsep
instead ofinteractivetoolentrypoint
(only one class implemented anyway)[a-z][0-9]
instead of base16[a-f][0-9]
(hex)interactivetools_shorten_url
used hex-encoded entry point id (16 chars)+10 first chars of uuid = 26 chars. New base36-encoded identifier + token is 25-26 charsinteractivetools_shorten_url
already stripped.interactivetoolentrypoint
. Adding back.ep
adds 3 chars but brings consistency. If shorter URLs are needed for the kubernetes use case, the galaxy.yml configinteractivetools_prefix="interactivetool"
can be shortened. @almahmoud looks ok?https://24q1dbzrknq1v-1a1p13jnahscj.ep.interactivetool.myserver.net/
https://myserver.net/interactivetool/ep/24q1dbzrknq1v/1a1p13jnahscj/
jupyter_notebook_1.0.0
) is now a path-based IT using entry point path injection into environment variableguacamole_desktop
) are now path-based ITs without path injection (as they only use relative links)galaxy.yml.sample
,galaxy.yml.sample.interactivetools
andtool_conf.xml.sample
GALAXY_WEB_PORT
fromgalaxy_infrastructure_web_port
instead of hardcoding to8080
(all ITs)job_conf.yml.interactivetool
job_conf.yml.interactivetool.podman
to document a working config to run ITs on Podman (@hexylena)galaxy.yml.sample
oninteractivetools_map
gravity
v1.0.4 (PR: Minimal path change needed for galaxy PR 16795 gravity#114) , which again depends ongx-it-proxy
version 0.0.6 (PR: Added support for requires_path_in_url and requires_path_in_header_named gx-it-proxy#17)Much details in a single PR here, but did not want to spend even more time on individual PRs.
FIxes #14690
Thanks to @morj-uio, @hexylena and @natefoo for help!
How to test the changes?
(Select all options that apply)
License