Skip to content

Commit ab3bdf6

Browse files
authored
Merge pull request #42 from godon-dev/otel_instrumenation_logging
feat: use OTel logging via get_logger from shared module
2 parents 75e8648 + b2f50f6 commit ab3bdf6

8 files changed

Lines changed: 29 additions & 20 deletions

File tree

.github/workflows/ci.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,13 @@ jobs:
7272
7373
fake_f = MagicMock()
7474
fake_f.controller = FakeControllerModule()
75+
fake_f.shared = MagicMock()
76+
fake_f.shared.otel_logging = MagicMock()
77+
fake_f.shared.otel_logging.get_logger = lambda name: MagicMock()
7578
sys.modules['f'] = fake_f
7679
sys.modules['f.controller'] = fake_f.controller
80+
sys.modules['f.shared'] = fake_f.shared
81+
sys.modules['f.shared.otel_logging'] = fake_f.shared.otel_logging
7782
7883
# Pre-populate all f.controller.xxx modules BEFORE any imports
7984
for module_name in ['config', 'database', 'breeder_service', 'breeder_create',
@@ -382,8 +387,13 @@ jobs:
382387
383388
fake_f = MagicMock()
384389
fake_f.controller = FakeControllerModule()
390+
fake_f.shared = MagicMock()
391+
fake_f.shared.otel_logging = MagicMock()
392+
fake_f.shared.otel_logging.get_logger = lambda name: MagicMock()
385393
sys.modules['f'] = fake_f
386394
sys.modules['f.controller'] = fake_f.controller
395+
sys.modules['f.shared'] = fake_f.shared
396+
sys.modules['f.shared.otel_logging'] = fake_f.shared.otel_logging
387397
388398
# Pre-populate all f.controller.xxx modules BEFORE any imports
389399
for module_name in ['config', 'database', 'breeder_service', 'breeder_create',

controller/breeder_service.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,19 @@
22
import hashlib
33
import datetime
44
import copy
5-
import logging
65
import os
76
from dateutil.parser import parse
87

98
from f.controller.database import ArchiveDatabaseRepository, MetadataDatabaseRepository
109
from f.controller.config import BreederConfig, BREEDER_CAPABILITIES, DatabaseConfig
10+
from f.shared.otel_logging import get_logger
1111

12-
# Import wmill at top level so Windmill can detect it for dependency resolution
1312
import wmill
1413
from wmill import Windmill
1514

16-
# Import optuna for schema initialization
1715
import optuna.storages
1816

19-
logger = logging.getLogger(__name__)
17+
logger = get_logger(__name__)
2018

2119
def cancel_job_by_id(job_id: str, reason: str = None) -> bool:
2220
"""Cancel a Windmill job by its ID

controller/credential_create.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from f.controller.config import DatabaseConfig
22
from f.controller.database import MetadataDatabaseRepository
3+
from f.shared.otel_logging import get_logger
34
import uuid
4-
import logging
55

6-
logger = logging.getLogger(__name__)
6+
logger = get_logger(__name__)
77

88
def main(request_data=None):
99
"""Create a new credential catalog entry"""

controller/credential_delete.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from f.controller.config import DatabaseConfig
22
from f.controller.database import MetadataDatabaseRepository
3-
import logging
3+
from f.shared.otel_logging import get_logger
44

5-
logger = logging.getLogger(__name__)
5+
logger = get_logger(__name__)
66

77
def main(request_data=None):
88
"""Delete a credential by ID"""

controller/credential_get.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from f.controller.config import DatabaseConfig
22
from f.controller.database import MetadataDatabaseRepository
3-
import logging
3+
from f.shared.otel_logging import get_logger
44

5-
logger = logging.getLogger(__name__)
5+
logger = get_logger(__name__)
66

77
def main(request_data=None):
88
"""Get a specific credential by ID"""

controller/credentials_get.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from f.controller.config import DatabaseConfig
22
from f.controller.database import MetadataDatabaseRepository
3-
import logging
3+
from f.shared.otel_logging import get_logger
44

5-
logger = logging.getLogger(__name__)
5+
logger = get_logger(__name__)
66

77
def main(request_data=None):
88
"""Get list of all credentials"""

controller/database.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import psycopg2
2-
import logging
32
import json
43
from contextlib import contextmanager
54

6-
logger = logging.getLogger(__name__)
5+
from f.shared.otel_logging import get_logger
6+
7+
logger = get_logger(__name__)
78

89
@contextmanager
910
def get_db_connection(db_config):

tests/conftest.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,32 +23,32 @@
2323
import types
2424
from unittest.mock import MagicMock
2525

26-
# Add parent directory to path for imports
2726
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
2827

29-
# Mock external dependencies before imports
3028
sys.modules['database'] = MagicMock()
3129

32-
# Mock wmill module (only available inside Windmill)
3330
sys.modules['wmill'] = MagicMock()
3431

35-
# Mock optuna.storages module (only needed in production, not tests)
3632
sys.modules['optuna'] = MagicMock()
3733
sys.modules['optuna.storages'] = MagicMock()
3834

39-
# Create stub modules using types.ModuleType
4035
def create_stub_module(name):
4136
module = types.ModuleType(name)
4237
module.__path__ = []
4338
module.__spec__ = None
4439
module.__name__ = name
4540
return module
4641

47-
# Create f and f.controller
4842
fake_f = create_stub_module('f')
4943
fake_controller = create_stub_module('f.controller')
44+
fake_shared = create_stub_module('f.shared')
5045
sys.modules['f'] = fake_f
5146
sys.modules['f.controller'] = fake_controller
47+
sys.modules['f.shared'] = fake_shared
48+
49+
fake_otel = create_stub_module('f.shared.otel_logging')
50+
fake_otel.get_logger = lambda name: MagicMock()
51+
sys.modules['f.shared.otel_logging'] = fake_otel
5252

5353
# Pre-populate all f.controller.xxx modules BEFORE any imports
5454
for module_name in ['config', 'database', 'breeder_service', 'credential_create',

0 commit comments

Comments
 (0)