Skip to content

Commit 5528772

Browse files
authored
Merge master in pydantic_v2_migration 18.10.2024 (#6514)
1 parent 42c0a68 commit 5528772

File tree

892 files changed

+21247
-11847
lines changed

Some content is hidden

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

892 files changed

+21247
-11847
lines changed

.env-devel

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ TRAEFIK_API_SERVER_INFLIGHTREQ_AMOUNT=25
2525

2626
AUTOSCALING_DASK=null
2727
AUTOSCALING_DRAIN_NODES_WITH_LABELS=False
28+
AUTOSCALING_DOCKER_JOIN_DRAINED=True
29+
AUTOSCALING_WAIT_FOR_CLOUD_INIT_BEFORE_WARM_BUFFER_ACTIVATION=False
2830
AUTOSCALING_EC2_ACCESS=null
2931
AUTOSCALING_EC2_INSTANCES=null
3032
AUTOSCALING_LOGLEVEL=WARNING
@@ -48,6 +50,7 @@ CLUSTERS_KEEPER_COMPUTATIONAL_BACKEND_DOCKER_IMAGE_TAG=master-github-latest
4850
CLUSTERS_KEEPER_DASK_NTHREADS=0
4951
CLUSTERS_KEEPER_DASK_WORKER_SATURATION=inf
5052
CLUSTERS_KEEPER_EC2_ACCESS=null
53+
CLUSTERS_KEEPER_SSM_ACCESS=null
5154
CLUSTERS_KEEPER_EC2_INSTANCES_PREFIX=""
5255
CLUSTERS_KEEPER_LOGLEVEL=WARNING
5356
CLUSTERS_KEEPER_MAX_MISSED_HEARTBEATS_BEFORE_CLUSTER_TERMINATION=5
@@ -101,6 +104,7 @@ DYNAMIC_SIDECAR_IMAGE=${DOCKER_REGISTRY:-itisfoundation}/dynamic-sidecar:${DOCKE
101104
DYNAMIC_SIDECAR_LOG_LEVEL=DEBUG
102105
DYNAMIC_SIDECAR_PROMETHEUS_MONITORING_NETWORKS=[]
103106
DYNAMIC_SIDECAR_PROMETHEUS_SERVICE_LABELS={}
107+
DYNAMIC_SIDECAR_API_SAVE_RESTORE_STATE_TIMEOUT=3600
104108
# DIRECTOR_V2 ----
105109

106110
DYNAMIC_SCHEDULER_PROFILING=1
@@ -149,6 +153,10 @@ POSTGRES_PASSWORD=adminadmin
149153
POSTGRES_PORT=5432
150154
POSTGRES_USER=scu
151155

156+
POSTGRES_READONLY_PASSWORD=readonly
157+
POSTGRES_READONLY_USER=postgres_readonly
158+
159+
152160
RABBIT_HOST=rabbit
153161
RABBIT_PASSWORD=adminadmin
154162
RABBIT_PORT=5672
@@ -158,6 +166,8 @@ RABBIT_USER=admin
158166
REDIS_HOST=redis
159167
REDIS_PORT=6379
160168
REDIS_PASSWORD=adminadmin
169+
REDIS_SECURE=false
170+
REDIS_USER=null
161171

162172
REGISTRY_AUTH=True
163173
REGISTRY_PW=adminadminadmin
@@ -211,6 +221,13 @@ STORAGE_PROFILING=1
211221

212222
SWARM_STACK_NAME=master-simcore
213223

224+
## VENDOR DEVELOPMENT SERVICES ---
225+
VENDOR_DEV_MANUAL_IMAGE=containous/whoami
226+
VENDOR_DEV_MANUAL_REPLICAS=1
227+
VENDOR_DEV_MANUAL_SUBDOMAIN=manual
228+
229+
## VENDOR DEVELOPMENT SERVICES ---
230+
214231
WB_API_WEBSERVER_HOST=wb-api-server
215232
WB_API_WEBSERVER_PORT=8080
216233

@@ -282,6 +299,7 @@ WB_DB_EL_WALLETS=0
282299

283300
# WEBSERVER ----
284301
AIODEBUG_SLOW_DURATION_SECS=0
302+
DIAGNOSTICS_HEALTHCHECK_ENABLED=False
285303
DIAGNOSTICS_MAX_AVG_LATENCY=10
286304
DIAGNOSTICS_MAX_TASK_DELAY=30
287305
DIAGNOSTICS_SLOW_DURATION_SECS=1
@@ -303,9 +321,11 @@ SESSION_COOKIE_SECURE=False
303321
SIMCORE_VCS_RELEASE_TAG=latest
304322
STUDIES_ACCESS_ANONYMOUS_ALLOWED=0
305323
STUDIES_DEFAULT_SERVICE_THUMBNAIL=https://via.placeholder.com/170x120.png
306-
TRACING_ENABLED=1
307-
TRACING_THRIFT_COMPACT_ENDPOINT=http://jaeger:5775
308-
TRACING_ZIPKIN_ENDPOINT=http://jaeger:9411
324+
TRACING_OPENTELEMETRY_COLLECTOR_BATCH_SIZE=2
325+
TRACING_OPENTELEMETRY_COLLECTOR_PORT=4318
326+
TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT=http://opentelemetry-collector
327+
TRACING_OPENTELEMETRY_COLLECTOR_SAMPLING_PERCENTAGE=100
328+
TRACING_OPENTELEMETRY_COLLECTOR_EXPORTER_ENDPOINT=http://jaeger:4318
309329
TRAEFIK_SIMCORE_ZONE=internal_simcore_stack
310330
TWILIO_ACCOUNT_SID=DUMMY
311331
TWILIO_AUTH_TOKEN=DUMMY

.github/dependabot.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ updates:
1212
assignees:
1313
- pcrespov
1414
ignore:
15-
- dependency-name: aiozipkin
16-
versions:
17-
- ">= 1.a, < 2"
1815
- dependency-name: docker-compose
1916
versions:
2017
- 1.28.2
@@ -41,9 +38,6 @@ updates:
4138
assignees:
4239
- pcrespov
4340
ignore:
44-
- dependency-name: aiozipkin
45-
versions:
46-
- ">= 1.a, < 2"
4741
- dependency-name: openapi-core
4842
versions:
4943
- "> 0.12.0, < 1"

.github/workflows/ci-testing-deploy.yml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,18 @@ jobs:
279279
fail-fast: false
280280
name: "[build] docker images"
281281
steps:
282+
- name: Remove unused software
283+
run: |
284+
echo "Available storage before:"
285+
sudo df -h
286+
echo
287+
sudo rm -rf /usr/share/dotnet
288+
sudo rm -rf /usr/local/lib/android
289+
sudo rm -rf /opt/ghc
290+
sudo rm -rf /opt/hostedtoolcache/CodeQL
291+
echo "Available storage after:"
292+
sudo df -h
293+
echo
282294
- uses: actions/checkout@v4
283295
- name: setup docker buildx
284296
id: buildx
@@ -593,7 +605,7 @@ jobs:
593605
unit-test-autoscaling:
594606
needs: changes
595607
if: ${{ needs.changes.outputs.autoscaling == 'true' || github.event_name == 'push' }}
596-
timeout-minutes: 18 # if this timeout gets too small, then split the tests
608+
timeout-minutes: 22 # temporary: mypy takes a huge amount of time to run here, maybe we should cache it
597609
name: "[unit] autoscaling"
598610
runs-on: ${{ matrix.os }}
599611
strategy:
@@ -1291,7 +1303,7 @@ jobs:
12911303
uses: docker/setup-buildx-action@v3
12921304
with:
12931305
driver: docker-container
1294-
- uses: actions/[email protected].3
1306+
- uses: actions/[email protected].4
12951307
with:
12961308
node-version: ${{ matrix.node }}
12971309
cache: "npm"
@@ -2404,7 +2416,7 @@ jobs:
24042416
uses: actions/setup-python@v5
24052417
with:
24062418
python-version: ${{ matrix.python }}
2407-
- uses: actions/[email protected].3
2419+
- uses: actions/[email protected].4
24082420
with:
24092421
node-version: ${{ matrix.node }}
24102422
cache: "npm"
@@ -2530,7 +2542,6 @@ jobs:
25302542
name: ${{ github.job }}_tracing
25312543
path: tests/e2e-playwright/test-results
25322544

2533-
25342545
system-test-environment-setup:
25352546
timeout-minutes: 30 # if this timeout gets too small, then split the tests
25362547
name: "[sys] environment setup"

.pylintrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,8 @@ max-statements=50
466466
# Minimum number of public methods for a class (see R0903).
467467
min-public-methods=2
468468

469+
# Minimum number of public methods for a class (see R0903).
470+
max-positional-arguments=12
469471

470472
[EXCEPTIONS]
471473

.vscode/settings.template.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
"files.associations": {
1010
".*rc": "ini",
1111
".env*": "ini",
12+
"*.logs*": "log",
1213
"**/requirements/*.in": "pip-requirements",
1314
"**/requirements/*.txt": "pip-requirements",
1415
"*logs.txt": "log",
15-
"*.logs*": "log",
1616
"*Makefile": "makefile",
17+
"*sql.*": "sql",
1718
"docker-compose*.yml": "dockercompose",
1819
"Dockerfile*": "dockerfile"
1920
},

Makefile

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,11 @@ CPU_COUNT = $(shell cat /proc/cpuinfo | grep processor | wc -l )
269269
services/docker-compose.local.yml \
270270
> $@
271271

272+
.stack-vendor-services.yml: .env $(docker-compose-configs)
273+
# Creating config for vendors stack to $@
274+
@scripts/docker/docker-stack-config.bash -e $< \
275+
services/docker-compose-dev-vendors.yml \
276+
> $@
272277

273278
.stack-ops.yml: .env $(docker-compose-configs)
274279
# Creating config for ops stack to $@
@@ -288,7 +293,11 @@ endif
288293

289294

290295

291-
.PHONY: up-devel up-prod up-prod-ci up-version up-latest .deploy-ops
296+
.PHONY: up-devel up-prod up-prod-ci up-version up-latest .deploy-ops .deploy-vendors
297+
298+
.deploy-vendors: .stack-vendor-services.yml
299+
# Deploy stack 'vendors'
300+
docker stack deploy --detach=true --with-registry-auth -c $< vendors
292301

293302
.deploy-ops: .stack-ops.yml
294303
# Deploy stack 'ops'
@@ -310,18 +319,19 @@ TableWidth=140;\
310319
printf "%24s | %90s | %12s | %12s\n" Name Endpoint User Password;\
311320
printf "%.$${TableWidth}s\n" "$$separator";\
312321
printf "$$rows" "oSparc platform" "http://$(get_my_ip).nip.io:9081";\
313-
printf "$$rows" "oSparc web API doc" "http://$(get_my_ip).nip.io:9081/dev/doc";\
314322
printf "$$rows" "oSparc public API doc" "http://$(get_my_ip).nip.io:8006/dev/doc";\
315-
printf "$$rows" "Postgres DB" "http://$(get_my_ip).nip.io:18080/?pgsql=postgres&username="$${POSTGRES_USER}"&db="$${POSTGRES_DB}"&ns=public" $${POSTGRES_USER} $${POSTGRES_PASSWORD};\
316-
printf "$$rows" "Portainer" "http://$(get_my_ip).nip.io:9000" admin adminadmin;\
317-
printf "$$rows" "Redis" "http://$(get_my_ip).nip.io:18081";\
323+
printf "$$rows" "oSparc web API doc" "http://$(get_my_ip).nip.io:9081/dev/doc";\
318324
printf "$$rows" "Dask Dashboard" "http://$(get_my_ip).nip.io:8787";\
319325
printf "$$rows" "Docker Registry" "http://$${REGISTRY_URL}/v2/_catalog" $${REGISTRY_USER} $${REGISTRY_PW};\
320326
printf "$$rows" "Invitations" "http://$(get_my_ip).nip.io:8008/dev/doc" $${INVITATIONS_USERNAME} $${INVITATIONS_PASSWORD};\
327+
printf "$$rows" "Jaeger" "http://$(get_my_ip).nip.io:16686";\
321328
printf "$$rows" "Payments" "http://$(get_my_ip).nip.io:8011/dev/doc" $${PAYMENTS_USERNAME} $${PAYMENTS_PASSWORD};\
329+
printf "$$rows" "Portainer" "http://$(get_my_ip).nip.io:9000" admin adminadmin;\
330+
printf "$$rows" "Postgres DB" "http://$(get_my_ip).nip.io:18080/?pgsql=postgres&username="$${POSTGRES_USER}"&db="$${POSTGRES_DB}"&ns=public" $${POSTGRES_USER} $${POSTGRES_PASSWORD};\
322331
printf "$$rows" "Rabbit Dashboard" "http://$(get_my_ip).nip.io:15672" admin adminadmin;\
323-
printf "$$rows" "Traefik Dashboard" "http://$(get_my_ip).nip.io:8080/dashboard/";\
332+
printf "$$rows" "Redis" "http://$(get_my_ip).nip.io:18081";\
324333
printf "$$rows" "Storage S3 Minio" "http://$(get_my_ip).nip.io:9001" 12345678 12345678;\
334+
printf "$$rows" "Traefik Dashboard" "http://$(get_my_ip).nip.io:8080/dashboard/";\
325335

326336
printf "\n%s\n" "⚠️ if a DNS is not used (as displayed above), the interactive services started via dynamic-sidecar";\
327337
echo "⚠️ will not be shown. The frontend accesses them via the uuid.services.YOUR_IP.nip.io:9081";
@@ -337,6 +347,7 @@ up-devel: .stack-simcore-development.yml .init-swarm $(CLIENT_WEB_OUTPUT) ## Dep
337347
@$(MAKE_C) services/dask-sidecar certificates
338348
# Deploy stack $(SWARM_STACK_NAME) [back-end]
339349
@docker stack deploy --detach=true --with-registry-auth -c $< $(SWARM_STACK_NAME)
350+
@$(MAKE) .deploy-vendors
340351
@$(MAKE) .deploy-ops
341352
@$(_show_endpoints)
342353
@$(MAKE_C) services/static-webserver/client follow-dev-logs
@@ -347,6 +358,7 @@ up-devel-frontend: .stack-simcore-development-frontend.yml .init-swarm ## Every
347358
@$(MAKE_C) services/dask-sidecar certificates
348359
# Deploy stack $(SWARM_STACK_NAME) [back-end]
349360
@docker stack deploy --detach=true --with-registry-auth -c $< $(SWARM_STACK_NAME)
361+
@$(MAKE) .deploy-vendors
350362
@$(MAKE) .deploy-ops
351363
@$(_show_endpoints)
352364
@$(MAKE_C) services/static-webserver/client follow-dev-logs
@@ -357,6 +369,7 @@ ifeq ($(target),)
357369
@$(MAKE_C) services/dask-sidecar certificates
358370
# Deploy stack $(SWARM_STACK_NAME)
359371
@docker stack deploy --detach=true --with-registry-auth -c $< $(SWARM_STACK_NAME)
372+
@$(MAKE) .deploy-vendors
360373
@$(MAKE) .deploy-ops
361374
else
362375
# deploys ONLY $(target) service
@@ -368,6 +381,7 @@ up-version: .stack-simcore-version.yml .init-swarm ## Deploys versioned stack '$
368381
@$(MAKE_C) services/dask-sidecar certificates
369382
# Deploy stack $(SWARM_STACK_NAME)
370383
@docker stack deploy --detach=true --with-registry-auth -c $< $(SWARM_STACK_NAME)
384+
@$(MAKE) .deploy-vendors
371385
@$(MAKE) .deploy-ops
372386
@$(_show_endpoints)
373387

api/specs/web-server/_auth.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,21 @@ async def logout(_body: LogoutBody):
155155
"""user logout"""
156156

157157

158+
@router.get(
159+
"/auth:check",
160+
operation_id="check_authentication",
161+
status_code=status.HTTP_204_NO_CONTENT,
162+
responses={
163+
status.HTTP_401_UNAUTHORIZED: {
164+
"model": Envelope[Error],
165+
"description": "unauthorized reset due to invalid token code",
166+
}
167+
},
168+
)
169+
async def check_auth():
170+
"""checks if user is authenticated in the platform"""
171+
172+
158173
@router.post(
159174
"/auth/reset-password",
160175
response_model=Envelope[Log],

api/specs/web-server/_projects_crud.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@
3232
from simcore_service_webserver._meta import API_VTAG
3333
from simcore_service_webserver.projects._common_models import ProjectPathParams
3434
from simcore_service_webserver.projects._crud_handlers import ProjectCreateParams
35-
from simcore_service_webserver.projects._crud_handlers_models import ProjectListParams
35+
from simcore_service_webserver.projects._crud_handlers_models import (
36+
ProjectListFullSearchParams,
37+
ProjectListParams,
38+
)
3639

3740
router = APIRouter(
3841
prefix=f"/{API_VTAG}",
@@ -137,6 +140,23 @@ async def clone_project(
137140
...
138141

139142

143+
@router.get(
144+
"/projects:search",
145+
response_model=Page[ProjectListFullSearchParams],
146+
)
147+
async def list_projects_full_search(
148+
_params: Annotated[ProjectListFullSearchParams, Depends()],
149+
order_by: Annotated[
150+
Json,
151+
Query(
152+
description="Order by field (type|uuid|name|description|prj_owner|creation_date|last_change_date) and direction (asc|desc). The default sorting order is ascending.",
153+
example='{"field": "last_change_date", "direction": "desc"}',
154+
),
155+
] = ('{"field": "last_change_date", "direction": "desc"}',),
156+
):
157+
...
158+
159+
140160
@router.get(
141161
"/projects/{project_id}/inactivity",
142162
response_model=Envelope[GetProjectInactivityResponse],

api/specs/web-server/_resource_usage.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
from _common import assert_handler_signature_against_model
1515
from fastapi import APIRouter, Query, status
16+
from models_library.api_schemas_resource_usage_tracker.service_runs import (
17+
OsparcCreditsAggregatedByServiceGet,
18+
)
1619
from models_library.api_schemas_webserver.resource_usage import (
1720
ConnectServiceToPricingPlanBodyParams,
1821
CreatePricingPlanBodyParams,
@@ -93,7 +96,7 @@ async def list_resource_usage_services(
9396

9497
@router.get(
9598
"/services/-/aggregated-usages",
96-
response_model=Envelope[list[ServiceRunGet]],
99+
response_model=Envelope[list[OsparcCreditsAggregatedByServiceGet]],
97100
summary="Used credits based on aggregate by type, currently supported `services`. (user and product are taken from context, optionally wallet_id parameter might be provided).",
98101
tags=["usage"],
99102
)

api/tests/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
# pylint: disable=unused-argument
21
# pylint: disable=redefined-outer-name
2+
# pylint: disable=too-many-positional-arguments
3+
# pylint: disable=unused-argument
34
# pylint: disable=unused-variable
45

56
import logging

0 commit comments

Comments
 (0)