From 38b64a40c6d068f7efe459fa9e7a75eee0211dc1 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Feb 2025 14:06:40 +0100 Subject: [PATCH] chore: add more versions to startup log Signed-off-by: Alex --- src/aap_eda/api/views/config.py | 4 ++-- src/aap_eda/settings/default.py | 2 +- src/aap_eda/utils/__init__.py | 8 ++++---- src/aap_eda/utils/logging.py | 16 ++++++++++++++-- tests/integration/api/test_config.py | 4 ++-- tests/unit/test_logging.py | 4 ++-- tests/unit/test_utils.py | 15 +++++++++++---- 7 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/aap_eda/api/views/config.py b/src/aap_eda/api/views/config.py index 1195a5705..dc9351de8 100644 --- a/src/aap_eda/api/views/config.py +++ b/src/aap_eda/api/views/config.py @@ -20,7 +20,7 @@ from rest_framework.views import APIView from aap_eda.api.serializers import ConfigSerializer -from aap_eda.utils import get_eda_version +from aap_eda.utils import get_package_version class ConfigView(APIView): @@ -38,7 +38,7 @@ class ConfigView(APIView): def get(self, request): data = { "time_zone": settings.TIME_ZONE, - "version": get_eda_version(), + "version": get_package_version("aap-eda"), "deployment_type": settings.DEPLOYMENT_TYPE, } diff --git a/src/aap_eda/settings/default.py b/src/aap_eda/settings/default.py index f2b25b828..d41c0c711 100644 --- a/src/aap_eda/settings/default.py +++ b/src/aap_eda/settings/default.py @@ -564,7 +564,7 @@ def get_rq_queues() -> dict: SPECTACULAR_SETTINGS = { "TITLE": "Event Driven Ansible API", - "VERSION": utils.get_eda_version(), + "VERSION": utils.get_package_version("aap-eda"), "SERVE_INCLUDE_SCHEMA": False, "SCHEMA_PATH_PREFIX": f"/{API_PREFIX}/v[0-9]", "SCHEMA_PATH_PREFIX_TRIM": True, diff --git a/src/aap_eda/utils/__init__.py b/src/aap_eda/utils/__init__.py index c675edca0..c093e260f 100644 --- a/src/aap_eda/utils/__init__.py +++ b/src/aap_eda/utils/__init__.py @@ -21,10 +21,10 @@ def str_to_bool(value: str) -> bool: return value.lower() in ("yes", "true", "1") -def get_eda_version() -> str: - """Return EDA version as defined in the aap-eda package.""" +def get_package_version(package_name: str) -> str: + """Return version of the given package.""" try: - return importlib.metadata.version("aap-eda") + return importlib.metadata.version(package_name) except importlib.metadata.PackageNotFoundError: - logger.error("Cannot read version from aap-eda package") + logger.error("Cannot read version from %s package", package_name) return "unknown" diff --git a/src/aap_eda/utils/logging.py b/src/aap_eda/utils/logging.py index 36b603a89..48e25f19d 100644 --- a/src/aap_eda/utils/logging.py +++ b/src/aap_eda/utils/logging.py @@ -17,7 +17,7 @@ from django.conf import settings -from aap_eda.utils import get_eda_version +from aap_eda.utils import get_package_version class UnconditionalLogger: @@ -75,13 +75,25 @@ def log(self, *args, **kwargs): "EVENT_STREAM_BASE_URL", ] +LOGGING_PACKAGE_VERSIONS = [ + "podman", + "kubernetes", + "django-ansible-base", +] + def startup_logging(logger: logging.Logger) -> None: """Log unconditional messages for startup.""" unconditional_logger = UnconditionalLogger(logger) - unconditional_logger.log(f"Starting eda-server {get_eda_version()}") + unconditional_logger.log( + f"Starting eda-server {get_package_version('aap-eda')}", + ) unconditional_logger.log(f"Python version: {platform.python_version()}") + for pkg in LOGGING_PACKAGE_VERSIONS: + unconditional_logger.log( + f"{pkg} library version: {get_package_version(pkg)}", + ) unconditional_logger.log( f"Platform: {platform.platform()} {platform.architecture()}", ) diff --git a/tests/integration/api/test_config.py b/tests/integration/api/test_config.py index c6d782557..e72924ff6 100644 --- a/tests/integration/api/test_config.py +++ b/tests/integration/api/test_config.py @@ -14,7 +14,7 @@ import pytest from django.conf import settings -from aap_eda.utils import get_eda_version +from aap_eda.utils import get_package_version from tests.integration.constants import api_url_v1 @@ -24,6 +24,6 @@ def test_v1_config(admin_client): assert response.status_code == 200 assert response.data == { "time_zone": settings.TIME_ZONE, - "version": get_eda_version(), + "version": get_package_version("aap-eda"), "deployment_type": settings.DEPLOYMENT_TYPE, } diff --git a/tests/unit/test_logging.py b/tests/unit/test_logging.py index 7acbfda65..b38b4bd2e 100644 --- a/tests/unit/test_logging.py +++ b/tests/unit/test_logging.py @@ -4,7 +4,7 @@ from django.conf import settings from django.test import override_settings -from aap_eda.utils import get_eda_version +from aap_eda.utils import get_package_version from aap_eda.utils.logging import SETTINGS_LIST_FOR_LOGGING, startup_logging @@ -15,7 +15,7 @@ def test_startup_logging(caplog_factory): startup_logging(logger) assert "Starting eda-server" in caplog.text - assert get_eda_version() in caplog.text + assert get_package_version("aap-eda") in caplog.text assert "Python version" in caplog.text assert platform.python_version() in caplog.text for setting in SETTINGS_LIST_FOR_LOGGING: diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index b9a373da0..046587f85 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -22,7 +22,11 @@ from rest_framework import serializers from aap_eda.core.utils.strings import extract_variables -from aap_eda.utils import get_eda_version, str_to_bool +from aap_eda.utils import ( + get_package_version, + logger as utils_logger, + str_to_bool, +) from aap_eda.utils.openapi import generate_query_params @@ -45,12 +49,15 @@ def test_str_to_bool(value, expected): assert str_to_bool(value) == expected -def test_get_eda_version(): - assert get_eda_version() == version("aap-eda") +def test_get_package_version(caplog_factory): + eda_caplog = caplog_factory(utils_logger) + assert get_package_version("aap-eda") == version("aap-eda") + assert get_package_version("aap-eda") == version("podman") # assert outcome when aap-eda package is not found with patch("importlib.metadata.version", side_effect=PackageNotFoundError): - assert get_eda_version() == "unknown" + assert get_package_version("aap-eda") == "unknown" + assert "Cannot read version" in eda_caplog.text @pytest.mark.parametrize(