I’m trying to create a Kubernetes based JupyterHub instance and as part of this I need a selector before the notebook server is spawned to allow users to choose a particular notebook.
I used c.KubeSpawner.options_form to assign the form and I see it displayed as I would expect. What I don’t see, however, is the selected option in the function invoked by c.KubeSpawner.pre_spawn_hook
My form is as follows:
def _stack_selector_form(spawner):
return """
<label for="image">Select your desired stack</label>
<select name="image" size="1">
<option value="{0}" selected>Python</option>
<option value="{1}">R</option>
</select>
""".format(os.getenv('PYTHON_IMAGE'), os.getenv('R_IMAGE'))
c.KubeSpawner.options_form = _stack_selector_form
And my pre_spawn_hook is as follows:
def _select_image(spawner):
print("user_options: {}".format(spawner.user_options))
c.KubeSpawner.pre_spawn_hook = _select_image
The printed output for spawner.user_options
is user_options: {"profile": None}
. I am expecting a property labelled image
as well.
According to consideRatio this ordering should be fine so I’m at a loss as to what the issue is.
Providing a
pre_spawn_hook
function enables to take further actions based on the choice(s) made in theoptions_form
.
Am I missing something obivious?