opendatahub-io-contrib / jupyterhub-odh

Example JupyterHub deployment using OpenShift OAuth authenticator.
16 stars 31 forks source link

Notebook Imagestream without tags breaks JupyterHub spawner #112

Open tumido opened 3 years ago

tumido commented 3 years ago

Describe the bug Creating a blank imagestream without any tags in it makes Jupyterhun spawner

To Reproduce Steps to reproduce the behavior:

  1. Submit an imagestream manifest
  2. Open JH spawner
  3. See that no images are found

Expected behavior Imagestream is skipped

Screenshots

kind: ImageStream
apiVersion: image.openshift.io/v1
metadata:
  annotations:
    opendatahub.io/notebook-image-name: test
    opendatahub.io/notebook-image-url: test
  name: test
  labels:
    opendatahub.io/notebook-image: 'true'
spec:
  lookupPolicy:
    local: true

Produces: image

Deleting the imagestream restores correct behavior.

Additional context n/a

anishasthana commented 3 years ago

cc @maroroman @jeff-phillips-18

rmkraus commented 3 years ago

From the Spawner logs:

[E 2021-09-13 15:42:43.055 JupyterHub log:189] 500 GET /hub/spawn (kube:admin@::ffff:10.128.0.1) 322.92ms
[E 2021-09-13 15:42:44.187 JupyterHub web:1793] Uncaught exception GET /hub/spawn (::ffff:10.128.0.1)
    HTTPServerRequest(protocol='http', host='jupyterhub-traffic-patterns.apps.beacon01.faros.site', method='GET', uri='/hub/spawn', version='HTTP/1.1', remote_ip='::ffff:10.128.0.1')
    Traceback (most recent call last):
      File "/opt/app-root/lib/python3.6/site-packages/tornado/web.py", line 1704, in _execute
        result = await result
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub/handlers/pages.py", line 155, in get
        spawner = user.spawners[server_name]
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub/user.py", line 186, in __getitem__
        self[key] = self.spawner_factory(key)
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub/user.py", line 361, in _new_spawner
        spawner = spawner_class(**spawn_kwargs)
      File "/opt/app-root/src/.jupyter/jupyterhub_config.py", line 225, in __init__
        self.single_user_profiles = SingleuserProfiles(gpu_mode=os.environ.get('GPU_MODE'), verify_ssl=verify_ssl)
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub_singleuser_profiles/profiles.py", line 38, in __init__
        self.user = User(self.openshift, default_image=self.images.get_default())
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub_singleuser_profiles/images.py", line 43, in get_default
        image_list = self.load()
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub_singleuser_profiles/images.py", line 70, in load
        if not self.tag_exists(tag.name, i):
      File "/opt/app-root/lib/python3.6/site-packages/jupyterhub_singleuser_profiles/images.py", line 52, in tag_exists
        for tag in imagestream.status.tags:
    TypeError: 'NoneType' object is not iterable

This is particularly an issue when defining new Build Configs as the spawner is unusable until there is at least on successful build.

maroroman commented 3 years ago

Created a jira issue to track this: https://issues.redhat.com/browse/ODH-477