intellif-aihub 0.1.5__py3-none-any.whl → 0.1.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of intellif-aihub might be problematic. Click here for more details.

Files changed (34) hide show
  1. aihub/__init__.py +1 -1
  2. aihub/client.py +35 -12
  3. aihub/models/data_warehouse.py +95 -0
  4. aihub/models/dataset_management.py +99 -61
  5. aihub/models/document_center.py +26 -18
  6. aihub/models/eval.py +20 -11
  7. aihub/models/labelfree.py +12 -38
  8. aihub/models/model_center.py +141 -0
  9. aihub/models/model_training_platform.py +182 -149
  10. aihub/models/quota_schedule_management.py +196 -150
  11. aihub/models/tag_resource_management.py +30 -24
  12. aihub/models/task_center.py +43 -38
  13. aihub/models/user_system.py +159 -125
  14. aihub/models/workflow_center.py +461 -0
  15. aihub/services/artifact.py +22 -15
  16. aihub/services/data_warehouse.py +97 -0
  17. aihub/services/dataset_management.py +142 -23
  18. aihub/services/document_center.py +24 -5
  19. aihub/services/eval.py +14 -7
  20. aihub/services/labelfree.py +11 -0
  21. aihub/services/model_center.py +183 -0
  22. aihub/services/model_training_platform.py +132 -59
  23. aihub/services/quota_schedule_management.py +104 -7
  24. aihub/services/tag_resource_management.py +33 -2
  25. aihub/services/task_center.py +23 -9
  26. aihub/services/user_system.py +237 -2
  27. aihub/services/workflow_center.py +522 -0
  28. aihub/utils/download.py +19 -3
  29. {intellif_aihub-0.1.5.dist-info → intellif_aihub-0.1.7.dist-info}/METADATA +4 -4
  30. intellif_aihub-0.1.7.dist-info/RECORD +42 -0
  31. intellif_aihub-0.1.5.dist-info/RECORD +0 -36
  32. {intellif_aihub-0.1.5.dist-info → intellif_aihub-0.1.7.dist-info}/WHEEL +0 -0
  33. {intellif_aihub-0.1.5.dist-info → intellif_aihub-0.1.7.dist-info}/licenses/LICENSE +0 -0
  34. {intellif_aihub-0.1.5.dist-info → intellif_aihub-0.1.7.dist-info}/top_level.txt +0 -0
@@ -1,239 +1,285 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from enum import IntEnum
3
4
  from typing import List, Optional
4
5
 
5
6
  from pydantic import BaseModel, Field
6
7
 
7
8
 
8
9
  class Env(BaseModel):
9
- key: str
10
- value: str
10
+ """环境变量"""
11
+ key: str = Field(description="变量名")
12
+ value: str = Field(description="变量值")
11
13
 
12
14
 
13
15
  class Sku(BaseModel):
14
- cpu: int
15
- gpu: int
16
- memory: int
16
+ """sku"""
17
+ cpu: int = Field(description="CPU数")
18
+ gpu: int = Field(description="GPU数")
19
+ memory: int = Field(description="内存GiB")
17
20
 
18
21
 
19
22
  class VirtualCluster(BaseModel):
20
- id: int
21
- name: str
22
- gpu_type: str = Field(alias="gpu_type")
23
- label: str
24
- sku: Sku
23
+ """虚拟集群"""
24
+ id: int = Field(description="ID")
25
+ name: str = Field(description="名称")
26
+ gpu_type: str = Field(alias="gpu_type", description="GPU类型,A800/4090/3090/2080")
27
+ label: str = Field(description="标签")
28
+ sku: Sku = Field(description="SKU")
25
29
 
26
30
 
27
31
  class Storage(BaseModel):
28
- id: int
29
- name: str
30
- path: str
31
- server_path: str = Field(alias="server_path")
32
- server_host: str = Field(alias="server_host")
33
- server_type: str = Field(alias="server_type")
34
- permission: str
35
- description: str
32
+ """存储"""
33
+ id: int = Field(description="存储ID")
34
+ name: str = Field(description="存储名称")
35
+ path: str = Field(description="挂载路径")
36
+ server_path: str = Field(alias="server_path", description="服务器路径")
37
+ server_host: str = Field(alias="server_host", description="服务器地址")
38
+ server_type: str = Field(alias="server_type", description="服务器类型")
39
+ permission: str = Field(description="权限")
40
+ description: str = Field(description="说明")
36
41
 
37
42
 
38
43
  class Category(BaseModel):
39
- id: int
40
- name: str
44
+ """分类"""
45
+ id: int = Field(description="分类ID")
46
+ name: str = Field(description="分类名称")
41
47
 
42
48
 
43
49
  class Project(BaseModel):
44
- id: int
45
- name: str
46
- description: str
50
+ """项目"""
51
+ id: int = Field(description="项目ID")
52
+ name: str = Field(description="项目名称")
53
+ description: str = Field(description="项目描述")
47
54
 
48
55
 
49
56
  class User(BaseModel):
50
- id: int
51
- name: str
57
+ """用户"""
58
+ id: int = Field(description="用户ID")
59
+ name: str = Field(description="用户名")
52
60
 
53
61
 
54
62
  class SourceTask(BaseModel):
55
- id: int
56
- name: str
63
+ """来源任务"""
64
+ id: int = Field(description="来源任务ID")
65
+ name: str = Field(description="来源任务名称")
66
+
67
+
68
+ class TaskStatus(IntEnum):
69
+ """任务状态"""
70
+ Waiting = 1
71
+ Running = 2
72
+ Success = 3
73
+ Failed = 4
74
+ Stopped = 5
75
+ Stopping = 6
76
+
77
+
78
+ class PreemptPolicy(IntEnum):
79
+ """抢占策略"""
80
+ WAIT = 1 # 等待任务完成
81
+ STOP = 2 # 停止任务
57
82
 
58
83
 
59
84
  class CreateTaskRequest(BaseModel):
60
- priority: int
61
- framework: str
62
- name: str
63
- description: Optional[str] = None
64
- command: Optional[str] = None
65
- image: str
66
- virtual_cluster_id: int = Field(alias="virtual_cluster_id")
67
- sku_cnt: int = Field(alias="sku_cnt")
68
- enable_ssh: Optional[bool] = Field(False, alias="enable_ssh")
69
- envs: Optional[List[Env]] = Field(default_factory=list, alias="envs")
70
- storage_ids: Optional[List[int]] = Field(default_factory=list, alias="storage_ids")
71
- instances: int
72
- use_ib_network: Optional[bool] = Field(False, alias="use_ib_network")
73
- always_pull_image: Optional[bool] = Field(False, alias="always_pull_image")
74
- shm: Optional[int] = None
75
- category_id: int = Field(alias="category_id")
76
- project_id: int = Field(alias="project_id")
77
- estimate_run_time: Optional[int] = Field(None, alias="estimate_run_time")
78
- is_vip: Optional[bool] = Field(False, alias="is_vip")
79
- preempt_policy: Optional[int] = Field(None, alias="preempt_policy")
80
- vip_node_names: Optional[List[str]] = Field(default_factory=list, alias="vip_node_names")
81
- enable_reschedule: Optional[bool] = Field(False, alias="enable_reschedule")
85
+ """创建配额任务请求"""
86
+ priority: int = Field(description="优先级,1-低优先级,2-高优先级")
87
+ framework: str = Field(description="训练框架,如PyTorchJob/MpiJobMpiRun/MpiJobDeepspeed")
88
+ name: str = Field(description="任务名称")
89
+ description: Optional[str] = Field(None, description="任务描述")
90
+ command: Optional[str] = Field(None, description="命令")
91
+ image: str = Field(description="镜像")
92
+ virtual_cluster_id: int = Field(alias="virtual_cluster_id", description="虚拟集群ID")
93
+ sku_cnt: int = Field(alias="sku_cnt", description="sku数量")
94
+ enable_ssh: Optional[bool] = Field(False, alias="enable_ssh", description="SSH开启")
95
+ envs: Optional[List[Env]] = Field(default_factory=list, description="环境变量")
96
+ storage_ids: Optional[List[int]] = Field(default_factory=list, alias="storage_ids", description="挂载存储")
97
+ instances: int = Field(description="实例数")
98
+ use_ib_network: Optional[bool] = Field(False, alias="use_ib_network", description="是否使用IB网络")
99
+ always_pull_image: Optional[bool] = Field(False, alias="always_pull_image", description="每次拉镜像")
100
+ shm: Optional[int] = Field(None, description="共享内存MB")
101
+ category_id: int = Field(alias="category_id", description="分类ID")
102
+ project_id: int = Field(alias="project_id", description="项目ID")
103
+ estimate_run_time: Optional[int] = Field(None, alias="estimate_run_time", description="预计运行时长(s)")
104
+ enable_reschedule: Optional[bool] = Field(False, alias="enable_reschedule", description="启用失败重调度")
105
+
106
+ model_config = {"use_enum_values": True}
82
107
 
83
108
 
84
109
  class CreateTaskResponse(BaseModel):
85
- id: int
110
+ """创建配额任务返回"""
111
+ id: int = Field(description="任务ID")
86
112
 
87
113
 
88
114
  class Task(BaseModel):
89
- id: int
90
- priority: int
91
- mtp_id: int = Field(alias="mtp_id")
92
- framework: str
93
- name: str
94
- description: str
95
- command: str
96
- image: str
97
- virtual_cluster: VirtualCluster = Field(alias="virtual_cluster")
98
- sku_cnt: int = Field(alias="sku_cnt")
99
- enable_ssh: bool = Field(alias="enable_ssh")
100
- envs: Optional[List[Env]] = Field(default_factory=list, alias="envs")
101
- storages: Optional[List[Storage]] = Field(default_factory=list, alias="storages")
102
- instances: int
103
- created_at: int = Field(alias="created_at")
104
- username: str
105
- user_id: int = Field(alias="user_id")
106
- namespace: str
107
- res_name: str = Field(alias="res_name")
108
- status: int
109
- use_ib_network: bool = Field(alias="use_ib_network")
110
- always_pull_image: bool = Field(alias="always_pull_image")
111
- shm: int
112
- category: Category
113
- project: Project
114
- avg_gpu_util: float = Field(alias="avg_gpu_util")
115
- finished_at: int = Field(alias="finished_at")
116
- started_at: int = Field(alias="started_at")
117
- estimate_run_time: int = Field(alias="estimate_run_time")
118
- is_vip: bool = Field(alias="is_vip")
119
- cluster_partition: str = Field(alias="cluster_partition")
120
- preempt_policy: int = Field(alias="preempt_policy")
121
- vip_node_names: Optional[List[str]] = Field(None, alias="vip_node_names")
122
- stop_op_user: Optional[User] = Field(None, alias="stop_op_user")
123
- use_new_log: bool = Field(alias="use_new_log")
124
- is_quota_schedule: bool = Field(alias="is_quota_schedule")
125
- enable_reschedule: bool = Field(alias="enable_reschedule")
126
- remain_schedule_cnt: int = Field(alias="remain_schedule_cnt")
127
- source_task: Optional[SourceTask] = Field(None, alias="source_task")
115
+ """配额任务详情"""
116
+ id: int = Field(description="任务ID")
117
+ priority: int = Field(description="优先级,1-低优先级,2-高优先级")
118
+ mtp_id: int = Field(alias="mtp_id", description="训练平台关联ID")
119
+ framework: str = Field(description="框架")
120
+ name: str = Field(description="名称")
121
+ description: str = Field(description="描述")
122
+ command: str = Field(description="命令")
123
+ image: str = Field(description="镜像")
124
+ virtual_cluster: VirtualCluster = Field(alias="virtual_cluster", description="虚拟集群")
125
+ sku_cnt: int = Field(alias="sku_cnt", description="sku数量")
126
+ enable_ssh: bool = Field(alias="enable_ssh", description="SSH开启")
127
+ envs: Optional[List[Env]] = Field(default_factory=list, description="环境变量")
128
+ storages: Optional[List[Storage]] = Field(default_factory=list, description="挂载存储")
129
+ instances: int = Field(description="实例数")
130
+ created_at: int = Field(alias="created_at", description="创建时间")
131
+ username: str = Field(description="提交人")
132
+ user_id: int = Field(alias="user_id", description="提交人ID")
133
+ namespace: str = Field(description="K8s Namespace")
134
+ res_name: str = Field(alias="res_name", description="K8s 资源名")
135
+ status: TaskStatus = Field(description="状态")
136
+ use_ib_network: bool = Field(alias="use_ib_network", description="IB网络")
137
+ always_pull_image: bool = Field(alias="always_pull_image", description="每次拉镜像")
138
+ shm: int = Field(description="共享内存MB")
139
+ category: Category = Field(description="分类")
140
+ project: Project = Field(description="项目")
141
+ avg_gpu_util: float = Field(alias="avg_gpu_util", description="平均GPU利用率")
142
+ finished_at: int = Field(alias="finished_at", description="结束时间")
143
+ started_at: int = Field(alias="started_at", description="开始时间")
144
+ estimate_run_time: int = Field(alias="estimate_run_time", description="预计运行时长")
145
+ cluster_partition: str = Field(alias="cluster_partition", description="集群分区")
146
+ preempt_policy: PreemptPolicy = Field(alias="preempt_policy", description="抢占策略")
147
+ stop_op_user: Optional[User] = Field(None, alias="stop_op_user", description="停止操作人")
148
+ use_new_log: bool = Field(alias="use_new_log", description="新版日志")
149
+ is_quota_schedule: bool = Field(alias="is_quota_schedule", description="是否配额调度")
150
+ enable_reschedule: bool = Field(alias="enable_reschedule", description="允许重调度")
151
+ remain_schedule_cnt: int = Field(alias="remain_schedule_cnt", description="剩余可调度次数")
152
+ source_task: Optional[SourceTask] = Field(None, alias="source_task", description="来源任务")
153
+
154
+ model_config = {"use_enum_values": True}
128
155
 
129
156
 
130
157
  class ListTasksRequest(BaseModel):
131
- page_size: int = Field(20, alias="page_size")
132
- page_num: int = Field(1, alias="page_num")
133
- user_id: Optional[int] = Field(None, alias="user_id")
134
- name: Optional[str] = None
135
- virtual_cluster_id: Optional[int] = Field(None, alias="virtual_cluster_id")
136
- status: Optional[int] = None
137
- category_id: Optional[int] = Field(None, alias="category_id")
138
- project_id: Optional[int] = Field(None, alias="project_id")
139
- priority: Optional[int] = None
158
+ """查询任务列表请求"""
159
+ page_size: int = Field(20, alias="page_size", description="每页数量")
160
+ page_num: int = Field(1, alias="page_num", description="当前页码")
161
+ user_id: Optional[int] = Field(None, alias="user_id", description="用户过滤")
162
+ name: Optional[str] = Field(None, description="名称过滤")
163
+ virtual_cluster_id: Optional[int] = Field(None, alias="virtual_cluster_id", description="虚拟集群过滤")
164
+ status: Optional[TaskStatus] = Field(None, description="状态过滤")
165
+ category_id: Optional[int] = Field(None, alias="category_id", description="分类过滤")
166
+ project_id: Optional[int] = Field(None, alias="project_id", description="项目过滤")
167
+ priority: Optional[int] = Field(None, description="优先级过滤")
168
+
169
+ model_config = {"use_enum_values": True}
140
170
 
141
171
 
142
172
  class ListTasksResponse(BaseModel):
143
- total: int
144
- page_size: int = Field(alias="page_size")
145
- page_num: int = Field(alias="page_num")
146
- data: List[Task] = Field(default_factory=list)
173
+ """查询任务列表返回"""
174
+ total: int = Field(description="总条数")
175
+ page_size: int = Field(alias="page_size", description="每页数量")
176
+ page_num: int = Field(alias="page_num", description="当前页码")
177
+ data: List[Task] = Field(default_factory=list, description="任务列表")
147
178
 
148
179
 
149
180
  class Pod(BaseModel):
150
- id: int
151
- namespace: str
152
- name: str
153
- status: str
154
- created_at: int = Field(alias="created_at")
155
- started_at: int = Field(alias="started_at")
156
- finished_at: int = Field(alias="finished_at")
157
- host_ip: str = Field(alias="host_ip")
158
- node_name: str = Field(alias="node_name")
159
- ssh_port: int = Field(alias="ssh_port")
160
- ssh_info: str = Field(alias="ssh_info")
161
- use_new_log: bool = Field(alias="use_new_log")
181
+ """任务Pod"""
182
+ id: int = Field(description="ID")
183
+ namespace: str = Field(description="Namespace")
184
+ name: str = Field(description="名称")
185
+ status: str = Field(description="状态")
186
+ created_at: int = Field(alias="created_at", description="创建时间")
187
+ started_at: int = Field(alias="started_at", description="启动时间")
188
+ finished_at: int = Field(alias="finished_at", description="结束时间")
189
+ host_ip: str = Field(alias="host_ip", description="宿主机IP")
190
+ node_name: str = Field(alias="node_name", description="节点名")
191
+ ssh_port: int = Field(alias="ssh_port", description="SSH端口")
192
+ ssh_info: str = Field(alias="ssh_info", description="SSH连接信息")
193
+ use_new_log: bool = Field(alias="use_new_log", description="是否使用新版日志")
162
194
 
163
195
 
164
196
  class ListTaskPodsRequest(BaseModel):
165
- page_size: int = Field(20, alias="page_size")
166
- page_num: int = Field(1, alias="page_num")
197
+ """查询任务Pod列表请求"""
198
+ page_size: int = Field(20, alias="page_size", description="每页数量")
199
+ page_num: int = Field(1, alias="page_num", description="当前页码")
167
200
 
168
201
 
169
202
  class ListTaskPodsResponse(BaseModel):
170
- total: int
171
- page_size: int = Field(alias="page_size")
172
- page_num: int = Field(alias="page_num")
173
- data: List[Pod] = Field(default_factory=list)
203
+ """查询任务Pod列表返回"""
204
+ total: int = Field(description="总条数")
205
+ page_size: int = Field(alias="page_size", description="每页数量")
206
+ page_num: int = Field(alias="page_num", description="页码")
207
+ data: List[Pod] = Field(default_factory=list, description="Pod 列表")
174
208
 
175
209
 
176
210
  class PodLogInfo(BaseModel):
177
- name: str
178
- url: str
211
+ """pod日志信息"""
212
+ name: str = Field(description="日志名称")
213
+ url: str = Field(description="URL")
179
214
 
180
215
 
181
216
  class GetTaskPodLogsNewResponse(BaseModel):
182
- logs: List[PodLogInfo]
217
+ """查询任务Pod日志返回"""
218
+ logs: List[PodLogInfo] = Field(description="日志列表")
183
219
 
184
220
 
185
221
  class GetTaskPodSpecResponse(BaseModel):
186
- spec: str
222
+ """查询任务Pod Spec返回"""
223
+ spec: str = Field(description="Pod YAML Spec")
187
224
 
188
225
 
189
226
  class GetTaskPodEventsResponse(BaseModel):
190
- events: str
227
+ """查询任务Pod Event返回"""
228
+ events: str = Field(description="事件内容")
191
229
 
192
230
 
193
231
  class MachineOverview(BaseModel):
194
- high: int
195
- low: int
196
- free: int
232
+ """机器概况"""
233
+ high: int = Field(description="高优先级")
234
+ low: int = Field(description="低优先级")
235
+ free: int = Field(description="空闲")
197
236
 
198
237
 
199
238
  class HighPrioritySummary(BaseModel):
200
- group_id: int = Field(alias="group_id")
201
- group_name: str = Field(alias="group_name")
202
- used: int
203
- total: int
239
+ """高优先级概况"""
240
+ group_id: int = Field(alias="group_id", description="组ID")
241
+ group_name: str = Field(alias="group_name", description="组名称")
242
+ used: int = Field(description="已用GPU")
243
+ total: int = Field(description="总GPU")
204
244
 
205
245
 
206
246
  class MetricsOverview(BaseModel):
207
- vc_id: int = Field(alias="vc_id")
208
- vc_name: str = Field(alias="vc_name")
209
- machine: MachineOverview
210
- high_priority: List[HighPrioritySummary] = Field(alias="high_priority")
247
+ """指标概况"""
248
+ vc_id: int = Field(alias="vc_id", description="虚拟集群ID")
249
+ vc_name: str = Field(alias="vc_name", description="虚拟集群名称")
250
+ machine: MachineOverview = Field(description="机器概览")
251
+ high_priority: List[HighPrioritySummary] = Field(alias="high_priority", description="高优先级概览")
211
252
 
212
253
 
213
254
  class GetMetricsOverviewRequest(BaseModel):
214
- page_size: int = Field(20, alias="page_size")
215
- page_num: int = Field(1, alias="page_num")
255
+ """查询指标概况请求"""
256
+ page_size: int = Field(20, alias="page_size", description="每页数量")
257
+ page_num: int = Field(1, alias="page_num", description="当前页码")
216
258
 
217
259
 
218
260
  class GetMetricsOverviewResponse(BaseModel):
219
- total: int
220
- page_size: int = Field(alias="page_size")
221
- page_num: int = Field(alias="page_num")
222
- data: List[MetricsOverview] = Field(default_factory=list)
261
+ """查询指标概况返回"""
262
+ total: int = Field(description="总条数")
263
+ page_size: int = Field(alias="page_size", description="每页数量")
264
+ page_num: int = Field(alias="page_num", description="当前页码")
265
+ data: List[MetricsOverview] = Field(default_factory=list, description="指标列表")
223
266
 
224
267
 
225
268
  class TaskUser(BaseModel):
226
- user_id: int = Field(alias="user_id")
227
- username: str
269
+ """任务用户"""
270
+ user_id: int = Field(alias="user_id", description="用户ID")
271
+ username: str = Field(description="用户名")
228
272
 
229
273
 
230
274
  class ListTaskUsersRequest(BaseModel):
231
- page_size: int = Field(20, alias="page_size")
232
- page_num: int = Field(1, alias="page_num")
275
+ """查询任务用户列表请求"""
276
+ page_size: int = Field(20, alias="page_size", description="每页数量")
277
+ page_num: int = Field(1, alias="page_num", description="当前页码")
233
278
 
234
279
 
235
280
  class ListTaskUsersResponse(BaseModel):
236
- total: int
237
- page_size: int = Field(alias="page_size")
238
- page_num: int = Field(alias="page_num")
239
- data: List[TaskUser] = Field(default_factory=list)
281
+ """查询任务用户列表返回"""
282
+ total: int = Field(description="总条数")
283
+ page_size: int = Field(alias="page_size", description="每页数量")
284
+ page_num: int = Field(alias="page_num", description="页码")
285
+ data: List[TaskUser] = Field(default_factory=list, description="用户列表")
@@ -1,6 +1,3 @@
1
- # !/usr/bin/env python
2
- # -*-coding:utf-8 -*-
3
-
4
1
  from __future__ import annotations
5
2
 
6
3
  from typing import List, Optional
@@ -9,42 +6,51 @@ from pydantic import BaseModel, Field
9
6
 
10
7
 
11
8
  class Project(BaseModel):
12
- id: int
13
- name: str
9
+ """项目"""
10
+ id: int = Field(description="项目ID")
11
+ name: str = Field(description="项目名称")
14
12
 
15
13
 
16
14
  class ProjectListData(BaseModel):
17
- data: List[Project]
15
+ """项目列表数据"""
16
+ data: List[Project] = Field(description="项目列表")
18
17
 
19
18
 
20
19
  class SelectProjectsResponse(BaseModel):
21
- data: List[Project]
20
+ """选择项目返回"""
21
+ data: List[Project] = Field(description="项目列表")
22
22
 
23
23
 
24
24
  class SkuBrief(BaseModel):
25
- id: int
26
- description: str
27
- cpu: int
28
- memory: int
29
- gpu_type: int = Field(alias="gpu_type")
30
- gpu_memory: int = Field(alias="gpu_memory")
31
- network: int
32
- created_at: int = Field(alias="created_at")
25
+ """SKU信息"""
26
+ id: int = Field(description="SKU ID")
27
+ description: str = Field(description="SKU 描述")
28
+ cpu: int = Field(description="CPU 核数")
29
+ memory: int = Field(description="内存 GiB")
30
+ gpu_type: int = Field(alias="gpu_type", description="GPU类型,1-A800,2-4090,3-3090,4-2080,5-None")
31
+ gpu_memory: int = Field(alias="gpu_memory", description="GPU 显存 GiB")
32
+ network: int = Field(description="网络,0-Other,1-ROCE,2-IB")
33
+ created_at: int = Field(alias="created_at", description="创建时间戳(ms)")
33
34
 
34
35
 
35
36
  class VirtualClusterBrief(BaseModel):
36
- id: int
37
- name: str
38
- uuid: str
39
- sku: Optional[SkuBrief] = None
40
- created_at: int = Field(alias="created_at")
37
+ """虚拟集群信息"""
38
+ id: int = Field(description="虚拟集群ID")
39
+ name: str = Field(description="虚拟集群名称")
40
+ uuid: str = Field(description="虚拟集群UUID")
41
+ sku: Optional[SkuBrief] = Field(None, description="SKU")
42
+ created_at: int = Field(alias="created_at", description="创建时间戳(ms)")
41
43
 
42
44
 
43
45
  class SelectVirtualClustersRequest(BaseModel):
44
- user_id: int = Field(alias="user_id")
45
- module_type: Optional[int] = Field(None, alias="module_type")
46
- new_module_type: Optional[str] = Field(None, alias="new_module_type")
46
+ """选择虚拟集群请求"""
47
+ user_id: int = Field(alias="user_id", description="用户ID")
48
+ module_type: Optional[int] = Field(None, alias="module_type",
49
+ description="模块类型 (int),0-部署,1-训练,2-工作流,3-配额调度")
50
+ new_module_type: Optional[str] = Field(None, alias="new_module_type",
51
+ description="新版模块类型 (字符串),仅前端使用")
47
52
 
48
53
 
49
54
  class SelectVirtualClustersResponse(BaseModel):
50
- data: Optional[List[VirtualClusterBrief]] = Field(default_factory=list)
55
+ """选择虚拟集群返回"""
56
+ data: Optional[List[VirtualClusterBrief]] = Field(default_factory=list, description="虚拟集群列表")