From 65cda73b6a4f5ae6aec41be4d6bdfce873150e17 Mon Sep 17 00:00:00 2001 From: David <9059044+Tansito@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:13:52 -0400 Subject: [PATCH] Improve registry validation (#1429) * Allow that a provider can upload its function without a registry * Simplified mock setting --- docker-compose-dev.yaml | 1 - docker-compose.yaml | 1 - gateway/api/v1/serializers.py | 9 +++++---- gateway/main/settings.py | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index 5891ff70..cffe0f36 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -45,7 +45,6 @@ services: - DJANGO_SUPERUSER_EMAIL=admin@noemail.com - SITE_HOST=http://gateway:8000 - SETTINGS_AUTH_MECHANISM=mock_token - - SETTINGS_AUTH_MOCKPROVIDER_REGISTRY=test - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_NAME=serverlessdb diff --git a/docker-compose.yaml b/docker-compose.yaml index 01d8d9df..d22cf5db 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -39,7 +39,6 @@ services: - DJANGO_SUPERUSER_EMAIL=admin@noemail.com - SITE_HOST=http://gateway:8000 - SETTINGS_AUTH_MECHANISM=mock_token - - SETTINGS_AUTH_MOCKPROVIDER_REGISTRY=test - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_NAME=serverlessdb diff --git a/gateway/api/v1/serializers.py b/gateway/api/v1/serializers.py index 94aba809..ec123bb8 100644 --- a/gateway/api/v1/serializers.py +++ b/gateway/api/v1/serializers.py @@ -42,15 +42,18 @@ class UploadProgramSerializer(serializers.UploadProgramSerializer): raise ValidationError( "At least one of attributes (entrypoint, image) is required." ) + title = attrs.get("title") provider = attrs.get("provider", None) if provider and "/" in title: raise ValidationError("Provider defined in title and in provider fields.") + title_split = title.split("/") if len(title_split) > 2: raise ValidationError( "Qiskit Function title is malformed. It can only contain one slash." ) + if image is not None: if provider is None and len(title_split) != 2: raise ValidationError( @@ -60,10 +63,8 @@ class UploadProgramSerializer(serializers.UploadProgramSerializer): provider = title_split[0] provider_instance = Provider.objects.filter(name=provider).first() if provider_instance is None: - raise ValidationError( - "Custom images are only available a valid provider." - ) - if not provider_instance.registry or not image.startswith( + raise ValidationError(f"{provider} is not valid provider.") + if provider_instance.registry and not image.startswith( provider_instance.registry ): raise ValidationError( diff --git a/gateway/main/settings.py b/gateway/main/settings.py index 4218e260..dc89ecff 100644 --- a/gateway/main/settings.py +++ b/gateway/main/settings.py @@ -232,7 +232,7 @@ DJR_DEFAULT_AUTHENTICATION_CLASSES = ALL_AUTH_CLASSES_CONFIGURATION.get( # mock token value SETTINGS_AUTH_MOCK_TOKEN = os.environ.get("SETTINGS_AUTH_MOCK_TOKEN", "awesome_token") SETTINGS_AUTH_MOCKPROVIDER_REGISTRY = os.environ.get( - "SETTINGS_AUTH_MOCKPROVIDER_REGISTRY", "icr.io" + "SETTINGS_AUTH_MOCKPROVIDER_REGISTRY", None ) # =============