Skip to content

Commit 78771ae

Browse files
authored
Merge branch 'master' into pr-osparc-port-change-notifications
2 parents 12e72b7 + 24b7dd5 commit 78771ae

File tree

69 files changed

+2460
-3784
lines changed

Some content is hidden

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

69 files changed

+2460
-3784
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 ###
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
"""remove old folders
2+
3+
Revision ID: 47ca7335e146
4+
Revises: 9f381dcb9b95
5+
Create Date: 2024-09-17 11:54:39.600025+00:00
6+
7+
"""
8+
import sqlalchemy as sa
9+
from alembic import op
10+
from sqlalchemy.dialects import postgresql
11+
12+
# revision identifiers, used by Alembic.
13+
revision = "47ca7335e146"
14+
down_revision = "9f381dcb9b95"
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade():
20+
# ### commands auto generated by Alembic - please adjust! ###
21+
op.drop_table("folders_to_projects")
22+
op.drop_table("folders_access_rights")
23+
op.drop_table("folders")
24+
# ### end Alembic commands ###
25+
26+
27+
def downgrade():
28+
# ### commands auto generated by Alembic - please adjust! ###
29+
op.create_table(
30+
"folders",
31+
sa.Column(
32+
"id",
33+
sa.BIGINT(),
34+
server_default=sa.text("nextval('folders_id_seq'::regclass)"),
35+
autoincrement=True,
36+
nullable=False,
37+
),
38+
sa.Column("name", sa.VARCHAR(), autoincrement=False, nullable=False),
39+
sa.Column(
40+
"description",
41+
sa.VARCHAR(),
42+
server_default=sa.text("''::character varying"),
43+
autoincrement=False,
44+
nullable=False,
45+
),
46+
sa.Column("created_by", sa.BIGINT(), autoincrement=False, nullable=True),
47+
sa.Column(
48+
"created",
49+
postgresql.TIMESTAMP(timezone=True),
50+
server_default=sa.text("now()"),
51+
autoincrement=False,
52+
nullable=False,
53+
),
54+
sa.Column(
55+
"modified",
56+
postgresql.TIMESTAMP(timezone=True),
57+
server_default=sa.text("now()"),
58+
autoincrement=False,
59+
nullable=False,
60+
),
61+
sa.Column("product_name", sa.VARCHAR(), autoincrement=False, nullable=False),
62+
sa.ForeignKeyConstraint(
63+
["created_by"],
64+
["groups.gid"],
65+
name="fk_folders_to_groups_gid",
66+
ondelete="SET NULL",
67+
),
68+
sa.ForeignKeyConstraint(
69+
["product_name"],
70+
["products.name"],
71+
name="fk_folders_to_products_name",
72+
onupdate="CASCADE",
73+
ondelete="CASCADE",
74+
),
75+
sa.PrimaryKeyConstraint("id", name="folders_pkey"),
76+
postgresql_ignore_search_path=False,
77+
)
78+
op.create_table(
79+
"folders_access_rights",
80+
sa.Column("folder_id", sa.BIGINT(), autoincrement=False, nullable=False),
81+
sa.Column("gid", sa.BIGINT(), autoincrement=False, nullable=False),
82+
sa.Column(
83+
"traversal_parent_id", sa.BIGINT(), autoincrement=False, nullable=True
84+
),
85+
sa.Column(
86+
"original_parent_id", sa.BIGINT(), autoincrement=False, nullable=True
87+
),
88+
sa.Column("read", sa.BOOLEAN(), autoincrement=False, nullable=False),
89+
sa.Column("write", sa.BOOLEAN(), autoincrement=False, nullable=False),
90+
sa.Column("delete", sa.BOOLEAN(), autoincrement=False, nullable=False),
91+
sa.Column(
92+
"created",
93+
postgresql.TIMESTAMP(timezone=True),
94+
server_default=sa.text("now()"),
95+
autoincrement=False,
96+
nullable=False,
97+
),
98+
sa.Column(
99+
"modified",
100+
postgresql.TIMESTAMP(timezone=True),
101+
server_default=sa.text("now()"),
102+
autoincrement=False,
103+
nullable=False,
104+
),
105+
sa.ForeignKeyConstraint(
106+
["folder_id"],
107+
["folders.id"],
108+
name="fk_folders_access_rights_to_folders_id",
109+
onupdate="CASCADE",
110+
ondelete="CASCADE",
111+
),
112+
sa.ForeignKeyConstraint(
113+
["gid"],
114+
["groups.gid"],
115+
name="fk_folders_access_rights_to_groups_gid",
116+
onupdate="CASCADE",
117+
ondelete="CASCADE",
118+
),
119+
sa.ForeignKeyConstraint(
120+
["original_parent_id"],
121+
["folders.id"],
122+
name="fk_folders_to_folders_id_via_original_parent_id",
123+
ondelete="SET NULL",
124+
),
125+
sa.ForeignKeyConstraint(
126+
["traversal_parent_id"],
127+
["folders.id"],
128+
name="fk_folders_to_folders_id_via_traversal_parent_id",
129+
ondelete="SET NULL",
130+
),
131+
sa.PrimaryKeyConstraint("folder_id", "gid", name="folders_access_rights_pk"),
132+
)
133+
op.create_table(
134+
"folders_to_projects",
135+
sa.Column("folder_id", sa.BIGINT(), autoincrement=False, nullable=False),
136+
sa.Column("project_uuid", sa.VARCHAR(), autoincrement=False, nullable=False),
137+
sa.Column(
138+
"created",
139+
postgresql.TIMESTAMP(timezone=True),
140+
server_default=sa.text("now()"),
141+
autoincrement=False,
142+
nullable=False,
143+
),
144+
sa.Column(
145+
"modified",
146+
postgresql.TIMESTAMP(timezone=True),
147+
server_default=sa.text("now()"),
148+
autoincrement=False,
149+
nullable=False,
150+
),
151+
sa.ForeignKeyConstraint(
152+
["folder_id"],
153+
["folders.id"],
154+
name="fk_folders_to_projects_to_folders_id",
155+
onupdate="CASCADE",
156+
ondelete="CASCADE",
157+
),
158+
sa.ForeignKeyConstraint(
159+
["project_uuid"],
160+
["projects.uuid"],
161+
name="fk_folders_to_projects_to_projects_uuid",
162+
onupdate="CASCADE",
163+
ondelete="CASCADE",
164+
),
165+
sa.PrimaryKeyConstraint(
166+
"folder_id", "project_uuid", name="projects_to_folder_pk"
167+
),
168+
)
169+
# ### end Alembic commands ###

0 commit comments

Comments
 (0)