Improve registry validation (#1429)

* Allow that a provider can upload its function without a registry

* Simplified mock setting
This commit is contained in:
David 2024-08-01 16:13:52 -04:00 committed by GitHub
parent 0a0b645683
commit 65cda73b6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 6 additions and 7 deletions

View File

@ -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

View File

@ -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

View File

@ -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(

View File

@ -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
)
# =============