Skip to content

Commit f221168

Browse files
authored
fix: patch session with fresh image secret (#851)
* Ensure the secret is created in the cluster
1 parent 99527a2 commit f221168

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

components/renku_data_services/notebooks/core_sessions.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -546,10 +546,12 @@ async def patch_session(
546546
if extra_containers:
547547
patch.spec.extraContainers = extra_containers
548548

549+
# Patching the image pull secret
549550
if isinstance(user, AuthenticatedAPIUser) and internal_gitlab_user.access_token is not None:
550551
image = session.spec.session.image
551552
server_name = session.metadata.name
552553
needs_pull_secret = await requires_image_pull_secret(nb_config, image, internal_gitlab_user)
554+
logger.info(f"Session with ID {session_id} needs pull secret for image {image}: {needs_pull_secret}")
553555

554556
if needs_pull_secret:
555557
image_pull_secret_name = f"{server_name}-image-secret"
@@ -558,14 +560,22 @@ async def patch_session(
558560
image_secret = get_gitlab_image_pull_secret(
559561
nb_config, user, image_pull_secret_name, internal_gitlab_user.access_token
560562
)
561-
if image_secret:
562-
updated_secrets = [
563-
secret
564-
for secret in (session.spec.imagePullSecrets or [])
565-
if not secret.name.endswith("-image-secret")
566-
]
567-
updated_secrets.append(ImagePullSecret(name=image_pull_secret_name, adopt=True))
568-
patch.spec.imagePullSecrets = updated_secrets
563+
564+
if not image_secret:
565+
logger.error(f"Failed to create image pull secret for session ID {session_id} with image {image}")
566+
raise errors.ProgrammingError(
567+
message=f"We cannot retrive credentials for your private image {image}. "
568+
"In order to resolve this problem, you can try to log out and back in "
569+
"and/or check that you still have permissions for the image repository."
570+
)
571+
# Ensure the secret is created in the cluster
572+
await nb_config.k8s_v2_client.create_secret(image_secret.secret)
573+
574+
updated_secrets = [
575+
secret for secret in (session.spec.imagePullSecrets or []) if not secret.name.endswith("-image-secret")
576+
]
577+
updated_secrets.append(ImagePullSecret(name=image_pull_secret_name, adopt=True))
578+
patch.spec.imagePullSecrets = updated_secrets
569579

570580
patch_serialized = patch.to_rfc7386()
571581
if len(patch_serialized) == 0:

0 commit comments

Comments
 (0)