Skip to content

Commit dbcc9a6

Browse files
authored
♻️✨dv2 cli command for node close/cleanup (ITISFoundation#3430)
1 parent 8b8621d commit dbcc9a6

File tree

21 files changed

+1228
-167
lines changed

21 files changed

+1228
-167
lines changed

services/director-v2/openapi.json

Lines changed: 206 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@
66
"version": "2.1.0"
77
},
88
"servers": [
9+
{
10+
"url": "/",
11+
"description": "Default server: requests directed to serving url"
12+
},
913
{
1014
"url": "http://{host}:{port}",
11-
"description": "Development server",
15+
"description": "Development server: can configure any base url",
1216
"variables": {
1317
"host": {
1418
"default": "127.0.0.1"
@@ -1541,6 +1545,194 @@
15411545
}
15421546
}
15431547
}
1548+
},
1549+
"/v2/dynamic_scheduler/{node_uuid}/containers": {
1550+
"delete": {
1551+
"tags": [
1552+
"dynamic scheduler"
1553+
],
1554+
"summary": "Remove Service Containers",
1555+
"operationId": "remove_service_containers_v2_dynamic_scheduler__node_uuid__containers_delete",
1556+
"parameters": [
1557+
{
1558+
"required": true,
1559+
"schema": {
1560+
"title": "Node Uuid",
1561+
"type": "string",
1562+
"format": "uuid"
1563+
},
1564+
"name": "node_uuid",
1565+
"in": "path"
1566+
}
1567+
],
1568+
"responses": {
1569+
"202": {
1570+
"description": "Successful Response",
1571+
"content": {
1572+
"application/json": {
1573+
"schema": {
1574+
"title": "Response Remove Service Containers V2 Dynamic Scheduler Node Uuid Containers Delete",
1575+
"type": "string"
1576+
}
1577+
}
1578+
}
1579+
},
1580+
"409": {
1581+
"description": "Task already running, cannot start a new one"
1582+
},
1583+
"422": {
1584+
"description": "Validation Error",
1585+
"content": {
1586+
"application/json": {
1587+
"schema": {
1588+
"$ref": "#/components/schemas/HTTPValidationError"
1589+
}
1590+
}
1591+
}
1592+
}
1593+
}
1594+
}
1595+
},
1596+
"/v2/dynamic_scheduler/{node_uuid}/state:save": {
1597+
"post": {
1598+
"tags": [
1599+
"dynamic scheduler"
1600+
],
1601+
"summary": "Save Service State",
1602+
"operationId": "save_service_state_v2_dynamic_scheduler__node_uuid__state_save_post",
1603+
"parameters": [
1604+
{
1605+
"required": true,
1606+
"schema": {
1607+
"title": "Node Uuid",
1608+
"type": "string",
1609+
"format": "uuid"
1610+
},
1611+
"name": "node_uuid",
1612+
"in": "path"
1613+
}
1614+
],
1615+
"responses": {
1616+
"202": {
1617+
"description": "Successful Response",
1618+
"content": {
1619+
"application/json": {
1620+
"schema": {
1621+
"title": "Response Save Service State V2 Dynamic Scheduler Node Uuid State Save Post",
1622+
"type": "string"
1623+
}
1624+
}
1625+
}
1626+
},
1627+
"409": {
1628+
"description": "Task already running, cannot start a new one"
1629+
},
1630+
"422": {
1631+
"description": "Validation Error",
1632+
"content": {
1633+
"application/json": {
1634+
"schema": {
1635+
"$ref": "#/components/schemas/HTTPValidationError"
1636+
}
1637+
}
1638+
}
1639+
}
1640+
}
1641+
}
1642+
},
1643+
"/v2/dynamic_scheduler/{node_uuid}/outputs:push": {
1644+
"post": {
1645+
"tags": [
1646+
"dynamic scheduler"
1647+
],
1648+
"summary": "Push Service Outputs",
1649+
"operationId": "push_service_outputs_v2_dynamic_scheduler__node_uuid__outputs_push_post",
1650+
"parameters": [
1651+
{
1652+
"required": true,
1653+
"schema": {
1654+
"title": "Node Uuid",
1655+
"type": "string",
1656+
"format": "uuid"
1657+
},
1658+
"name": "node_uuid",
1659+
"in": "path"
1660+
}
1661+
],
1662+
"responses": {
1663+
"202": {
1664+
"description": "Successful Response",
1665+
"content": {
1666+
"application/json": {
1667+
"schema": {
1668+
"title": "Response Push Service Outputs V2 Dynamic Scheduler Node Uuid Outputs Push Post",
1669+
"type": "string"
1670+
}
1671+
}
1672+
}
1673+
},
1674+
"409": {
1675+
"description": "Task already running, cannot start a new one"
1676+
},
1677+
"422": {
1678+
"description": "Validation Error",
1679+
"content": {
1680+
"application/json": {
1681+
"schema": {
1682+
"$ref": "#/components/schemas/HTTPValidationError"
1683+
}
1684+
}
1685+
}
1686+
}
1687+
}
1688+
}
1689+
},
1690+
"/v2/dynamic_scheduler/{node_uuid}/docker-resources": {
1691+
"delete": {
1692+
"tags": [
1693+
"dynamic scheduler"
1694+
],
1695+
"summary": "Cleanup Service Docker Resources",
1696+
"operationId": "cleanup_service_docker_resources_v2_dynamic_scheduler__node_uuid__docker_resources_delete",
1697+
"parameters": [
1698+
{
1699+
"required": true,
1700+
"schema": {
1701+
"title": "Node Uuid",
1702+
"type": "string",
1703+
"format": "uuid"
1704+
},
1705+
"name": "node_uuid",
1706+
"in": "path"
1707+
}
1708+
],
1709+
"responses": {
1710+
"202": {
1711+
"description": "Successful Response",
1712+
"content": {
1713+
"application/json": {
1714+
"schema": {
1715+
"title": "Response Cleanup Service Docker Resources V2 Dynamic Scheduler Node Uuid Docker Resources Delete",
1716+
"type": "string"
1717+
}
1718+
}
1719+
}
1720+
},
1721+
"409": {
1722+
"description": "Task already running, cannot start a new one"
1723+
},
1724+
"422": {
1725+
"description": "Validation Error",
1726+
"content": {
1727+
"application/json": {
1728+
"schema": {
1729+
"$ref": "#/components/schemas/HTTPValidationError"
1730+
}
1731+
}
1732+
}
1733+
}
1734+
}
1735+
}
15441736
}
15451737
},
15461738
"components": {
@@ -1982,6 +2174,11 @@
19822174
"description": "if True the computation pipeline will start right away",
19832175
"default": false
19842176
},
2177+
"product_name": {
2178+
"title": "Product Name",
2179+
"type": "string",
2180+
"description": "required if computation is started"
2181+
},
19852182
"subgraph": {
19862183
"title": "Subgraph",
19872184
"type": "array",
@@ -3267,7 +3464,14 @@
32673464
"title": "Location",
32683465
"type": "array",
32693466
"items": {
3270-
"type": "string"
3467+
"anyOf": [
3468+
{
3469+
"type": "string"
3470+
},
3471+
{
3472+
"type": "integer"
3473+
}
3474+
]
32713475
}
32723476
},
32733477
"msg": {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from fastapi import Request
2+
3+
from ...core.settings import DynamicSidecarSettings
4+
from ...modules.dynamic_sidecar.api_client import DynamicSidecarClient
5+
from ...modules.dynamic_sidecar.scheduler import DynamicSidecarsScheduler
6+
7+
8+
def get_dynamic_sidecar_client(request: Request) -> DynamicSidecarClient:
9+
return request.app.state.dynamic_sidecar_api_client
10+
11+
12+
def get_dynamic_sidecar_scheduler(request: Request) -> DynamicSidecarsScheduler:
13+
return request.app.state.dynamic_sidecar_scheduler
14+
15+
16+
def get_dynamic_sidecar_settings(request: Request) -> DynamicSidecarSettings:
17+
return request.app.state.settings.DYNAMIC_SERVICES.DYNAMIC_SIDECAR

services/director-v2/src/simcore_service_director_v2/api/entrypoints.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
clusters,
66
computations,
77
computations_tasks,
8+
dynamic_scheduler,
89
dynamic_services,
910
health,
1011
meta,
@@ -39,6 +40,11 @@
3940
)
4041
v2_router.include_router(clusters.router, tags=["clusters"], prefix="/clusters")
4142

43+
v2_router.include_router(
44+
dynamic_scheduler.router, tags=["dynamic scheduler"], prefix="/dynamic_scheduler"
45+
)
46+
47+
4248
# root
4349
api_router = APIRouter()
4450
api_router.include_router(meta_router)

0 commit comments

Comments
 (0)