Skip to content

Commit 2950e75

Browse files
Merge branch 'master' into maintenance/improve-error-handling
2 parents 50d9609 + 24b7dd5 commit 2950e75

File tree

64 files changed

+2289
-132
lines changed

Some content is hidden

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

64 files changed

+2289
-132
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from typing import Final
2+
3+
SOCKET_IO_SERVICE_STATUS_EVENT: Final[str] = "serviceStatus"

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

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,36 @@ class NodeGet(OutputSchema):
9393

9494
class Config:
9595
schema_extra: ClassVar[dict[str, Any]] = {
96-
"example": {
97-
"published_port": 30000,
98-
"entrypoint": "/the/entry/point/is/here",
99-
"service_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
100-
"service_key": "simcore/services/comp/itis/sleeper",
101-
"service_version": "1.2.3",
102-
"service_host": "jupyter_E1O2E-LAH",
103-
"service_port": 8081,
104-
"service_basepath": "/x/E1O2E-LAH",
105-
"service_state": "pending",
106-
"service_message": "no suitable node (insufficient resources on 1 node)",
107-
"user_id": 123,
108-
}
96+
"examples": [
97+
# computational
98+
{
99+
"published_port": 30000,
100+
"entrypoint": "/the/entry/point/is/here",
101+
"service_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
102+
"service_key": "simcore/services/comp/itis/sleeper",
103+
"service_version": "1.2.3",
104+
"service_host": "jupyter_E1O2E-LAH",
105+
"service_port": 8081,
106+
"service_basepath": "/x/E1O2E-LAH",
107+
"service_state": "pending",
108+
"service_message": "no suitable node (insufficient resources on 1 node)",
109+
"user_id": 123,
110+
},
111+
# dynamic
112+
{
113+
"published_port": 30000,
114+
"entrypoint": "/the/entry/point/is/here",
115+
"service_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
116+
"service_key": "simcore/services/dynamic/some-dynamic-service",
117+
"service_version": "1.2.3",
118+
"service_host": "jupyter_E1O2E-LAH",
119+
"service_port": 8081,
120+
"service_basepath": "/x/E1O2E-LAH",
121+
"service_state": "pending",
122+
"service_message": "no suitable node (insufficient resources on 1 node)",
123+
"user_id": 123,
124+
},
125+
]
109126
}
110127

111128

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,18 @@ class ServiceBootType(str, Enum):
1111
@functools.total_ordering
1212
@unique
1313
class ServiceState(Enum):
14+
FAILED = "failed"
15+
1416
PENDING = "pending"
1517
PULLING = "pulling"
1618
STARTING = "starting"
1719
RUNNING = "running"
18-
COMPLETE = "complete"
19-
FAILED = "failed"
20+
2021
STOPPING = "stopping"
2122

23+
COMPLETE = "complete"
24+
IDLE = "idle"
25+
2226
def __lt__(self, other):
2327
if self.__class__ is other.__class__:
2428
comparison_order = ServiceState.comparison_order()
@@ -39,6 +43,7 @@ def comparison_order() -> dict["ServiceState", int]:
3943
ServiceState.RUNNING: 4,
4044
ServiceState.STOPPING: 5,
4145
ServiceState.COMPLETE: 6,
46+
ServiceState.IDLE: 7,
4247
}
4348

4449

packages/models-library/tests/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pytest
1010

1111
pytest_plugins = [
12+
"pytest_simcore.faker_projects_data",
1213
"pytest_simcore.pydantic_models",
1314
"pytest_simcore.pytest_global_environs",
1415
"pytest_simcore.repository_paths",

packages/models-library/tests/test_utils_nodes.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@
1616
from models_library.utils.nodes import compute_node_hash
1717
from pydantic import AnyUrl, parse_obj_as
1818

19-
20-
@pytest.fixture()
21-
def node_id() -> NodeID:
22-
return uuid4()
23-
24-
2519
ANOTHER_NODE_ID = uuid4()
2620
ANOTHER_NODE_OUTPUT_KEY = "the_output_link"
2721
ANOTHER_NODE_PAYLOAD = {"outputs": {ANOTHER_NODE_OUTPUT_KEY: 36}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
"""improve foreign key dependencies
2+
3+
Revision ID: 10729e07000d
4+
Revises: 47ca7335e146
5+
Create Date: 2024-09-24 07:52:20.253076+00:00
6+
7+
"""
8+
from alembic import op
9+
10+
# revision identifiers, used by Alembic.
11+
revision = "10729e07000d"
12+
down_revision = "47ca7335e146"
13+
branch_labels = None
14+
depends_on = None
15+
16+
17+
def upgrade():
18+
# ### commands auto generated by Alembic - please adjust! ###
19+
op.create_foreign_key(
20+
"fk_rut_pricing_plan_to_service_key_and_version",
21+
"resource_tracker_pricing_plan_to_service",
22+
"services_meta_data",
23+
["service_key", "service_version"],
24+
["key", "version"],
25+
onupdate="CASCADE",
26+
ondelete="CASCADE",
27+
)
28+
op.drop_index(
29+
"ix_resource_tracker_pricing_plans_product_name",
30+
table_name="resource_tracker_pricing_plans",
31+
)
32+
op.create_foreign_key(
33+
"fk_rut_pricing_plans_product_name",
34+
"resource_tracker_pricing_plans",
35+
"products",
36+
["product_name"],
37+
["name"],
38+
onupdate="CASCADE",
39+
ondelete="CASCADE",
40+
)
41+
op.create_foreign_key(
42+
"fk_resource_tracker_pricing_units_costs_pricing_plan_id",
43+
"resource_tracker_pricing_unit_costs",
44+
"resource_tracker_pricing_plans",
45+
["pricing_plan_id"],
46+
["pricing_plan_id"],
47+
onupdate="CASCADE",
48+
ondelete="CASCADE",
49+
)
50+
op.create_foreign_key(
51+
"fk_resource_tracker_pricing_units_costs_pricing_unit_id",
52+
"resource_tracker_pricing_unit_costs",
53+
"resource_tracker_pricing_units",
54+
["pricing_unit_id"],
55+
["pricing_unit_id"],
56+
onupdate="CASCADE",
57+
ondelete="CASCADE",
58+
)
59+
op.create_foreign_key(
60+
"fk_wallets_product_name",
61+
"wallets",
62+
"products",
63+
["product_name"],
64+
["name"],
65+
onupdate="CASCADE",
66+
ondelete="CASCADE",
67+
)
68+
op.create_foreign_key(
69+
"fk_workspaces_product_name",
70+
"workspaces",
71+
"products",
72+
["product_name"],
73+
["name"],
74+
onupdate="CASCADE",
75+
ondelete="CASCADE",
76+
)
77+
# ### end Alembic commands ###
78+
79+
80+
def downgrade():
81+
# ### commands auto generated by Alembic - please adjust! ###
82+
op.drop_constraint("fk_workspaces_product_name", "workspaces", type_="foreignkey")
83+
op.drop_constraint("fk_wallets_product_name", "wallets", type_="foreignkey")
84+
op.drop_constraint(
85+
"fk_resource_tracker_pricing_units_costs_pricing_unit_id",
86+
"resource_tracker_pricing_unit_costs",
87+
type_="foreignkey",
88+
)
89+
op.drop_constraint(
90+
"fk_resource_tracker_pricing_units_costs_pricing_plan_id",
91+
"resource_tracker_pricing_unit_costs",
92+
type_="foreignkey",
93+
)
94+
op.drop_constraint(
95+
"fk_rut_pricing_plans_product_name",
96+
"resource_tracker_pricing_plans",
97+
type_="foreignkey",
98+
)
99+
op.create_index(
100+
"ix_resource_tracker_pricing_plans_product_name",
101+
"resource_tracker_pricing_plans",
102+
["product_name"],
103+
unique=False,
104+
)
105+
op.drop_constraint(
106+
"fk_rut_pricing_plan_to_service_key_and_version",
107+
"resource_tracker_pricing_plan_to_service",
108+
type_="foreignkey",
109+
)
110+
# ### end Alembic commands ###

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,11 @@
4545
doc="Option to mark default pricing plan for the service (ex. when there are more pricing plans for the same service)",
4646
),
4747
# ---------------------------
48+
sa.ForeignKeyConstraint(
49+
["service_key", "service_version"],
50+
["services_meta_data.key", "services_meta_data.version"],
51+
name="fk_rut_pricing_plan_to_service_key_and_version",
52+
onupdate="CASCADE",
53+
ondelete="CASCADE",
54+
),
4855
)

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,14 @@ class PricingPlanClassification(str, enum.Enum):
3333
sa.Column(
3434
"product_name",
3535
sa.String,
36+
sa.ForeignKey(
37+
"products.name",
38+
onupdate="CASCADE",
39+
ondelete="CASCADE",
40+
name="fk_rut_pricing_plans_product_name",
41+
),
3642
nullable=False,
37-
doc="Product name",
38-
index=True,
43+
doc="Products unique name",
3944
),
4045
sa.Column(
4146
"display_name",

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@
2222
sa.Column(
2323
"pricing_plan_id",
2424
sa.BigInteger,
25+
sa.ForeignKey(
26+
"resource_tracker_pricing_plans.pricing_plan_id",
27+
name="fk_resource_tracker_pricing_units_costs_pricing_plan_id",
28+
onupdate="CASCADE",
29+
ondelete="CASCADE",
30+
),
2531
nullable=False,
26-
doc="Parent pricing plan",
32+
doc="Foreign key to pricing plan",
2733
index=True,
2834
),
2935
sa.Column(
@@ -35,8 +41,14 @@
3541
sa.Column(
3642
"pricing_unit_id",
3743
sa.BigInteger,
44+
sa.ForeignKey(
45+
"resource_tracker_pricing_units.pricing_unit_id",
46+
name="fk_resource_tracker_pricing_units_costs_pricing_unit_id",
47+
onupdate="CASCADE",
48+
ondelete="CASCADE",
49+
),
3850
nullable=False,
39-
doc="Parent pricing unit",
51+
doc="Foreign key to pricing unit",
4052
index=True,
4153
),
4254
sa.Column(

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,18 @@ class WalletStatus(str, enum.Enum):
5050
),
5151
column_created_datetime(timezone=True),
5252
column_modified_datetime(timezone=True),
53-
sa.Column("product_name", sa.String, nullable=False, doc="Product name"),
53+
sa.Column(
54+
"product_name",
55+
sa.String,
56+
sa.ForeignKey(
57+
"products.name",
58+
onupdate="CASCADE",
59+
ondelete="CASCADE",
60+
name="fk_wallets_product_name",
61+
),
62+
nullable=False,
63+
doc="Products unique name",
64+
),
5465
)
5566

5667
# ------------------------ TRIGGERS

0 commit comments

Comments
 (0)