Skip to content

Commit 4ef961e

Browse files
authored
♻️ Is621/api server (preparation) (ITISFoundation#3072)
1 parent f357a28 commit 4ef961e

Some content is hidden

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

63 files changed

+843
-1211
lines changed

packages/models-library/src/models_library/function_services_catalog/_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,12 @@ def _items(self) -> Iterator[Tuple[Tuple[ServiceKey, ServiceVersion], _Record]]:
8585
yield key, value
8686

8787
def iter_metadata(self) -> Iterator[ServiceDockerData]:
88+
"""WARNING: this function might skip services marked as 'under development'"""
8889
for _, f in self._items():
8990
yield f.meta
9091

9192
def iter_services_key_version(self) -> Iterator[Tuple[ServiceKey, ServiceVersion]]:
93+
"""WARNING: this function might skip services makred as 'under development'"""
9294
for kv, f in self._items():
9395
assert kv == (f.meta.key, f.meta.version) # nosec
9496
yield kv

packages/postgres-database/src/simcore_postgres_database/models/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
- Collects all table's schemas
44
- Metadata object needed to explicitly define table schemas
55
"""
6-
from sqlalchemy.ext.declarative import declarative_base
6+
import sqlalchemy.orm
77

88
# DO NOT inheriting from _base. Use instead explicit table definitions
99
# See https://docs.sqlalchemy.org/en/latest/orm/mapping_styles.html#classical-mappings
10-
Base = declarative_base()
10+
Base = sqlalchemy.orm.declarative_base()
1111

1212
metadata = Base.metadata

packages/pytest-simcore/src/pytest_simcore/helpers/utils_envs.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,9 @@ def delenvs_as_envfile(
2525

2626
assert all(env not in os.environ for env in envs)
2727
return envs
28+
29+
30+
def setenvs_from_dict(monkeypatch: MonkeyPatch, envs: EnvVarsDict):
31+
for key, value in envs.items():
32+
assert value is not None # key is defined w/o value
33+
monkeypatch.setenv(key, str(value))

packages/service-library/src/servicelib/fastapi/openapi.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ def redefine_operation_id_in_router(router: APIRouter, operation_id_prefix: str)
4242
)
4343

4444

45-
def _patch_openapi_specs(app_openapi: Dict[str, Any]):
46-
"""Patches app.openapi with some fixes and osparc conventions"""
45+
def patch_openapi_specs(app_openapi: Dict[str, Any]):
46+
"""Patches app.openapi with some fixes and osparc conventions
47+
48+
Modifies fastapi auto-generated OAS to pass our openapi validation.
49+
"""
4750

4851
def _patch(node):
4952
if isinstance(node, Dict):
@@ -84,7 +87,7 @@ def _custom_openapi_method(self: FastAPI) -> Dict:
8487
# NOTE: see fastapi.applications.py:FastApi.openapi(self) implementation
8588
if not self.openapi_schema:
8689
self.openapi_schema = self._original_openapi() # type: ignore
87-
_patch_openapi_specs(self.openapi_schema)
90+
patch_openapi_specs(self.openapi_schema)
8891

8992
return self.openapi_schema
9093

services/api-server/.env-devel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,6 @@ STORAGE_HOST=storage
4444

4545
# director
4646
DIRECTOR_V2_HOST=director-v2
47+
48+
49+
API_SERVER_TRACING=null

services/api-server/Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,12 @@ run-fake-devel: # starts a fake server in a dev-container
8787
.PHONY: openapi-specs openapi.json
8888
openapi-specs: openapi.json
8989
openapi.json: .env
90-
# generating openapi specs file
90+
# generating openapi specs file under $<
91+
@set -o allexport; \
92+
source .env; \
93+
set +o allexport; \
9194
python3 -c "import json; from $(APP_PACKAGE_NAME).main import *; print( json.dumps(the_app.openapi(), indent=2) )" > $@
95+
9296
# validates OAS file: $@
9397
@cd $(CURDIR); \
9498
$(SCRIPTS_DIR)/openapi-generator-cli.bash validate --input-spec /local/$@

services/api-server/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.3.0
1+
0.3.1

services/api-server/openapi.json

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"info": {
44
"title": "osparc.io web API",
55
"description": "osparc-simcore public web API specifications",
6-
"version": "0.3.0",
6+
"version": "0.3.1",
77
"x-logo": {
88
"url": "https://raw.githubusercontent.com/ITISFoundation/osparc-manual/b809d93619512eb60c827b7e769c6145758378d0/_media/osparc-logo.svg",
99
"altText": "osparc-simcore logo"
@@ -107,7 +107,7 @@
107107
"files"
108108
],
109109
"summary": "List Files",
110-
"description": "Lists all files stored in the system ",
110+
"description": "Lists all files stored in the system",
111111
"operationId": "list_files",
112112
"responses": {
113113
"200": {
@@ -196,7 +196,7 @@
196196
"files"
197197
],
198198
"summary": "Get File",
199-
"description": "Gets metadata for a given file resource ",
199+
"description": "Gets metadata for a given file resource",
200200
"operationId": "get_file",
201201
"parameters": [
202202
{
@@ -262,6 +262,12 @@
262262
}
263263
],
264264
"responses": {
265+
"307": {
266+
"description": "Successful Response"
267+
},
268+
"404": {
269+
"description": "File not found"
270+
},
265271
"200": {
266272
"description": "Returns a arbitrary binary data",
267273
"content": {
@@ -278,9 +284,6 @@
278284
}
279285
}
280286
},
281-
"404": {
282-
"description": "File not found"
283-
},
284287
"422": {
285288
"description": "Validation Error",
286289
"content": {
@@ -305,7 +308,7 @@
305308
"solvers"
306309
],
307310
"summary": "List Solvers",
308-
"description": "Lists all available solvers (latest version) ",
311+
"description": "Lists all available solvers (latest version)",
309312
"operationId": "list_solvers",
310313
"responses": {
311314
"200": {
@@ -336,7 +339,7 @@
336339
"solvers"
337340
],
338341
"summary": "Lists All Releases",
339-
"description": "Lists all released solvers (all released versions) ",
342+
"description": "Lists all released solvers (all released versions)",
340343
"operationId": "list_solvers_releases",
341344
"responses": {
342345
"200": {
@@ -367,7 +370,7 @@
367370
"solvers"
368371
],
369372
"summary": "Get Latest Release of a Solver",
370-
"description": "Gets latest release of a solver ",
373+
"description": "Gets latest release of a solver",
371374
"operationId": "get_solver",
372375
"parameters": [
373376
{
@@ -416,7 +419,7 @@
416419
"solvers"
417420
],
418421
"summary": "List Solver Releases",
419-
"description": "Lists all releases of a given solver ",
422+
"description": "Lists all releases of a given solver",
420423
"operationId": "list_solver_releases",
421424
"parameters": [
422425
{
@@ -469,7 +472,7 @@
469472
"solvers"
470473
],
471474
"summary": "Get Solver Release",
472-
"description": "Gets a specific release of a solver ",
475+
"description": "Gets a specific release of a solver",
473476
"operationId": "get_solver_release",
474477
"parameters": [
475478
{
@@ -1175,6 +1178,9 @@
11751178
{
11761179
"type": "integer"
11771180
},
1181+
{
1182+
"type": "boolean"
1183+
},
11781184
{
11791185
"type": "string"
11801186
}
@@ -1224,6 +1230,9 @@
12241230
{
12251231
"type": "integer"
12261232
},
1233+
{
1234+
"type": "boolean"
1235+
},
12271236
{
12281237
"type": "string"
12291238
}
@@ -1317,8 +1326,8 @@
13171326
"title": "Released",
13181327
"type": "object",
13191328
"additionalProperties": {
1320-
"type": "string",
1321-
"pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$"
1329+
"pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$",
1330+
"type": "string"
13221331
},
13231332
"description": "Maps every route's path tag with a released version"
13241333
},

services/api-server/requirements/_base.txt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
#
55
# pip-compile --output-file=requirements/_base.txt --strip-extras requirements/_base.in
66
#
7+
aiocache==0.11.1
8+
# via -r requirements/../../../packages/simcore-sdk/requirements/_base.in
79
aiodebug==2.3.0
810
# via
911
# -c requirements/../../../packages/service-library/requirements/./_base.in
@@ -26,6 +28,7 @@ aiohttp==3.8.1
2628
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
2729
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
2830
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
31+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
2932
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
3033
# -c requirements/../../../requirements/constraints.txt
3134
# -r requirements/../../../packages/simcore-sdk/requirements/_base.in
@@ -83,6 +86,7 @@ cryptography==36.0.2
8386
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
8487
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
8588
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
89+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
8690
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
8791
# -c requirements/../../../requirements/constraints.txt
8892
# -r requirements/_base.in
@@ -136,6 +140,7 @@ jinja2==3.1.1
136140
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
137141
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
138142
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
143+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
139144
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
140145
# -c requirements/../../../requirements/constraints.txt
141146
# fastapi
@@ -144,7 +149,8 @@ jsonschema==3.2.0
144149
# -c requirements/../../../packages/service-library/requirements/././constraints.txt
145150
# -c requirements/../../../packages/service-library/requirements/./constraints.txt
146151
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/./constraints.txt
147-
# -r requirements/../../../packages/simcore-sdk/requirements/_base.in
152+
# -r requirements/../../../packages/models-library/requirements/_base.in
153+
# -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/_base.in
148154
mako==1.2.0
149155
# via alembic
150156
markupsafe==2.1.1
@@ -186,13 +192,15 @@ pydantic==1.9.0
186192
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
187193
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
188194
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
195+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
189196
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
190197
# -c requirements/../../../requirements/constraints.txt
191198
# -r requirements/../../../packages/models-library/requirements/_base.in
192199
# -r requirements/../../../packages/service-library/requirements/_base.in
193200
# -r requirements/../../../packages/settings-library/requirements/_base.in
194201
# -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/_base.in
195202
# -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in
203+
# -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/_base.in
196204
# -r requirements/../../../packages/simcore-sdk/requirements/_base.in
197205
# -r requirements/_base.in
198206
# fastapi
@@ -225,6 +233,7 @@ pyyaml==5.4.1
225233
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
226234
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
227235
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/./constraints.txt
236+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
228237
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
229238
# -c requirements/../../../requirements/constraints.txt
230239
# -r requirements/../../../packages/service-library/requirements/_base.in
@@ -256,6 +265,7 @@ sqlalchemy==1.4.32
256265
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
257266
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
258267
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
268+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
259269
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
260270
# -c requirements/../../../requirements/constraints.txt
261271
# -r requirements/../../../packages/postgres-database/requirements/_base.in
@@ -284,6 +294,7 @@ tqdm==4.63.1
284294
typer==0.4.1
285295
# via
286296
# -r requirements/../../../packages/settings-library/requirements/_base.in
297+
# -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/_base.in
287298
# -r requirements/_base.in
288299
typing-extensions==4.1.1
289300
# via
@@ -301,6 +312,7 @@ urllib3==1.26.9
301312
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
302313
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt
303314
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
315+
# -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
304316
# -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt
305317
# -c requirements/../../../requirements/constraints.txt
306318
# requests

services/api-server/requirements/_test.in

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,21 @@
1010
#
1111
--constraint _base.txt
1212

13-
# 'services/api-server/tests/unit' dependencies
14-
15-
# testing
13+
alembic
14+
asgi_lifespan
15+
click
16+
codecov
17+
coveralls
18+
docker
19+
faker
20+
fsspec # upload/download files to minio
21+
passlib[bcrypt]
22+
pylint
1623
pytest
1724
pytest-asyncio
1825
pytest-cov
1926
pytest-docker
2027
pytest-mock
2128
pytest-runner
22-
asgi_lifespan
23-
24-
# fixtures
25-
faker
26-
passlib[bcrypt]
2729
respx
28-
29-
# db migration
30-
--requirement ../../../packages/postgres-database/requirements/_base.in
31-
alembic
32-
click
33-
docker
3430
tenacity
35-
36-
# tools
37-
pylint
38-
coveralls
39-
codecov

0 commit comments

Comments
 (0)