Skip to content

Commit ec17c8a

Browse files
committed
MPT-12684 otel config as library. better config handling
1 parent 9fabbdc commit ec17c8a

91 files changed

Lines changed: 3528 additions & 14687 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.git
22
.idea
33
.vscode
4+
.venv
45

56
**/.env.sample
67
**/.storybook

.github/workflows/ffc_pr_build_and_test.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
trapper_changed: ${{ steps.check_trapper.outputs.changed }}
4949
users_dataset_generator_changed: ${{ steps.check_users_dataset_generator.outputs.changed }}
5050
webhook_executor_changed: ${{ steps.check_webhook_executor.outputs.changed }}
51+
tools_changed: ${{ steps.check_tools.outputs.changed }}
5152
steps:
5253
- uses: actions/checkout@v4
5354
with:
@@ -362,6 +363,15 @@ jobs:
362363
echo "changed=false" >> $GITHUB_OUTPUT
363364
fi
364365
366+
- name: Check if 'tools/**' changed
367+
id: check_tools
368+
run: |
369+
if git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -q '^tools/'; then
370+
echo "changed=true" >> $GITHUB_OUTPUT
371+
else
372+
echo "changed=false" >> $GITHUB_OUTPUT
373+
fi
374+
365375
auth_tests:
366376
if: needs.determine_changes.outputs.auth_changed == 'true'
367377
needs: determine_changes
@@ -817,6 +827,16 @@ jobs:
817827
run: bash -x build.sh webhook_executor build
818828
- name: Build test image and run tests
819829
run: bash -x docker_images/run_test.sh webhook_executor
830+
tools_tests:
831+
if: needs.determine_changes.outputs.tools_changed == 'true'
832+
needs: determine_changes
833+
runs-on: ubuntu-latest
834+
steps:
835+
- uses: actions/checkout@v4
836+
with:
837+
fetch-depth: 0
838+
- name: Build test image and run tests
839+
run: bash -x tools/run_test.sh
820840

821841
pr_notification:
822842
needs:
@@ -858,6 +878,7 @@ jobs:
858878
- trapper_tests
859879
- users_dataset_generator_tests
860880
- webhook_executor_tests
881+
- tools_tests
861882
runs-on: ubuntu-latest
862883
if: always() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled')
863884
steps:

.gitignore

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ rest_api/.clickhouse
2121
**/dist
2222
**/*egg-info/
2323
**/*.tar.gz
24+
htmlcov
25+
.coverage
26+
coverage.xml
27+
.cache
2428

2529
# ngui
2630
ngui/server/.env
@@ -34,14 +38,6 @@ ngui/*/storybook
3438
ngui/server/package-lock.json
3539
ngui/ui/package-lock.json
3640

37-
# ffc_ngui
38-
ffc_ngui/server/.env
39-
ffc_ngui/ui/.env
40-
ffc_ngui/*/node_modules
41-
ffc_ngui/*/build/
42-
ffc_ngui/*/dist/
43-
ffc_ngui/*/storybook
44-
4541
**/npm-debug.log*
4642
**/yarn-debug.log*
4743
**/yarn-error.log*
@@ -62,3 +58,4 @@ optscale-deploy/.vagrant/
6258
/e2etests/.cache/
6359
/e2etests/.cache/*
6460
/e2etests/tests/downloads/*
61+

auth/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ COPY auth/auth_server/*.py ./auth/auth_server/
2626
COPY auth/auth_server/alembic.template auth/auth_server/alembic.template
2727
COPY auth/auth_server/swagger auth/auth_server/swagger
2828

29+
COPY auth/pyproject.toml auth/pyproject.toml
30+
COPY auth/uv.lock auth/uv.lock
31+
2932
RUN uv --project auth sync --locked --no-dev
3033
RUN uv --project auth run python -u auth/auth_server/write_spec.py
3134

auth/auth_server/handlers/v1/base.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from tools.optscale_exceptions.common_exc import (WrongArgumentsException,
1111
UnauthorizedException)
1212
from tools.optscale_exceptions.http_exc import OptHTTPError
13+
from tools.optscale_telemetry import get_trace_headers
1314

1415
LOG = logging.getLogger(__name__)
1516

@@ -60,6 +61,10 @@ def put(self, *args, **kwargs):
6061
def options(self, *args, **kwargs):
6162
self.raise405()
6263

64+
def prepare(self):
65+
for name, value in get_trace_headers().items():
66+
self.set_header(name, value)
67+
6368
def _get_request(self):
6469
return self.request
6570

auth/auth_server/server.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from auth.auth_server.handlers.v1.base import DefaultHandler
1414
from auth.auth_server.handlers.v1.swagger import SwaggerStaticFileHandler
1515
from auth.auth_server.models.db_factory import DBType, DBFactory
16+
from tools.optscale_telemetry import OpenTelemetryConfig
1617

1718
import optscale_client.config_client.client
1819

@@ -103,6 +104,16 @@ def make_app(db_type, etcd_host, etcd_port, wait=False):
103104
config_cl.wait_configured()
104105
db = DBFactory(db_type, config_cl).db
105106
db.create_schema()
107+
108+
config = OpenTelemetryConfig(
109+
service_name=os.getenv("OTEL_SERVICE_NAME", "auth"),
110+
service_version=os.getenv("OTEL_SERVICE_VERSION", "local"),
111+
otel_config=config_cl.read_branch("/opentelemetry"),
112+
service_config=config_cl.read_branch("auth/opentelemetry"),
113+
sqlalchemy_engine=db.engine,
114+
)
115+
config.setup_open_telemetry()
116+
106117
handler_kwargs = {
107118
"engine": db.engine,
108119
"config": config_cl,

auth/auth_server/tests/unittests/test_api_base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ def get_auth_client(version="v1"):
3838
}.get(version)
3939

4040
def setUp(self, version='v1'):
41+
patch(
42+
'optscale_client.config_client.client.Client.read_branch',
43+
return_value=None,
44+
).start()
4145
super().setUp()
4246
secret = gen_id()
4347
patch('optscale_client.config_client.client.Client.cluster_secret',

auth/pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies = [
1212
"optscale-exceptions",
1313
"optscale-password",
1414
"optscale-time",
15+
"optscale-telemetry",
1516
"ordered-set==4.1.0",
1617
"pyjwt>=2.4.0",
1718
"pymacaroons==0.9.2",
@@ -39,6 +40,7 @@ config-client = { path = "../optscale_client/config_client" }
3940
restapi-client = { path = "../optscale_client/rest_api_client" }
4041
auth-client = { path = "../optscale_client/auth_client" }
4142
check-alembic-down-revisions = { path = "../tools/check_alembic_down_revisions" }
43+
optscale-telemetry = { path = "../tools/optscale_telemetry" }
4244

4345
[dependency-groups]
4446
dev = [
@@ -48,4 +50,6 @@ dev = [
4850
"freezegun==0.3.8",
4951
"pycodestyle==2.11.1",
5052
"pylint==3.0.3",
53+
"pytest==8.4.2",
54+
"pytest-xdist==3.6.1",
5155
]

auth/run_test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ echo "<<Alembic down revision tests"
2323

2424
echo "Unit tests>>>"
2525
docker run -i --rm ${TEST_IMAGE} \
26-
bash -c "uv --project auth run python -m unittest discover ./auth/auth_server/tests"
26+
bash -c "uv --project auth run pytest -n auto auth --disable-warnings"
2727
echo "<<Unit tests"
2828

2929
docker rmi ${TEST_IMAGE}

0 commit comments

Comments
 (0)