From 362b58ba19b15cbc7c4e2404a854652ee75109c4 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Mon, 24 Mar 2025 14:45:30 +0100 Subject: [PATCH 01/26] add deployment docker compose file --- docker-compose-deploy.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 docker-compose-deploy.yml diff --git a/docker-compose-deploy.yml b/docker-compose-deploy.yml new file mode 100644 index 00000000..1c64ebdc --- /dev/null +++ b/docker-compose-deploy.yml @@ -0,0 +1,19 @@ +version: "3.8" + +services: + redis: + image: redis:alpine + container_name: redis + + backend: + container_name: backend + build: + context: ./backend + env_file: + - ./.env + ports: + - 8000:8000 + environment: + - CELERY_BROKER_URL=redis://redis:6379/0 + - CACHE_URL=redis://redis:6379/0 + restart: always From a90a9b5050cb6c66b20e3a4d7ac4bbe253546dab Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Mon, 24 Mar 2025 20:14:46 +0100 Subject: [PATCH 02/26] make migrations --- .../0015_alter_surveyresponse_options.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 backend/integraflow/survey/migrations/0015_alter_surveyresponse_options.py diff --git a/backend/integraflow/survey/migrations/0015_alter_surveyresponse_options.py b/backend/integraflow/survey/migrations/0015_alter_surveyresponse_options.py new file mode 100644 index 00000000..c5b3cf8c --- /dev/null +++ b/backend/integraflow/survey/migrations/0015_alter_surveyresponse_options.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.23 on 2025-03-24 19:13 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('survey', '0014_auto_20240511_2019'), + ] + + operations = [ + migrations.AlterModelOptions( + name='surveyresponse', + options={'ordering': ['-created_at'], 'verbose_name': 'SurveyResponse', 'verbose_name_plural': 'SurveyResponses'}, + ), + ] From 7f3e6b64d9705c364d22f9749a425f9ae24a5783 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:11:25 +0100 Subject: [PATCH 03/26] add fly.toml --- fly.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 fly.toml diff --git a/fly.toml b/fly.toml new file mode 100644 index 00000000..b1c57580 --- /dev/null +++ b/fly.toml @@ -0,0 +1,2 @@ +[build] + dockerfile = "backend/Dockerfile" From 4b6a398a74b83a9f3fe261bc8e5bdb18410edcb8 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:21:31 +0100 Subject: [PATCH 04/26] update flyio config --- fly.toml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/fly.toml b/fly.toml index b1c57580..90ca9098 100644 --- a/fly.toml +++ b/fly.toml @@ -1,2 +1,15 @@ + +app = "your-app-name" +primary_region = "iad" # Change this to your preferred Fly.io region + [build] - dockerfile = "backend/Dockerfile" + image = "" # Leave empty to use Docker Compose + +[deploy] + strategy = "rolling" + +[experimental] + cmd = ["docker", "compose", "up"] + +[processes] + app = "docker compose up" From 0be69b54b8a2dc261a10124289f0a4c7d9c6405b Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:24:18 +0100 Subject: [PATCH 05/26] update flyio config --- fly.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fly.toml b/fly.toml index 90ca9098..98a3b310 100644 --- a/fly.toml +++ b/fly.toml @@ -3,7 +3,7 @@ app = "your-app-name" primary_region = "iad" # Change this to your preferred Fly.io region [build] - image = "" # Leave empty to use Docker Compose + dockerfile = "/backend/Dockerfile" [deploy] strategy = "rolling" From fc1c95521adbb89fc031ba730294e0c28bbad7c0 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:31:36 +0100 Subject: [PATCH 06/26] update deployment config --- docker-compose-deploy.yml | 2 -- fly.toml | 7 ++++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docker-compose-deploy.yml b/docker-compose-deploy.yml index 1c64ebdc..dd76d1b8 100644 --- a/docker-compose-deploy.yml +++ b/docker-compose-deploy.yml @@ -9,8 +9,6 @@ services: container_name: backend build: context: ./backend - env_file: - - ./.env ports: - 8000:8000 environment: diff --git a/fly.toml b/fly.toml index 98a3b310..fc39fb29 100644 --- a/fly.toml +++ b/fly.toml @@ -3,13 +3,14 @@ app = "your-app-name" primary_region = "iad" # Change this to your preferred Fly.io region [build] - dockerfile = "/backend/Dockerfile" + dockerfile = "backend/Dockerfile" + build-target = "backend" [deploy] strategy = "rolling" [experimental] - cmd = ["docker", "compose", "up"] + cmd = ["docker", "compose", "-f", "docker-compose-deploy.yml", "up"] [processes] - app = "docker compose up" + app = "docker compose -f docker-compose-deploy.yml up" From 66f7a93cdc6ac5ab6c2348096ec97201a86c3f06 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:33:52 +0100 Subject: [PATCH 07/26] update flyio config --- fly.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fly.toml b/fly.toml index fc39fb29..51346572 100644 --- a/fly.toml +++ b/fly.toml @@ -3,8 +3,8 @@ app = "your-app-name" primary_region = "iad" # Change this to your preferred Fly.io region [build] - dockerfile = "backend/Dockerfile" - build-target = "backend" + dockerfile = "/backend/Dockerfile" + build-target = "/backend/" [deploy] strategy = "rolling" From 6b183b7191afa9b2e2d6483d9813dc584889ca63 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:38:32 +0100 Subject: [PATCH 08/26] update flyio config --- fly.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fly.toml b/fly.toml index 51346572..ce121c3f 100644 --- a/fly.toml +++ b/fly.toml @@ -4,7 +4,7 @@ primary_region = "iad" # Change this to your preferred Fly.io region [build] dockerfile = "/backend/Dockerfile" - build-target = "/backend/" + ignorefile = "/backend/.dockerignore" [deploy] strategy = "rolling" From c2d14deeba043ef535a72c1024f640719e0e3da2 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:42:18 +0100 Subject: [PATCH 09/26] update flyio config --- fly.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fly.toml b/fly.toml index ce121c3f..a7d7bea0 100644 --- a/fly.toml +++ b/fly.toml @@ -3,8 +3,8 @@ app = "your-app-name" primary_region = "iad" # Change this to your preferred Fly.io region [build] - dockerfile = "/backend/Dockerfile" - ignorefile = "/backend/.dockerignore" + dockerfile = "backend/Dockerfile" + ignorefile = "backend/.dockerignore" [deploy] strategy = "rolling" From a39d3e3f0c12e2cf5571063041ca2c064fb182e9 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:45:06 +0100 Subject: [PATCH 10/26] update flyio config to specify build target --- fly.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/fly.toml b/fly.toml index a7d7bea0..b67d2a00 100644 --- a/fly.toml +++ b/fly.toml @@ -5,6 +5,7 @@ primary_region = "iad" # Change this to your preferred Fly.io region [build] dockerfile = "backend/Dockerfile" ignorefile = "backend/.dockerignore" + build-target = "backend" [deploy] strategy = "rolling" From 327713b35595d7d415cb5abce4d4a4d44ac5ae8c Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:48:35 +0100 Subject: [PATCH 11/26] replace fly.toml with a simplified configuration for Fly.io deployment --- backend/fly.toml | 6 ++++++ fly.toml | 17 ----------------- 2 files changed, 6 insertions(+), 17 deletions(-) create mode 100644 backend/fly.toml delete mode 100644 fly.toml diff --git a/backend/fly.toml b/backend/fly.toml new file mode 100644 index 00000000..d3cd4b7e --- /dev/null +++ b/backend/fly.toml @@ -0,0 +1,6 @@ + +app = "your-app-name" +primary_region = "iad" # Change this to your preferred Fly.io region + +[build] + dockerfile = "Dockerfile" diff --git a/fly.toml b/fly.toml deleted file mode 100644 index b67d2a00..00000000 --- a/fly.toml +++ /dev/null @@ -1,17 +0,0 @@ - -app = "your-app-name" -primary_region = "iad" # Change this to your preferred Fly.io region - -[build] - dockerfile = "backend/Dockerfile" - ignorefile = "backend/.dockerignore" - build-target = "backend" - -[deploy] - strategy = "rolling" - -[experimental] - cmd = ["docker", "compose", "-f", "docker-compose-deploy.yml", "up"] - -[processes] - app = "docker compose -f docker-compose-deploy.yml up" From 7a5be65386c8bc9fc60af8142b22c9afc458d4fd Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 20:55:50 +0100 Subject: [PATCH 12/26] update Dockerfile to install specific setuptools version and switch to pip for dependencies --- backend/Dockerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 5b93d9da..792159fb 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -23,16 +23,15 @@ RUN apt-get clean && rm -rf /var/lib/apt/lists/* RUN pip install --upgrade pip -RUN pip install poetry +# Install setuptools==68.2.2 to avoid the following error: +# ERROR: setuptools==58.1.0 is used in combination with setuptools-scm>=8.x +RUN pip install setuptools==68.2.2 WORKDIR /backend COPY requirements.txt requirements.txt -COPY requirements_dev.txt requirements_dev.txt -COPY poetry.lock poetry.lock -COPY pyproject.toml pyproject.toml -RUN poetry install --no-interaction +RUN pip install -r requirements.txt COPY . . From c1dc3514a4c323288fe28a0ba2fdd4e853b310f2 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 21:16:09 +0100 Subject: [PATCH 13/26] update Fly.io configuration for integraflow-backend and adjust Gunicorn worker settings --- backend/fly.toml | 9 +++++++-- backend/supervisord.conf | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/fly.toml b/backend/fly.toml index d3cd4b7e..af279332 100644 --- a/backend/fly.toml +++ b/backend/fly.toml @@ -1,6 +1,11 @@ -app = "your-app-name" -primary_region = "iad" # Change this to your preferred Fly.io region +app = "integraflow-backend" +primary_region = "fra" +swap_size_mb = 512 [build] dockerfile = "Dockerfile" + +[[vm]] + size = "shared-cpu-2x" + memory = "512mb" diff --git a/backend/supervisord.conf b/backend/supervisord.conf index cb3f230e..aca7899d 100644 --- a/backend/supervisord.conf +++ b/backend/supervisord.conf @@ -10,7 +10,7 @@ stdout_logfile_maxbytes=0 redirect_stderr=true [program:django] -command=gunicorn --bind :8000 --workers 8 --worker-class integraflow.asgi.gunicorn_worker.UvicornWorker integraflow.asgi:application +command=gunicorn --bind :8000 --workers 4 --worker-class integraflow.asgi.gunicorn_worker.UvicornWorker integraflow.asgi:application stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true From e2c5506f02569179b780ab62303e2d358b90e2ac Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 23:22:32 +0100 Subject: [PATCH 14/26] add base64 decoding support in JWTManager and utility function for validation --- backend/integraflow/core/jwt_manager.py | 8 ++++++-- backend/integraflow/core/utils/__init__.py | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/backend/integraflow/core/jwt_manager.py b/backend/integraflow/core/jwt_manager.py index aa3ddd73..c70292ad 100644 --- a/backend/integraflow/core/jwt_manager.py +++ b/backend/integraflow/core/jwt_manager.py @@ -1,3 +1,4 @@ +import base64 import json import logging from os.path import exists, join @@ -15,7 +16,7 @@ from jwt import api_jws from jwt.algorithms import RSAAlgorithm -from .utils import build_absolute_uri, get_domain +from .utils import build_absolute_uri, get_domain, is_base_64 logger = logging.getLogger(__name__) @@ -92,7 +93,10 @@ def get_private_key(cls) -> rsa.RSAPrivateKey: @classmethod def _get_private_key(cls, pem: Union[str, bytes]) -> rsa.RSAPrivateKey: if isinstance(pem, str): - pem = pem.encode("utf-8") + if is_base_64(pem): + pem = base64.b64decode(pem) + else: + pem = pem.encode("utf-8") password: Union[str, bytes, None] = settings.RSA_PRIVATE_PASSWORD if isinstance(password, str): diff --git a/backend/integraflow/core/utils/__init__.py b/backend/integraflow/core/utils/__init__.py index 7e4d033e..8b4dce36 100644 --- a/backend/integraflow/core/utils/__init__.py +++ b/backend/integraflow/core/utils/__init__.py @@ -1,8 +1,9 @@ +import base64 +import binascii import datetime import secrets import socket import string -import pytz from random import choice from typing import ( TYPE_CHECKING, @@ -12,10 +13,11 @@ Optional, Tuple, TypeVar, - Union + Union, ) from urllib.parse import urljoin, urlparse +import pytz from celery.utils.log import get_task_logger from django.conf import settings from django.db import IntegrityError, transaction @@ -382,3 +384,11 @@ def __eq__(self, other): self.name == other.name and self.expression == other.expression ) return super().__eq__(other) + + +def is_base_64(text: str): + try: + base64.b64decode(text, validate=True) + return True + except binascii.Error: + return False From 6221364c28bbbced7cdfb43bf2cd5b58caac9269 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Tue, 25 Mar 2025 23:46:42 +0100 Subject: [PATCH 15/26] reduce Gunicorn worker count from 4 to 2 in supervisord configuration --- backend/supervisord.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/supervisord.conf b/backend/supervisord.conf index aca7899d..ee8196d0 100644 --- a/backend/supervisord.conf +++ b/backend/supervisord.conf @@ -10,7 +10,7 @@ stdout_logfile_maxbytes=0 redirect_stderr=true [program:django] -command=gunicorn --bind :8000 --workers 4 --worker-class integraflow.asgi.gunicorn_worker.UvicornWorker integraflow.asgi:application +command=gunicorn --bind :8000 --workers 2 --worker-class integraflow.asgi.gunicorn_worker.UvicornWorker integraflow.asgi:application stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true From f607e54fa10a111c6816cf255e2b6460b680cf11 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 00:22:56 +0100 Subject: [PATCH 16/26] add debug print statement for decoded PEM in JWTManager --- backend/integraflow/core/jwt_manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/integraflow/core/jwt_manager.py b/backend/integraflow/core/jwt_manager.py index c70292ad..cdfe31fb 100644 --- a/backend/integraflow/core/jwt_manager.py +++ b/backend/integraflow/core/jwt_manager.py @@ -98,6 +98,8 @@ def _get_private_key(cls, pem: Union[str, bytes]) -> rsa.RSAPrivateKey: else: pem = pem.encode("utf-8") + print("decoded: ", pem) + password: Union[str, bytes, None] = settings.RSA_PRIVATE_PASSWORD if isinstance(password, str): password = password.encode("utf-8") From 858323b8b4c3b15a76c2dbca766ddb4539affc84 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 00:41:30 +0100 Subject: [PATCH 17/26] update Fly.io configuration to include internal port and force HTTPS; remove debug print statement in JWTManager --- backend/fly.toml | 4 ++++ backend/integraflow/core/jwt_manager.py | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/fly.toml b/backend/fly.toml index af279332..9fe69579 100644 --- a/backend/fly.toml +++ b/backend/fly.toml @@ -9,3 +9,7 @@ swap_size_mb = 512 [[vm]] size = "shared-cpu-2x" memory = "512mb" + +[http_service] + internal_port = 8000 + force_https = true diff --git a/backend/integraflow/core/jwt_manager.py b/backend/integraflow/core/jwt_manager.py index cdfe31fb..c70292ad 100644 --- a/backend/integraflow/core/jwt_manager.py +++ b/backend/integraflow/core/jwt_manager.py @@ -98,8 +98,6 @@ def _get_private_key(cls, pem: Union[str, bytes]) -> rsa.RSAPrivateKey: else: pem = pem.encode("utf-8") - print("decoded: ", pem) - password: Union[str, bytes, None] = settings.RSA_PRIVATE_PASSWORD if isinstance(password, str): password = password.encode("utf-8") From 13e806a572c989e3b8d32ef03afe828392646c83 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 00:47:49 +0100 Subject: [PATCH 18/26] remove HTTP service configuration from Fly.io settings --- backend/fly.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/backend/fly.toml b/backend/fly.toml index 9fe69579..af279332 100644 --- a/backend/fly.toml +++ b/backend/fly.toml @@ -9,7 +9,3 @@ swap_size_mb = 512 [[vm]] size = "shared-cpu-2x" memory = "512mb" - -[http_service] - internal_port = 8000 - force_https = true From de01e2ebd201824e474c9a7c4cf01dbe2d83df3a Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 00:58:56 +0100 Subject: [PATCH 19/26] update Fly.io configuration to define internal port and set up HTTP and TLS handlers --- backend/fly.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/backend/fly.toml b/backend/fly.toml index af279332..79332cfe 100644 --- a/backend/fly.toml +++ b/backend/fly.toml @@ -9,3 +9,15 @@ swap_size_mb = 512 [[vm]] size = "shared-cpu-2x" memory = "512mb" + +[[services]] + internal_port = 8000 # Match this to the port your app runs on inside the container + protocol = "tcp" + + [[services.ports]] + handlers = ["http"] + port = 80 + + [[services.ports]] + handlers = ["tls"] + port = 443 From 4e09abbbc5828f0a068ef6b996137b7bb47b3dff Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 01:11:15 +0100 Subject: [PATCH 20/26] expose port 8000 in Dockerfile for application access --- backend/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/Dockerfile b/backend/Dockerfile index 792159fb..5a7f515d 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -37,4 +37,6 @@ COPY . . COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +EXPOSE 8000 + CMD ["/usr/bin/supervisord"] From d288a8d7b12b15ce3e116e06a01a55cb5b0cd8b2 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 08:49:30 +0100 Subject: [PATCH 21/26] refactor Fly.io configuration to use [http_service] section and enforce HTTPS --- backend/fly.toml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/backend/fly.toml b/backend/fly.toml index 79332cfe..dd995236 100644 --- a/backend/fly.toml +++ b/backend/fly.toml @@ -10,14 +10,9 @@ swap_size_mb = 512 size = "shared-cpu-2x" memory = "512mb" -[[services]] - internal_port = 8000 # Match this to the port your app runs on inside the container - protocol = "tcp" - - [[services.ports]] - handlers = ["http"] - port = 80 - - [[services.ports]] - handlers = ["tls"] - port = 443 +[http_service] + internal_port = 8000 + force_https = true + auto_stop_machines = "stop" + auto_start_machines = true + min_machines_running = 1 From 2b2c5c631cf06e3d137de296ab8989e5caf54916 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 09:48:30 +0100 Subject: [PATCH 22/26] refactor GoogleUserAuth to use client configuration instead of secrets file --- .../graphql/user/mutations/authentication/google_user_auth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py b/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py index e4875cf4..cb46999d 100644 --- a/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py +++ b/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py @@ -67,7 +67,7 @@ class Meta: @classmethod def _get_credentials(cls, code: str) -> Dict[str, str]: try: - flow = Flow.from_client_secrets_file( + flow = Flow.from_client_config( GOOGLE_AUTH_CLIENT_CREDENTIALS, scopes=[ "https://www.googleapis.com/auth/userinfo.profile", From 7fdd3194369b1a39d91c2d808639eced3bd4e7d3 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 10:04:14 +0100 Subject: [PATCH 23/26] refactor GoogleUserAuth to load client credentials from JSON --- .../graphql/user/mutations/authentication/google_user_auth.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py b/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py index cb46999d..1024c0d9 100644 --- a/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py +++ b/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py @@ -1,3 +1,4 @@ +import json from typing import Dict, cast import graphene @@ -68,7 +69,7 @@ class Meta: def _get_credentials(cls, code: str) -> Dict[str, str]: try: flow = Flow.from_client_config( - GOOGLE_AUTH_CLIENT_CREDENTIALS, + json.loads(GOOGLE_AUTH_CLIENT_CREDENTIALS), scopes=[ "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", From 4e55a864d23d780cccf06ca3447b401b1254d329 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 26 Mar 2025 10:16:36 +0100 Subject: [PATCH 24/26] remove unused docker-compose-deploy.yml file --- docker-compose-deploy.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 docker-compose-deploy.yml diff --git a/docker-compose-deploy.yml b/docker-compose-deploy.yml deleted file mode 100644 index dd76d1b8..00000000 --- a/docker-compose-deploy.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: "3.8" - -services: - redis: - image: redis:alpine - container_name: redis - - backend: - container_name: backend - build: - context: ./backend - ports: - - 8000:8000 - environment: - - CELERY_BROKER_URL=redis://redis:6379/0 - - CACHE_URL=redis://redis:6379/0 - restart: always From c1bc0124b967bb4067384ec86f1845cb83aa3b42 Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Fri, 28 Mar 2025 12:51:13 +0100 Subject: [PATCH 25/26] add logging for error handling in GoogleUserAuth --- .../user/mutations/authentication/google_user_auth.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py b/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py index 1024c0d9..f0793b3c 100644 --- a/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py +++ b/backend/integraflow/graphql/user/mutations/authentication/google_user_auth.py @@ -1,4 +1,5 @@ import json +import logging from typing import Dict, cast import graphene @@ -21,6 +22,8 @@ GOOGLE_AUTH_CLIENT_CREDENTIALS = settings.GOOGLE_AUTH_CLIENT_CREDENTIALS +logger = logging.getLogger(__name__) + class GoogleUserAuth(BaseMutation): """ @@ -84,7 +87,9 @@ def _get_credentials(cls, code: str) -> Dict[str, str]: clock_skew_in_seconds=10 ) return credentials # type: ignore - except Exception: + except Exception as err: + logger.exception(f"Google auth error: {err}") + raise ValidationError( "Failed to fetch user info from google auth.", ) From 2aad5892e788a02fd78f17c8dded409b4809c52f Mon Sep 17 00:00:00 2001 From: Afeez G Lawal Date: Wed, 2 Apr 2025 15:10:39 +0100 Subject: [PATCH 26/26] enable jobs for celery --- backend/supervisord.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/supervisord.conf b/backend/supervisord.conf index ee8196d0..57037965 100644 --- a/backend/supervisord.conf +++ b/backend/supervisord.conf @@ -16,7 +16,7 @@ stdout_logfile_maxbytes=0 redirect_stderr=true [program:celery] -command=celery -A integraflow worker --loglevel=info +command=celery -A integraflow worker --loglevel=info --beat stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true