Skip to content

Commit 41c18df

Browse files
author
Andrei Neagu
committed
erge remote-tracking branch 'upstream/master' into pr-osparc-introduce-template-type2
2 parents ee5c59c + 6906f54 commit 41c18df

File tree

21 files changed

+217
-38
lines changed

21 files changed

+217
-38
lines changed

packages/models-library/src/models_library/api_schemas_webserver/computations.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ class ComputationStarted(OutputSchemaWithoutCamelCase):
8181
class ComputationRunListQueryParams(
8282
PageQueryParameters,
8383
ComputationRunListOrderParams, # type: ignore[misc, valid-type]
84-
): ...
84+
):
85+
filter_only_running: bool = Field(
86+
default=False,
87+
description="If true, only running computations are returned",
88+
)
8589

8690

8791
class ComputationRunRestGet(OutputSchema):
@@ -92,6 +96,8 @@ class ComputationRunRestGet(OutputSchema):
9296
submitted_at: datetime
9397
started_at: datetime | None
9498
ended_at: datetime | None
99+
root_project_name: str
100+
project_custom_metadata: dict[str, Any]
95101

96102

97103
### Computation Task

packages/models-library/src/models_library/computations.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,17 @@ class ComputationTaskWithAttributes(BaseModel):
2222
# Attributes added by the webserver
2323
node_name: str
2424
osparc_credits: Decimal | None
25+
26+
27+
class ComputationRunWithAttributes(BaseModel):
28+
project_uuid: ProjectID
29+
iteration: int
30+
state: RunningState
31+
info: dict[str, Any]
32+
submitted_at: datetime
33+
started_at: datetime | None
34+
ended_at: datetime | None
35+
36+
# Attributes added by the webserver
37+
root_project_name: str
38+
project_custom_metadata: dict[str, Any]

packages/models-library/src/models_library/projects_state.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,18 @@ class RunningState(str, Enum):
3535
ABORTED = "ABORTED"
3636
WAITING_FOR_CLUSTER = "WAITING_FOR_CLUSTER"
3737

38-
def is_running(self) -> bool:
39-
return self in (
38+
@staticmethod
39+
def list_running_states() -> list["RunningState"]:
40+
return [
4041
RunningState.PUBLISHED,
4142
RunningState.PENDING,
4243
RunningState.WAITING_FOR_RESOURCES,
4344
RunningState.STARTED,
4445
RunningState.WAITING_FOR_CLUSTER,
45-
)
46+
]
47+
48+
def is_running(self) -> bool:
49+
return self in self.list_running_states()
4650

4751

4852
@unique

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/director_v2/computations.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ async def list_computations_latest_iteration_page(
3333
*,
3434
product_name: ProductName,
3535
user_id: UserID,
36+
# filters
37+
filter_only_running: bool = False,
3638
# pagination
3739
offset: int = 0,
3840
limit: int = 20,
@@ -46,6 +48,7 @@ async def list_computations_latest_iteration_page(
4648
),
4749
product_name=product_name,
4850
user_id=user_id,
51+
filter_only_running=filter_only_running,
4952
offset=offset,
5053
limit=limit,
5154
order_by=order_by,

services/director-v2/src/simcore_service_director_v2/api/rpc/_computations.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ async def list_computations_latest_iteration_page(
2828
*,
2929
product_name: ProductName,
3030
user_id: UserID,
31+
# filters
32+
filter_only_running: bool = False,
3133
# pagination
3234
offset: int = 0,
3335
limit: int = 20,
@@ -39,6 +41,7 @@ async def list_computations_latest_iteration_page(
3941
await comp_runs_repo.list_for_user__only_latest_iterations(
4042
product_name=product_name,
4143
user_id=user_id,
44+
filter_only_running=filter_only_running,
4245
offset=offset,
4346
limit=limit,
4447
order_by=order_by,

services/director-v2/src/simcore_service_director_v2/modules/db/repositories/comp_runs.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ async def list_for_user__only_latest_iterations(
195195
*,
196196
product_name: str,
197197
user_id: UserID,
198+
# filters
199+
filter_only_running: bool,
198200
# pagination
199201
offset: int,
200202
limit: int,
@@ -229,6 +231,16 @@ async def list_for_user__only_latest_iterations(
229231
& (
230232
comp_runs.c.metadata["product_name"].astext == product_name
231233
) # <-- NOTE: We might create a separate column for this for fast retrieval
234+
& (
235+
comp_runs.c.result.in_(
236+
[
237+
RUNNING_STATE_TO_DB[item]
238+
for item in RunningState.list_running_states()
239+
]
240+
)
241+
)
242+
if filter_only_running
243+
else True
232244
)
233245
.group_by(comp_runs.c.project_uuid)
234246
.subquery("latest_runs")

services/director-v2/src/simcore_service_director_v2/modules/dynamic_sidecar/docker_service_specs/proxy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def get_dynamic_proxy_spec(
8383
"endpoint_spec": {"Ports": ports} if ports else {},
8484
"labels": {
8585
"io.simcore.zone": f"{dynamic_services_scheduler_settings.TRAEFIK_SIMCORE_ZONE}",
86-
"traefik.docker.network": swarm_network_name,
86+
"traefik.swarm.network": swarm_network_name,
8787
"traefik.enable": "true",
8888
# security
8989
f"traefik.http.middlewares.{scheduler_data.proxy_service_name}-security-headers.headers.accesscontrolallowcredentials": "true",

services/director-v2/tests/unit/with_dbs/test_modules_dynamic_sidecar_docker_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def dynamic_sidecar_service_spec(
187187
"name": dynamic_sidecar_service_name,
188188
"task_template": {"ContainerSpec": {"Image": "joseluisq/static-web-server"}},
189189
"labels": {
190-
"traefik.docker.network": "",
190+
"traefik.swarm.network": "",
191191
"io.simcore.zone": "",
192192
f"{to_simcore_runtime_docker_label_key('project_id')}": f"{uuid4()}",
193193
f"{to_simcore_runtime_docker_label_key('user_id')}": "123",
@@ -339,7 +339,7 @@ def labels_example(request: pytest.FixtureRequest) -> SimcoreServiceLabels:
339339
return request.param
340340

341341

342-
@pytest.fixture(params=[None, datetime.datetime.now(tz=datetime.timezone.utc)])
342+
@pytest.fixture(params=[None, datetime.datetime.now(tz=datetime.UTC)])
343343
def time_dy_sidecar_became_unreachable(
344344
request: pytest.FixtureRequest,
345345
) -> datetime.datetime | None:

services/director/src/simcore_service_director/producer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ async def _create_docker_service_params(
431431
swarm_network_id = swarm_network["Id"]
432432
swarm_network_name = swarm_network["Name"]
433433
docker_params["networks"].append(swarm_network_id)
434-
docker_params["labels"]["traefik.docker.network"] = swarm_network_name
434+
docker_params["labels"]["traefik.swarm.network"] = swarm_network_name
435435

436436
# set labels for CPU and Memory limits
437437
nano_cpus_limit = str(

services/docker-compose-dev-vendors.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ services:
1313
labels:
1414
- io.simcore.zone=${TRAEFIK_SIMCORE_ZONE}
1515
- traefik.enable=true
16-
- traefik.docker.network=${SWARM_STACK_NAME}_default
16+
- traefik.swarm.network=${SWARM_STACK_NAME}_default
1717
# auth: https://doc.traefik.io/traefik/middlewares/http/forwardauth
1818
- traefik.http.middlewares.${SWARM_STACK_NAME}_manual-auth.forwardauth.address=http://${WEBSERVER_HOST}:${WEBSERVER_PORT}/v0/auth:check
1919
- traefik.http.middlewares.${SWARM_STACK_NAME}_manual-auth.forwardauth.trustForwardHeader=true

0 commit comments

Comments
 (0)