Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: add more versions to startup log #1225

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/aap_eda/api/views/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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,
}

Expand Down
2 changes: 1 addition & 1 deletion src/aap_eda/settings/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
8 changes: 4 additions & 4 deletions src/aap_eda/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
16 changes: 14 additions & 2 deletions src/aap_eda/utils/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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()}",
)
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/api/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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,
}
4 changes: 2 additions & 2 deletions tests/unit/test_logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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:
Expand Down
17 changes: 12 additions & 5 deletions tests/unit/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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("podman") == version("podman")

# assert outcome when aap-eda package is not found
# assert outcome when 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(
Expand Down