yicloud-sdk-python 0.4.0__tar.gz → 0.4.1__tar.gz

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.
Files changed (89) hide show
  1. {yicloud_sdk_python-0.4.0/yicloud_sdk_python.egg-info → yicloud_sdk_python-0.4.1}/PKG-INFO +1 -1
  2. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/pyproject.toml +1 -1
  3. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/version.py +1 -1
  4. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/__init__.py +1 -1
  5. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/job/__init__.py +3 -0
  6. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/job/actions.py +32 -4
  7. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/job/models.py +19 -4
  8. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/workspace/actions.py +10 -6
  9. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1/yicloud_sdk_python.egg-info}/PKG-INFO +1 -1
  10. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/LICENSE +0 -0
  11. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/README.md +0 -0
  12. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/setup.cfg +0 -0
  13. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/__init__.py +0 -0
  14. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/auth/__init__.py +0 -0
  15. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/auth/credential.py +0 -0
  16. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/auth/sign.py +0 -0
  17. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/client.py +0 -0
  18. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/config.py +0 -0
  19. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/errs/__init__.py +0 -0
  20. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/log/__init__.py +0 -0
  21. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/log/logger.py +0 -0
  22. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/log/std.py +0 -0
  23. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/msgs/__init__.py +0 -0
  24. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/utils/__init__.py +0 -0
  25. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/utils/helps.py +0 -0
  26. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/utils/retry/__init__.py +0 -0
  27. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/base/utils/retry/retry.py +0 -0
  28. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/__init__.py +0 -0
  29. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/bc/__init__.py +0 -0
  30. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/bc/actions.py +0 -0
  31. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/bc/client.py +0 -0
  32. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/bc/models.py +0 -0
  33. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/dataset/__init__.py +0 -0
  34. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/dataset/actions.py +0 -0
  35. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/dataset/client.py +0 -0
  36. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/dataset/models.py +0 -0
  37. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/fs/__init__.py +0 -0
  38. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/fs/actions.py +0 -0
  39. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/fs/client.py +0 -0
  40. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/fs/models.py +0 -0
  41. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/iam/__init__.py +0 -0
  42. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/iam/actions.py +0 -0
  43. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/iam/client.py +0 -0
  44. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/iam/models.py +0 -0
  45. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/inferset/__init__.py +0 -0
  46. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/inferset/actions.py +0 -0
  47. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/inferset/client.py +0 -0
  48. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/inferset/models.py +0 -0
  49. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/job/client.py +0 -0
  50. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/mc/__init__.py +0 -0
  51. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/mc/actions.py +0 -0
  52. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/mc/client.py +0 -0
  53. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/mc/models.py +0 -0
  54. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/modelrepo/__init__.py +0 -0
  55. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/modelrepo/actions.py +0 -0
  56. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/modelrepo/client.py +0 -0
  57. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/modelrepo/models.py +0 -0
  58. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/monitor/__init__.py +0 -0
  59. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/monitor/actions.py +0 -0
  60. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/monitor/client.py +0 -0
  61. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/monitor/models.py +0 -0
  62. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/oss/__init__.py +0 -0
  63. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/oss/actions.py +0 -0
  64. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/oss/client.py +0 -0
  65. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/oss/models.py +0 -0
  66. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/ray/__init__.py +0 -0
  67. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/ray/actions.py +0 -0
  68. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/ray/client.py +0 -0
  69. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/ray/models.py +0 -0
  70. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/registry/__init__.py +0 -0
  71. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/registry/actions.py +0 -0
  72. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/registry/client.py +0 -0
  73. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/registry/models.py +0 -0
  74. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/sandbox/__init__.py +0 -0
  75. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/sandbox/actions.py +0 -0
  76. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/sandbox/client.py +0 -0
  77. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/sandbox/models.py +0 -0
  78. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/volume/__init__.py +0 -0
  79. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/volume/actions.py +0 -0
  80. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/volume/client.py +0 -0
  81. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/volume/models.py +0 -0
  82. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/workspace/__init__.py +0 -0
  83. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/workspace/client.py +0 -0
  84. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud/services/workspace/models.py +0 -0
  85. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud_sdk_python.egg-info/SOURCES.txt +0 -0
  86. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud_sdk_python.egg-info/dependency_links.txt +0 -0
  87. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud_sdk_python.egg-info/not-zip-safe +0 -0
  88. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud_sdk_python.egg-info/requires.txt +0 -0
  89. {yicloud_sdk_python-0.4.0 → yicloud_sdk_python-0.4.1}/yicloud_sdk_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yicloud-sdk-python
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: YiCloud OpenAPI SDK for Python
5
5
  Author: YiCloud
6
6
  Project-URL: Homepage, https://gitee.com/yicloud-team/openapi-sdk-python
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "yicloud-sdk-python"
7
- version = "0.4.0"
7
+ version = "0.4.1"
8
8
  description = "YiCloud OpenAPI SDK for Python"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.7"
@@ -1,4 +1,4 @@
1
- __version__ = "0.4.0"
1
+ __version__ = "0.4.1"
2
2
 
3
3
 
4
4
  def Version() -> str:
@@ -4,4 +4,4 @@ YiCloud Python SDK
4
4
  A Python SDK for the YiCloud OpenAPI service.
5
5
  """
6
6
 
7
- __version__ = "0.4.0"
7
+ __version__ = "0.4.1"
@@ -12,6 +12,7 @@ from .actions import (
12
12
  edit_job,
13
13
  batch_delete_jobs,
14
14
  batch_stop_jobs,
15
+ stop_job,
15
16
  stop_replica,
16
17
  get_logs,
17
18
  get_logs_volume,
@@ -25,6 +26,7 @@ from .actions import (
25
26
  edit_job_async,
26
27
  batch_delete_jobs_async,
27
28
  batch_stop_jobs_async,
29
+ stop_job_async,
28
30
  stop_replica_async,
29
31
  get_logs_async,
30
32
  get_logs_volume_async,
@@ -75,6 +77,7 @@ from .models import (
75
77
  S3Config,
76
78
  CreateJobReqS3Config,
77
79
  CreateJobReqSelfHealConfig,
80
+ StopJobReq,
78
81
  StopReplicaReq,
79
82
  CreateJobReqTaskSpec,
80
83
  TaskSpecResponse,
@@ -109,7 +109,7 @@ JobUid 可从 ListJobs / GetJob 接口返回的 Uid 字段获取。
109
109
 
110
110
  def create_job(ctx: Optional[dict], req: models.CreateJobReq) -> models.CreateJobData:
111
111
  """创建 Job
112
- 创建新的训练任务,支持配置自愈选项、多任务规格和调度策略
112
+ 创建新的训练任务,支持配置自愈选项、多任务规格和调度策略。创建前会校验租户状态与 SKU 余额,可能返回 1001012、1001013、1001014。
113
113
  POST /job/v1alpha1/CreateJob
114
114
  Action: CreateJob
115
115
 
@@ -124,7 +124,7 @@ def create_job(ctx: Optional[dict], req: models.CreateJobReq) -> models.CreateJo
124
124
 
125
125
  async def create_job_async(ctx: Optional[dict], req: models.CreateJobReq) -> models.CreateJobData:
126
126
  """创建 Job(异步)
127
- 创建新的训练任务,支持配置自愈选项、多任务规格和调度策略
127
+ 创建新的训练任务,支持配置自愈选项、多任务规格和调度策略。创建前会校验租户状态与 SKU 余额,可能返回 1001012、1001013、1001014。
128
128
  POST /job/v1alpha1/CreateJob
129
129
  Action: CreateJob
130
130
 
@@ -223,6 +223,34 @@ async def batch_stop_jobs_async(ctx: Optional[dict], req: models.BatchStopJobsRe
223
223
  return rsp.get_typed_data()
224
224
 
225
225
 
226
+ def stop_job(ctx: Optional[dict], req: models.StopJobReq):
227
+ """停止 Job
228
+ 停止运行中的 Job
229
+ POST /job/v1alpha1/StopJob
230
+ Action: StopJob
231
+
232
+
233
+ Raises YiCloudException on error.
234
+ """
235
+ path = f"/{_PRODUCT_CODE}/{_LAST_VERSION}/StopJob"
236
+ rsp = msgs.Rsp[None].empty()
237
+ client.base.post(ctx, path, {k: v for k, v in req.__dict__.items() if v is not None}, rsp)
238
+
239
+
240
+ async def stop_job_async(ctx: Optional[dict], req: models.StopJobReq):
241
+ """停止 Job(异步)
242
+ 停止运行中的 Job
243
+ POST /job/v1alpha1/StopJob
244
+ Action: StopJob
245
+
246
+
247
+ Raises YiCloudException on error.
248
+ """
249
+ path = f"/{_PRODUCT_CODE}/{_LAST_VERSION}/StopJob"
250
+ rsp = msgs.Rsp[None].empty()
251
+ await client.base.post_async(ctx, path, {k: v for k, v in req.__dict__.items() if v is not None}, rsp)
252
+
253
+
226
254
  def stop_replica(ctx: Optional[dict], req: models.StopReplicaReq):
227
255
  """停止单个副本
228
256
  停止指定的 Replica,参考 StopWorkspace 实现模式,通过 apiserver subresource 调用。
@@ -313,7 +341,7 @@ async def get_logs_volume_async(ctx: Optional[dict], req: models.GetLogsVolumeRe
313
341
 
314
342
  def list_job_replicas(ctx: Optional[dict], req: models.ListJobReplicasReq) -> models.ListJobReplicasData:
315
343
  """获取副本列表
316
- 获取指定 Job 的所有副本列表
344
+ 获取指定 Job 的副本列表,支持按副本状态过滤
317
345
  GET /job/v1alpha1/ListJobReplicas
318
346
  Action: ListJobReplicas
319
347
 
@@ -328,7 +356,7 @@ def list_job_replicas(ctx: Optional[dict], req: models.ListJobReplicasReq) -> mo
328
356
 
329
357
  async def list_job_replicas_async(ctx: Optional[dict], req: models.ListJobReplicasReq) -> models.ListJobReplicasData:
330
358
  """获取副本列表(异步)
331
- 获取指定 Job 的所有副本列表
359
+ 获取指定 Job 的副本列表,支持按副本状态过滤
332
360
  GET /job/v1alpha1/ListJobReplicas
333
361
  Action: ListJobReplicas
334
362
 
@@ -90,6 +90,7 @@ class CreateJobReq:
90
90
  Name: str # Job 显示名称 json:"Name"
91
91
  Project: str # 项目名称 json:"Project"
92
92
  TaskSpecs: Dict[str, CreateJobReqTaskSpec] # 任务规格映射,key 为任务名(如 t0),value 为任务规格 json:"TaskSpecs"
93
+ ZoneId: str # 可用区(AZ),必填;RegionId 由网关通过 X-OGW-REGION-ID 请求头注入 json:"ZoneId"
93
94
  AutoDeleteDuration: Optional[str] = None # 自动删除时间,如 24h json:"AutoDeleteDuration,omitempty"
94
95
  BackoffLimit: Optional[int] = None # 重试次数限制 json:"BackoffLimit,omitempty"
95
96
  Creator: Optional[str] = None # 创建者用户名 json:"Creator,omitempty"
@@ -168,6 +169,7 @@ class GetJobData:
168
169
  Rank: Optional[int] = 0 # 排序排名(从 1 开始),仅 List 接口返回 json:"Rank,omitempty"
169
170
  RealCreator: Optional[str] = "" # 实际创建者用户名(共享场景下与 Creator 不同) json:"RealCreator,omitempty"
170
171
  RealCreatorId: Optional[str] = "" # 实际创建者用户 ID(共享场景下与 CreatorId 不同) json:"RealCreatorId,omitempty"
172
+ RegionId: Optional[str] = "" # 地域,从 RJob topology labels 读取;存量数据缺失时回填默认值 cn-shanghai json:"RegionId,omitempty"
171
173
  S3Config: Optional[S3Config] = None # json:"S3Config,omitempty"
172
174
  SKUPrivate: Optional[bool] = False # 是否使用私有机器 SKU json:"SKUPrivate,omitempty"
173
175
  SKUPrivateProject: Optional[bool] = False # 是否为项目级私有 SKU json:"SKUPrivateProject,omitempty"
@@ -187,6 +189,7 @@ class GetJobData:
187
189
  Uid: Optional[str] = "" # Job 唯一标识(UID) json:"Uid,omitempty"
188
190
  UsePrivateMachine: Optional[bool] = False # 是否使用私有机器 json:"UsePrivateMachine,omitempty"
189
191
  WaitTime: Optional[int] = 0 # 等待时间(秒),仅 List 接口返回 json:"WaitTime,omitempty"
192
+ ZoneId: Optional[str] = "" # 可用区,从 RJob topology labels 读取;存量数据缺失时回填默认值 cn-shanghai-b json:"ZoneId,omitempty"
190
193
 
191
194
  @dataclass
192
195
  class LogEntry:
@@ -269,8 +272,10 @@ class GetJobReplicaData:
269
272
  NodeName: Optional[str] = "" # 运行节点名称 json:"NodeName,omitempty"
270
273
  Phase: Optional[str] = None # SDK常量: PhasePending, PhaseStarting, PhaseRunning, PhaseScanning, PhaseSucceeded, PhaseFailed, PhaseRestarting, PhaseStopped, PhaseInqueue, PhaseSelfHealTriggered, PhaseSelfHealRunning, PhaseSelfHealSucceeded, PhaseSelfHealFailed json:"Phase,omitempty"
271
274
  PodIP: Optional[str] = "" # Pod IP 地址 json:"PodIP,omitempty"
275
+ RegionId: Optional[str] = "" # 地域,从 Replica topology labels 读取;存量数据缺失时回填默认值 cn-shanghai json:"RegionId,omitempty"
272
276
  ReplicaIndex: Optional[int] = 0 # 副本序号 json:"ReplicaIndex,omitempty"
273
277
  TaskType: Optional[str] = "" # 副本任务类型(如 worker) json:"TaskType,omitempty"
278
+ ZoneId: Optional[str] = "" # 可用区,从 Replica topology labels 读取;存量数据缺失时回填默认值 cn-shanghai-b json:"ZoneId,omitempty"
274
279
 
275
280
  @dataclass
276
281
  class BatchDeleteJobsReqResourceIdentifier:
@@ -312,13 +317,19 @@ class CreateJobReqS3Config:
312
317
 
313
318
  @dataclass
314
319
  class CreateJobReqSelfHealConfig:
315
- AutoReplaceNode: Optional[bool] = None # 是否开启节点自愈(故障节点自动替换) json:"AutoReplaceNode,omitempty"
316
- GracePeriodMinutes: Optional[int] = None # 介入等待时间(分钟),故障发生后等待多久开始自愈 json:"GracePeriodMinutes,omitempty"
317
- LimitCount: Optional[int] = None # 最大重试次数 json:"LimitCount,omitempty"
320
+ AutoReplaceNode: Optional[bool] = None # 是否开启节点自愈(故障节点自动替换),默认关闭 json:"AutoReplaceNode,omitempty"
321
+ GracePeriodMinutes: Optional[int] = None # 介入等待时间(分钟),默认 15 分钟 json:"GracePeriodMinutes,omitempty"
322
+ LimitCount: Optional[int] = None # 最大重试次数,默认 5 次 json:"LimitCount,omitempty"
318
323
  NotifyWebhook: Optional[str] = None # 自愈事件通知 Webhook URL(如飞书机器人) json:"NotifyWebhook,omitempty"
319
324
  RetryScope: Optional[str] = None # SDK常量: RetryScopeRjob, RetryScopeTask json:"RetryScope,omitempty"
320
325
  SelfHealEnabled: Optional[bool] = None # 是否开启自愈 json:"SelfHealEnabled,omitempty"
321
- TerminationGracePeriodSeconds: Optional[int] = None # 优雅终止等待时间(秒),自愈重启前等待任务退出的时间 json:"TerminationGracePeriodSeconds,omitempty"
326
+ TerminationGracePeriodSeconds: Optional[int] = None # 数据回收时间(秒),默认 300 秒 json:"TerminationGracePeriodSeconds,omitempty"
327
+
328
+ @dataclass
329
+ class StopJobReq:
330
+ JobId: str # Job 唯一标识 json:"JobId"
331
+ Project: str # 项目名称 json:"Project"
332
+ ZoneId: Optional[str] = None # 可用区(可选,当前服务端仅接收);RegionId 由网关通过 X-OGW-REGION-ID 请求头注入 json:"ZoneId,omitempty"
322
333
 
323
334
  @dataclass
324
335
  class StopReplicaReq:
@@ -367,11 +378,13 @@ class TaskSpecResponse:
367
378
  MountGpfsVolumes: Optional[List[MountGpfsVolume]] = None # GPFS 挂载卷列表(结构化),由 MountGPFS 字符串解析而来 json:"MountGpfsVolumes,omitempty"
368
379
  NegativeTags: Optional[List[str]] = None # 节点反亲和标签列表 json:"NegativeTags,omitempty"
369
380
  PositiveTags: Optional[List[str]] = None # 节点亲和标签列表 json:"PositiveTags,omitempty"
381
+ RegionId: Optional[str] = "" # 地域,从 TaskSpec template labels 读取;缺失时回填默认值 cn-shanghai json:"RegionId,omitempty"
370
382
  Replicas: Optional[int] = 0 # 副本数 json:"Replicas,omitempty"
371
383
  RootfsSource: Optional[RootfsSourceResponse] = None # Rootfs 数据源配置 json:"RootfsSource,omitempty"
372
384
  SKUId: Optional[str] = "" # SKU 规格标识,如 ai.c3m42.r1ir5 json:"SKUId,omitempty"
373
385
  UpdatePolicy: Optional[str] = None # SDK常量: UpdatePolicyActive, UpdatePolicyBeforeRunning, UpdatePolicyNone json:"UpdatePolicy,omitempty"
374
386
  Volumes: Optional[List[VolumeMount]] = None # 挂载存储卷列表 json:"Volumes,omitempty"
387
+ ZoneId: Optional[str] = "" # 可用区,从 TaskSpec template labels 读取;缺失时回填默认值 cn-shanghai-b json:"ZoneId,omitempty"
375
388
 
376
389
  @dataclass
377
390
  class TaskStatusCount:
@@ -445,10 +458,12 @@ class GetPrecheckStatusReq:
445
458
  class ListJobReplicasReq:
446
459
  JobId: str # Job 唯一标识 query:"JobId"
447
460
  Project: str # 项目名称 query:"Project"
461
+ Phases: Optional[str] = None # 按副本状态过滤,多个状态使用逗号分隔;可选值为 Pending、Starting、Running、Stopped、Succeeded、Failed、Unknown query:"Phases,omitempty"
448
462
 
449
463
  @dataclass
450
464
  class ListJobsReq:
451
465
  Project: str # 项目名称 query:"Project"
466
+ ZoneId: str # 可用区(AZ)过滤,如 cn-shanghai-b;RegionId 由网关通过 X-OGW-REGION-ID 请求头注入 query:"ZoneId"
452
467
  Creators: Optional[str] = None # 创建者用户名,逗号分隔 query:"Creators,omitempty"
453
468
  JobIds: Optional[str] = None # Job ID 列表,逗号分隔 query:"JobIds,omitempty"
454
469
  JobNames: Optional[str] = None # Job 名称过滤(逗号分隔,支持模糊匹配) query:"JobNames,omitempty"
@@ -71,7 +71,9 @@ async def get_workspace_async(ctx: Optional[dict], req: models.GetWorkspaceReq)
71
71
 
72
72
  def create_workspace(ctx: Optional[dict], req: models.CreateWorkspaceReq) -> models.CreateWorkspaceData:
73
73
  """创建开发机
74
- 支持两种模式:
74
+ 创建前会校验租户状态与 SKU 余额,可能返回 1006012、1006013、1006014。
75
+
76
+ 支持两种模式:
75
77
  - **配额组模式**(默认):设置 QuotaGroup + RuntimeMode + CPU/Memory/GPU
76
78
  - **SKU 模式**:设置 SkuId + SkuPublic 或 SkuPrivate(及 SkuTenant/SkuProject),不需要设置 RuntimeMode、QuotaGroup、CPU/Memory/GPU
77
79
 
@@ -93,7 +95,9 @@ def create_workspace(ctx: Optional[dict], req: models.CreateWorkspaceReq) -> mod
93
95
 
94
96
  async def create_workspace_async(ctx: Optional[dict], req: models.CreateWorkspaceReq) -> models.CreateWorkspaceData:
95
97
  """创建开发机(异步)
96
- 支持两种模式:
98
+ 创建前会校验租户状态与 SKU 余额,可能返回 1006012、1006013、1006014。
99
+
100
+ 支持两种模式:
97
101
  - **配额组模式**(默认):设置 QuotaGroup + RuntimeMode + CPU/Memory/GPU
98
102
  - **SKU 模式**:设置 SkuId + SkuPublic 或 SkuPrivate(及 SkuTenant/SkuProject),不需要设置 RuntimeMode、QuotaGroup、CPU/Memory/GPU
99
103
 
@@ -143,7 +147,7 @@ async def delete_workspace_async(ctx: Optional[dict], req: models.DeleteWorkspac
143
147
 
144
148
  def start_workspace(ctx: Optional[dict], req: models.StartWorkspaceReq):
145
149
  """启动开发机
146
- 启动已停止的开发机
150
+ 启动已停止的开发机。启动前会校验租户状态与 SKU 余额,可能返回 1006012、1006013、1006014。
147
151
  POST /workspace/v1alpha1/StartWorkspace
148
152
  Action: StartWorkspace
149
153
 
@@ -157,7 +161,7 @@ def start_workspace(ctx: Optional[dict], req: models.StartWorkspaceReq):
157
161
 
158
162
  async def start_workspace_async(ctx: Optional[dict], req: models.StartWorkspaceReq):
159
163
  """启动开发机(异步)
160
- 启动已停止的开发机
164
+ 启动已停止的开发机。启动前会校验租户状态与 SKU 余额,可能返回 1006012、1006013、1006014。
161
165
  POST /workspace/v1alpha1/StartWorkspace
162
166
  Action: StartWorkspace
163
167
 
@@ -416,7 +420,7 @@ def delete_process(ctx: Optional[dict], req: models.DeleteProcessReq):
416
420
  """
417
421
  path = f"/{_PRODUCT_CODE}/{_LAST_VERSION}/DeleteProcess"
418
422
  rsp = msgs.Rsp[None].empty()
419
- client.base.post(ctx, path, {k: v for k, v in req.__dict__.items() if v is not None}, rsp)
423
+ client.base.post(ctx, path, req, rsp)
420
424
 
421
425
 
422
426
  async def delete_process_async(ctx: Optional[dict], req: models.DeleteProcessReq):
@@ -430,7 +434,7 @@ async def delete_process_async(ctx: Optional[dict], req: models.DeleteProcessReq
430
434
  """
431
435
  path = f"/{_PRODUCT_CODE}/{_LAST_VERSION}/DeleteProcess"
432
436
  rsp = msgs.Rsp[None].empty()
433
- await client.base.post_async(ctx, path, {k: v for k, v in req.__dict__.items() if v is not None}, rsp)
437
+ await client.base.post_async(ctx, path, req, rsp)
434
438
 
435
439
 
436
440
  def get_process_pids(ctx: Optional[dict], req: models.GetProcessPidsReq) -> models.GetProcessPidsData:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yicloud-sdk-python
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: YiCloud OpenAPI SDK for Python
5
5
  Author: YiCloud
6
6
  Project-URL: Homepage, https://gitee.com/yicloud-team/openapi-sdk-python