Skip to content

Commit 0e397c1

Browse files
committed
feat(sandbox): support define sandbox_id
Signed-off-by: Sodawyx <sodawyx@126.com>
1 parent 0e1d3f6 commit 0e397c1

File tree

6 files changed

+41
-3
lines changed

6 files changed

+41
-3
lines changed

agentrun/sandbox/__client_async_template.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ async def create_sandbox_async(
276276
self,
277277
template_name: str,
278278
sandbox_idle_timeout_seconds: Optional[int] = 600,
279+
sandbox_id: Optional[str] = None,
279280
nas_config: Optional[NASConfig] = None,
280281
oss_mount_config: Optional[OSSMountConfig] = None,
281282
polar_fs_config: Optional[PolarFsConfig] = None,
@@ -286,6 +287,7 @@ async def create_sandbox_async(
286287
Args:
287288
template_name: 模板名称 / Template name
288289
sandbox_idle_timeout_seconds: 沙箱空闲超时时间(秒) / Sandbox idle timeout (seconds)
290+
sandbox_id: 沙箱 ID(可选,用户可指定) / Sandbox ID (optional, user can specify)
289291
nas_config: NAS 配置 / NAS configuration
290292
oss_mount_config: OSS 挂载配置 / OSS mount configuration
291293
polar_fs_config: PolarFS 配置 / PolarFS configuration
@@ -314,6 +316,7 @@ async def create_sandbox_async(
314316
result = await self.__sandbox_data_api.create_sandbox_async(
315317
template_name=template_name,
316318
sandbox_idle_timeout_seconds=sandbox_idle_timeout_seconds,
319+
sandbox_id=sandbox_id,
317320
nas_config=nas_config_dict,
318321
oss_mount_config=oss_mount_config_dict,
319322
polar_fs_config=polar_fs_config_dict,
@@ -353,7 +356,7 @@ async def stop_sandbox_async(
353356
"""
354357
try:
355358
result = await self.__sandbox_data_api.stop_sandbox_async(
356-
sandbox_id
359+
sandbox_id, config=config
357360
)
358361

359362
# 判断返回结果是否成功
@@ -393,7 +396,7 @@ async def delete_sandbox_async(
393396
"""
394397
try:
395398
result = await self.__sandbox_data_api.delete_sandbox_async(
396-
sandbox_id
399+
sandbox_id, config=config
397400
)
398401

399402
# 判断返回结果是否成功
@@ -434,7 +437,9 @@ async def get_sandbox_async(
434437
ServerError: 服务器错误
435438
"""
436439
try:
437-
result = await self.__sandbox_data_api.get_sandbox_async(sandbox_id)
440+
result = await self.__sandbox_data_api.get_sandbox_async(
441+
sandbox_id, config=config
442+
)
438443

439444
# 判断返回结果是否成功
440445
if result.get("code") != "SUCCESS":

agentrun/sandbox/__sandbox_async_template.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ async def create_async(
8787
template_type: Literal[TemplateType.CODE_INTERPRETER],
8888
template_name: Optional[str] = None,
8989
sandbox_idle_timeout_seconds: Optional[int] = 600,
90+
sandbox_id: Optional[str] = None,
9091
nas_config: Optional["NASConfig"] = None,
9192
oss_mount_config: Optional["OSSMountConfig"] = None,
9293
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -101,6 +102,7 @@ async def create_async(
101102
template_type: Literal[TemplateType.BROWSER],
102103
template_name: Optional[str] = None,
103104
sandbox_idle_timeout_seconds: Optional[int] = 600,
105+
sandbox_id: Optional[str] = None,
104106
nas_config: Optional["NASConfig"] = None,
105107
oss_mount_config: Optional["OSSMountConfig"] = None,
106108
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -115,6 +117,7 @@ async def create_async(
115117
template_type: Literal[TemplateType.AIO],
116118
template_name: Optional[str] = None,
117119
sandbox_idle_timeout_seconds: Optional[int] = 600,
120+
sandbox_id: Optional[str] = None,
118121
nas_config: Optional["NASConfig"] = None,
119122
oss_mount_config: Optional["OSSMountConfig"] = None,
120123
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -129,6 +132,7 @@ async def create_async(
129132
template_type: Literal[TemplateType.CUSTOM],
130133
template_name: Optional[str] = None,
131134
sandbox_idle_timeout_seconds: Optional[int] = 600,
135+
sandbox_id: Optional[str] = None,
132136
nas_config: Optional["NASConfig"] = None,
133137
oss_mount_config: Optional["OSSMountConfig"] = None,
134138
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -142,6 +146,7 @@ async def create_async(
142146
template_type: TemplateType,
143147
template_name: Optional[str] = None,
144148
sandbox_idle_timeout_seconds: Optional[int] = 600,
149+
sandbox_id: Optional[str] = None,
145150
nas_config: Optional["NASConfig"] = None,
146151
oss_mount_config: Optional["OSSMountConfig"] = None,
147152
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -178,6 +183,7 @@ async def create_async(
178183
base_sandbox = await cls.__get_client().create_sandbox_async(
179184
template_name=template_name,
180185
sandbox_idle_timeout_seconds=sandbox_idle_timeout_seconds,
186+
sandbox_id=sandbox_id,
181187
nas_config=nas_config,
182188
oss_mount_config=oss_mount_config,
183189
polar_fs_config=polar_fs_config,

agentrun/sandbox/api/__sandbox_data_async_template.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ async def create_sandbox_async(
7070
self,
7171
template_name: str,
7272
sandbox_idle_timeout_seconds: Optional[int] = 600,
73+
sandbox_id: Optional[str] = None,
7374
nas_config: Optional[Dict[str, Any]] = None,
7475
oss_mount_config: Optional[Dict[str, Any]] = None,
7576
polar_fs_config: Optional[Dict[str, Any]] = None,
@@ -80,6 +81,8 @@ async def create_sandbox_async(
8081
"templateName": template_name,
8182
"sandboxIdleTimeoutSeconds": sandbox_idle_timeout_seconds,
8283
}
84+
if sandbox_id is not None:
85+
data["sandboxId"] = sandbox_id
8386
if nas_config is not None:
8487
data["nasConfig"] = nas_config
8588
if oss_mount_config is not None:

agentrun/sandbox/api/sandbox_data.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ async def create_sandbox_async(
8383
self,
8484
template_name: str,
8585
sandbox_idle_timeout_seconds: Optional[int] = 600,
86+
sandbox_id: Optional[str] = None,
8687
nas_config: Optional[Dict[str, Any]] = None,
8788
oss_mount_config: Optional[Dict[str, Any]] = None,
8889
polar_fs_config: Optional[Dict[str, Any]] = None,
@@ -93,6 +94,8 @@ async def create_sandbox_async(
9394
"templateName": template_name,
9495
"sandboxIdleTimeoutSeconds": sandbox_idle_timeout_seconds,
9596
}
97+
if sandbox_id is not None:
98+
data["sandboxId"] = sandbox_id
9699
if nas_config is not None:
97100
data["nasConfig"] = nas_config
98101
if oss_mount_config is not None:
@@ -105,6 +108,7 @@ def create_sandbox(
105108
self,
106109
template_name: str,
107110
sandbox_idle_timeout_seconds: Optional[int] = 600,
111+
sandbox_id: Optional[str] = None,
108112
nas_config: Optional[Dict[str, Any]] = None,
109113
oss_mount_config: Optional[Dict[str, Any]] = None,
110114
polar_fs_config: Optional[Dict[str, Any]] = None,
@@ -115,6 +119,8 @@ def create_sandbox(
115119
"templateName": template_name,
116120
"sandboxIdleTimeoutSeconds": sandbox_idle_timeout_seconds,
117121
}
122+
if sandbox_id is not None:
123+
data["sandboxId"] = sandbox_id
118124
if nas_config is not None:
119125
data["nasConfig"] = nas_config
120126
if oss_mount_config is not None:

agentrun/sandbox/client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ async def create_sandbox_async(
498498
self,
499499
template_name: str,
500500
sandbox_idle_timeout_seconds: Optional[int] = 600,
501+
sandbox_id: Optional[str] = None,
501502
nas_config: Optional[NASConfig] = None,
502503
oss_mount_config: Optional[OSSMountConfig] = None,
503504
polar_fs_config: Optional[PolarFsConfig] = None,
@@ -508,6 +509,7 @@ async def create_sandbox_async(
508509
Args:
509510
template_name: 模板名称 / Template name
510511
sandbox_idle_timeout_seconds: 沙箱空闲超时时间(秒) / Sandbox idle timeout (seconds)
512+
sandbox_id: 沙箱 ID(可选,用户可指定) / Sandbox ID (optional, user can specify)
511513
nas_config: NAS 配置 / NAS configuration
512514
oss_mount_config: OSS 挂载配置 / OSS mount configuration
513515
polar_fs_config: PolarFS 配置 / PolarFS configuration
@@ -536,6 +538,7 @@ async def create_sandbox_async(
536538
result = await self.__sandbox_data_api.create_sandbox_async(
537539
template_name=template_name,
538540
sandbox_idle_timeout_seconds=sandbox_idle_timeout_seconds,
541+
sandbox_id=sandbox_id,
539542
nas_config=nas_config_dict,
540543
oss_mount_config=oss_mount_config_dict,
541544
polar_fs_config=polar_fs_config_dict,
@@ -560,6 +563,7 @@ def create_sandbox(
560563
self,
561564
template_name: str,
562565
sandbox_idle_timeout_seconds: Optional[int] = 600,
566+
sandbox_id: Optional[str] = None,
563567
nas_config: Optional[NASConfig] = None,
564568
oss_mount_config: Optional[OSSMountConfig] = None,
565569
polar_fs_config: Optional[PolarFsConfig] = None,
@@ -570,6 +574,7 @@ def create_sandbox(
570574
Args:
571575
template_name: 模板名称 / Template name
572576
sandbox_idle_timeout_seconds: 沙箱空闲超时时间(秒) / Sandbox idle timeout (seconds)
577+
sandbox_id: 沙箱 ID(可选,用户可指定) / Sandbox ID (optional, user can specify)
573578
nas_config: NAS 配置 / NAS configuration
574579
oss_mount_config: OSS 挂载配置 / OSS mount configuration
575580
polar_fs_config: PolarFS 配置 / PolarFS configuration
@@ -598,6 +603,7 @@ def create_sandbox(
598603
result = self.__sandbox_data_api.create_sandbox(
599604
template_name=template_name,
600605
sandbox_idle_timeout_seconds=sandbox_idle_timeout_seconds,
606+
sandbox_id=sandbox_id,
601607
nas_config=nas_config_dict,
602608
oss_mount_config=oss_mount_config_dict,
603609
polar_fs_config=polar_fs_config_dict,

agentrun/sandbox/sandbox.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ async def create_async(
9797
template_type: Literal[TemplateType.CODE_INTERPRETER],
9898
template_name: Optional[str] = None,
9999
sandbox_idle_timeout_seconds: Optional[int] = 600,
100+
sandbox_id: Optional[str] = None,
100101
nas_config: Optional["NASConfig"] = None,
101102
oss_mount_config: Optional["OSSMountConfig"] = None,
102103
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -111,6 +112,7 @@ def create(
111112
template_type: Literal[TemplateType.CODE_INTERPRETER],
112113
template_name: Optional[str] = None,
113114
sandbox_idle_timeout_seconds: Optional[int] = 600,
115+
sandbox_id: Optional[str] = None,
114116
nas_config: Optional["NASConfig"] = None,
115117
oss_mount_config: Optional["OSSMountConfig"] = None,
116118
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -125,6 +127,7 @@ async def create_async(
125127
template_type: Literal[TemplateType.BROWSER],
126128
template_name: Optional[str] = None,
127129
sandbox_idle_timeout_seconds: Optional[int] = 600,
130+
sandbox_id: Optional[str] = None,
128131
nas_config: Optional["NASConfig"] = None,
129132
oss_mount_config: Optional["OSSMountConfig"] = None,
130133
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -139,6 +142,7 @@ def create(
139142
template_type: Literal[TemplateType.BROWSER],
140143
template_name: Optional[str] = None,
141144
sandbox_idle_timeout_seconds: Optional[int] = 600,
145+
sandbox_id: Optional[str] = None,
142146
nas_config: Optional["NASConfig"] = None,
143147
oss_mount_config: Optional["OSSMountConfig"] = None,
144148
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -153,6 +157,7 @@ async def create_async(
153157
template_type: Literal[TemplateType.AIO],
154158
template_name: Optional[str] = None,
155159
sandbox_idle_timeout_seconds: Optional[int] = 600,
160+
sandbox_id: Optional[str] = None,
156161
nas_config: Optional["NASConfig"] = None,
157162
oss_mount_config: Optional["OSSMountConfig"] = None,
158163
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -167,6 +172,7 @@ def create(
167172
template_type: Literal[TemplateType.AIO],
168173
template_name: Optional[str] = None,
169174
sandbox_idle_timeout_seconds: Optional[int] = 600,
175+
sandbox_id: Optional[str] = None,
170176
nas_config: Optional["NASConfig"] = None,
171177
oss_mount_config: Optional["OSSMountConfig"] = None,
172178
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -181,6 +187,7 @@ async def create_async(
181187
template_type: Literal[TemplateType.CUSTOM],
182188
template_name: Optional[str] = None,
183189
sandbox_idle_timeout_seconds: Optional[int] = 600,
190+
sandbox_id: Optional[str] = None,
184191
nas_config: Optional["NASConfig"] = None,
185192
oss_mount_config: Optional["OSSMountConfig"] = None,
186193
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -195,6 +202,7 @@ def create(
195202
template_type: Literal[TemplateType.CUSTOM],
196203
template_name: Optional[str] = None,
197204
sandbox_idle_timeout_seconds: Optional[int] = 600,
205+
sandbox_id: Optional[str] = None,
198206
nas_config: Optional["NASConfig"] = None,
199207
oss_mount_config: Optional["OSSMountConfig"] = None,
200208
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -208,6 +216,7 @@ async def create_async(
208216
template_type: TemplateType,
209217
template_name: Optional[str] = None,
210218
sandbox_idle_timeout_seconds: Optional[int] = 600,
219+
sandbox_id: Optional[str] = None,
211220
nas_config: Optional["NASConfig"] = None,
212221
oss_mount_config: Optional["OSSMountConfig"] = None,
213222
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -244,6 +253,7 @@ async def create_async(
244253
base_sandbox = await cls.__get_client().create_sandbox_async(
245254
template_name=template_name,
246255
sandbox_idle_timeout_seconds=sandbox_idle_timeout_seconds,
256+
sandbox_id=sandbox_id,
247257
nas_config=nas_config,
248258
oss_mount_config=oss_mount_config,
249259
polar_fs_config=polar_fs_config,
@@ -281,6 +291,7 @@ def create(
281291
template_type: TemplateType,
282292
template_name: Optional[str] = None,
283293
sandbox_idle_timeout_seconds: Optional[int] = 600,
294+
sandbox_id: Optional[str] = None,
284295
nas_config: Optional["NASConfig"] = None,
285296
oss_mount_config: Optional["OSSMountConfig"] = None,
286297
polar_fs_config: Optional["PolarFsConfig"] = None,
@@ -317,6 +328,7 @@ def create(
317328
base_sandbox = cls.__get_client().create_sandbox(
318329
template_name=template_name,
319330
sandbox_idle_timeout_seconds=sandbox_idle_timeout_seconds,
331+
sandbox_id=sandbox_id,
320332
nas_config=nas_config,
321333
oss_mount_config=oss_mount_config,
322334
polar_fs_config=polar_fs_config,

0 commit comments

Comments
 (0)