Comments (6)
Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! 🤗
If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively.
You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! 👋
Welcome to the Jupyter community! 🎉
from kubespawner.
This currently bites me too on trying to upgrade from z2jh 2 to z2jh 3...
Maybe a possible workaround would be to use a Spawner.pre_spawn_hook
!?
from kubespawner.
Although from reading the code, I can not figure out why it does not work in the first place (i.e. why is https://github.com/jupyterhub/jupyterhub/blob/ca6032381aa137f03cb9349265fa74ed5e4c5c19/jupyterhub/spawner.py#L1101 apparently not relevant?)...
from kubespawner.
KubeSpawner calls the parent function to evaluate callables as you've pointed out:
kubespawner/kubespawner/spawner.py
Line 2161 in f99b98f
but in addition it adds template expansion of values, which is causing the problem:
kubespawner/kubespawner/spawner.py
Line 2169 in f99b98f
I think the correct fix is to only expand non-callable values (since if you're using a callable you most likely don't want the result to be interpreted as a template).
from kubespawner.
@manics I still don't get why the template expansion should cause this - it should ignore anything that is not list, dict or str, shouldn't it?
from kubespawner.
I really appreciate this issue writeup @PerilousApricot - thank you! My favorite part is the inclusion of the docs reference that makes it definite its a bug in the project!
And, according to the docs, this should be supported:
The environment configurable should be set by JupyterHub administrators to add installation specific environment variables. It is a dict where the key is the name of the environment variable, and the value can be a string or a callable. If it is a callable, it will be called with one parameter (the spawner instance), and should return a string fairly quickly (no blocking operations please!).
Thank you @manics for the fix and thank you @jabbera and @moschlar for reporting on this as well!
from kubespawner.
Related Issues (20)
- kubespawner removes doubledash("--") from extra_containers command arguments HOT 2
- Release planning for 6.1.0 HOT 9
- [Bug] Setting `unlisted_choice` a second time has no effect HOT 3
- Refactor out profile_list related logic from spawner.py HOT 1
- Add a tutorial "Exposing server options with profile_list" to docs
- Servers being reported as down after hub restart that are not HOT 1
- KubeSpawner `latest` docs is missing some traitlets help HOT 4
- Doc blocks contain dead links to kubernetes API v1.20 HOT 3
- Kill k8s pods earlier when specific errors appear HOT 4
- Object has no attribute 'cancel' - a secondary error when handling a timeout error HOT 5
- certificate verify failed: self signed certificate HOT 4
- Options independent of any profile HOT 4
- Kubespawner fails to create service when internal_ssl is activated because of the metadata HOT 1
- KubeSpawner does not respect uid for mounts HOT 1
- Test failures in main branch HOT 1
- Broken Links to Kubernetes-docs in main README HOT 1
- c.KubeSpawner.environment not interpreting callables HOT 2
- JupyterHub Singleuser Port Routing Issue After Restart HOT 3
- Standalone Pods found when Hub pod restart HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kubespawner.