From c10808b611503204a3581a565f228855875f9ea6 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Sun, 15 Dec 2024 18:31:43 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(backend)=20generalize=20YPro?= =?UTF-8?q?vider=20API=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Abstracted base URL and API key under 'y-provider' for reuse in future endpoints, aligning with microservice naming. Please note the YProvider API here is internal to the cluster. In facts, we don't want these endpoints to be exposed by any ingress --- .../core/services/converter_services.py | 4 ++-- .../tests/test_services_converter_services.py | 9 +++++---- src/backend/impress/settings.py | 18 +++++++++++++----- src/helm/env.d/dev/values.impress.yaml.gotmpl | 4 ++-- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/backend/core/services/converter_services.py b/src/backend/core/services/converter_services.py index 89f47e65..d140d10f 100644 --- a/src/backend/core/services/converter_services.py +++ b/src/backend/core/services/converter_services.py @@ -31,7 +31,7 @@ class YdocConverter: @property def auth_header(self): """Build microservice authentication header.""" - return settings.CONVERSION_API_KEY + return settings.Y_PROVIDER_API_KEY def convert_markdown(self, text): """Convert a Markdown text into our internal format using an external microservice.""" @@ -41,7 +41,7 @@ class YdocConverter: try: response = requests.post( - settings.CONVERSION_API_URL, + f"{settings.Y_PROVIDER_API_BASE_URL}{settings.CONVERSION_API_ENDPOINT}/", json={ "content": text, }, diff --git a/src/backend/core/tests/test_services_converter_services.py b/src/backend/core/tests/test_services_converter_services.py index 7911e368..d65beed6 100644 --- a/src/backend/core/tests/test_services_converter_services.py +++ b/src/backend/core/tests/test_services_converter_services.py @@ -16,7 +16,7 @@ from core.services.converter_services import ( def test_auth_header(settings): """Test authentication header generation.""" - settings.CONVERSION_API_KEY = "test-key" + settings.Y_PROVIDER_API_KEY = "test-key" converter = YdocConverter() assert converter.auth_header == "test-key" @@ -97,8 +97,9 @@ def test_convert_markdown_missing_content_field(mock_post, settings): def test_convert_markdown_full_integration(mock_post, settings): """Test full integration with all settings.""" - settings.CONVERSION_API_URL = "http://test.com" - settings.CONVERSION_API_KEY = "test-key" + settings.Y_PROVIDER_API_BASE_URL = "http://test.com/" + settings.Y_PROVIDER_API_KEY = "test-key" + settings.CONVERSION_API_ENDPOINT = "conversion-endpoint" settings.CONVERSION_API_TIMEOUT = 5 settings.CONVERSION_API_CONTENT_FIELD = "content" @@ -113,7 +114,7 @@ def test_convert_markdown_full_integration(mock_post, settings): assert result == expected_content mock_post.assert_called_once_with( - "http://test.com", + "http://test.com/conversion-endpoint/", json={"content": "test markdown"}, headers={ "Authorization": "test-key", diff --git a/src/backend/impress/settings.py b/src/backend/impress/settings.py index e403b148..b5789dc8 100755 --- a/src/backend/impress/settings.py +++ b/src/backend/impress/settings.py @@ -505,13 +505,21 @@ class Base(Configuration): "day": 200, } - # Conversion microservice - CONVERSION_API_KEY = values.Value( - environ_name="CONVERSION_API_KEY", + # Y provider microservice + # Note: Be careful, this value is currently the same as in the collaboration service. + Y_PROVIDER_API_KEY = values.Value( + environ_name="Y_PROVIDER_API_KEY", environ_prefix=None, ) - CONVERSION_API_URL = values.Value( - environ_name="CONVERSION_API_URL", + Y_PROVIDER_API_BASE_URL = values.Value( + environ_name="Y_PROVIDER_API_BASE_URL", + environ_prefix=None, + ) + + # Conversion endpoint + CONVERSION_API_ENDPOINT = values.Value( + default="convert-markdown", + environ_name="CONVERSION_API_ENDPOINT", environ_prefix=None, ) CONVERSION_API_CONTENT_FIELD = values.Value( diff --git a/src/helm/env.d/dev/values.impress.yaml.gotmpl b/src/helm/env.d/dev/values.impress.yaml.gotmpl index 650122da..d49cd4a6 100644 --- a/src/helm/env.d/dev/values.impress.yaml.gotmpl +++ b/src/helm/env.d/dev/values.impress.yaml.gotmpl @@ -51,8 +51,8 @@ backend: AWS_S3_SECRET_ACCESS_KEY: password AWS_STORAGE_BUCKET_NAME: impress-media-storage STORAGES_STATICFILES_BACKEND: django.contrib.staticfiles.storage.StaticFilesStorage - CONVERSION_API_URL: http://impress-y-provider:443/api/convert-markdown/ - CONVERSION_API_KEY: my-secret + Y_PROVIDER_API_BASE_URL: http://impress-y-provider:443/api/ + Y_PROVIDER_API_KEY: my-secret migrate: command: