zenlayercloud-sdk-python 2.0.61__py3-none-any.whl → 2.0.63__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.
zenlayercloud/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # Zenlayer.com Inc.
2
2
  # Copyright (c) 2014-2023 All Rights Reserved.
3
3
 
4
- __version__ = "2.0.061"
4
+ __version__ = "2.0.063"
5
5
 
@@ -48,6 +48,26 @@ class AbstractClient(object):
48
48
  code=error_code.SDK_INVALID_REQUEST,
49
49
  message="Request must be AbstractModel"
50
50
  )
51
+
52
+ max_retries = max(self.config.rate_limit_max_retries or 0, 0)
53
+ duration_func = self.config.rate_limit_retry_duration
54
+
55
+ last_exception = None
56
+ for idx in range(max_retries + 1):
57
+ try:
58
+ return self._do_api_call(action, request, method, headers)
59
+ except ZenlayerCloudSdkException as e:
60
+ if idx < max_retries and e.code == error_code.REQUEST_LIMIT_EXCEEDED:
61
+ last_exception = e
62
+ duration = duration_func(idx)
63
+ _logger.warning("rate limit exceeded, retrying (%d/%d) in %s seconds: %s",
64
+ idx, max_retries, duration, e.message)
65
+ time.sleep(duration)
66
+ continue
67
+ raise
68
+ raise last_exception
69
+
70
+ def _do_api_call(self, action, request, method, headers) -> dict:
51
71
  uri = "/api/v2/%s" % self._service
52
72
  req = BaseRequest(host=self.config.domain, method=method, uri=uri, header=headers)
53
73
 
@@ -3,11 +3,19 @@
3
3
 
4
4
  DEFAULT_DOMAIN = "console.zenlayer.com"
5
5
 
6
+ DEFAULT_RATE_LIMIT_MAX_RETRIES = 3
7
+
8
+
9
+ def exponential_backoff(index):
10
+ """Default backoff: 1s, 2s, 4s, 8s, ..."""
11
+ return 2 ** index
12
+
6
13
 
7
14
  class Config(object):
8
15
 
9
16
  def __init__(self, scheme=None, domain=None, request_timeout=60, proxy=None, keep_alive=False, debug=False,
10
- certification=None):
17
+ certification=None, rate_limit_max_retries=DEFAULT_RATE_LIMIT_MAX_RETRIES,
18
+ rate_limit_retry_duration=None):
11
19
  """config.
12
20
 
13
21
  :param scheme: http or https, default is https.
@@ -20,6 +28,12 @@ class Config(object):
20
28
  :type keep_alive: bool
21
29
  :param debug: open or close debug mode.
22
30
  :type debug: bool
31
+ :param rate_limit_max_retries: Max retries when REQUEST_LIMIT_EXCEEDED (HTTP 429)
32
+ is returned. Defaults to 3. Set to 0 to disable.
33
+ :type rate_limit_max_retries: int
34
+ :param rate_limit_retry_duration: A callable ``f(index) -> seconds`` that returns
35
+ the wait time before the next retry. Defaults to exponential backoff.
36
+ :type rate_limit_retry_duration: callable
23
37
  """
24
38
 
25
39
  self.scheme = scheme or "https"
@@ -29,4 +43,6 @@ class Config(object):
29
43
  self.request_timeout = 60 if request_timeout is None else request_timeout
30
44
  self.debug = debug
31
45
  self.certification = certification
46
+ self.rate_limit_max_retries = rate_limit_max_retries
47
+ self.rate_limit_retry_duration = rate_limit_retry_duration or exponential_backoff
32
48
 
@@ -5,3 +5,5 @@
5
5
  CREDENTIAL_MISSING_ERROR = "CREDENTIAL_VALUE_MISSING"
6
6
 
7
7
  SDK_INVALID_REQUEST = "SDK_INVALID_REQUEST"
8
+
9
+ REQUEST_LIMIT_EXCEEDED = "REQUEST_LIMIT_EXCEEDED"
@@ -48,6 +48,7 @@ class InquiryBandwidthClusterPriceRequest(AbstractModel):
48
48
  def __init__(self):
49
49
  self.areaCode = None
50
50
  self.commitBandwidthMbps = None
51
+ self.internationalCommitBandwidthMbps = None
51
52
  self.networkType = None
52
53
  self.internetChargeType = None
53
54
  self.product = None
@@ -55,6 +56,7 @@ class InquiryBandwidthClusterPriceRequest(AbstractModel):
55
56
  def _deserialize(self, params):
56
57
  self.areaCode = params.get("areaCode")
57
58
  self.commitBandwidthMbps = params.get("commitBandwidthMbps")
59
+ self.internationalCommitBandwidthMbps = params.get("internationalCommitBandwidthMbps")
58
60
  self.networkType = params.get("networkType")
59
61
  self.internetChargeType = params.get("internetChargeType")
60
62
  self.product = params.get("product")
@@ -64,11 +66,14 @@ class InquiryBandwidthClusterPriceResponse(AbstractModel):
64
66
  def __init__(self):
65
67
  self.requestId = None
66
68
  self.price = None
69
+ self.internationalPrice = None
67
70
 
68
71
  def _deserialize(self, params):
69
72
  self.requestId = params.get("requestId")
70
73
  if params.get("price") is not None:
71
74
  self.price = PriceItem(params.get("price"))
75
+ if params.get("internationalPrice") is not None:
76
+ self.internationalPrice = PriceItem(params.get("internationalPrice"))
72
77
 
73
78
 
74
79
  class PriceItem(AbstractModel):
@@ -136,6 +141,9 @@ class DescribeBandwidthClustersRequest(AbstractModel):
136
141
  self.cityName = None
137
142
  self.pageNum = None
138
143
  self.pageSize = None
144
+ self.resourceGroupId = None
145
+ self.tagKeys = None
146
+ self.tags = None
139
147
 
140
148
  def _deserialize(self, params):
141
149
  self.bandwidthClusterIds = params.get("bandwidthClusterIds")
@@ -143,6 +151,28 @@ class DescribeBandwidthClustersRequest(AbstractModel):
143
151
  self.cityName = params.get("cityName")
144
152
  self.pageNum = params.get("pageNum")
145
153
  self.pageSize = params.get("pageSize")
154
+ self.resourceGroupId = params.get("resourceGroupId")
155
+ self.tagKeys = params.get("tagKeys")
156
+ if params.get("tags") is not None:
157
+ self.tags = []
158
+ for item in params.get("tags"):
159
+ obj = Tag(item)
160
+ self.tags.append(obj)
161
+
162
+
163
+ class Tag(AbstractModel):
164
+ def __init__(self, params=None):
165
+ if params is None:
166
+ params = {}
167
+ if len(params) > 0:
168
+ self._deserialize(params)
169
+ return
170
+ self.key = None
171
+ self.value = None
172
+
173
+ def _deserialize(self, params):
174
+ self.key = params.get("key")
175
+ self.value = params.get("value")
146
176
 
147
177
 
148
178
  class DescribeBandwidthClustersResponse(AbstractModel):
@@ -176,10 +206,13 @@ class BandwidthClusterInfo(AbstractModel):
176
206
  self.areaCode = None
177
207
  self.internetChargeType = None
178
208
  self.commitBandwidthMbps = None
209
+ self.internationalCommitBandwidthMbps = None
179
210
  self.location = None
180
211
  self.createTime = None
181
212
  self.resourceNumber = None
182
213
  self.cities = None
214
+ self.tags = None
215
+ self.resourceGroup = None
183
216
 
184
217
  def _deserialize(self, params):
185
218
  self.bandwidthClusterId = params.get("bandwidthClusterId")
@@ -196,6 +229,7 @@ class BandwidthClusterInfo(AbstractModel):
196
229
  self.areaCode = params.get("areaCode")
197
230
  self.internetChargeType = params.get("internetChargeType")
198
231
  self.commitBandwidthMbps = params.get("commitBandwidthMbps")
232
+ self.internationalCommitBandwidthMbps = params.get("internationalCommitBandwidthMbps")
199
233
  self.location = params.get("location")
200
234
  self.createTime = params.get("createTime")
201
235
  self.resourceNumber = params.get("resourceNumber")
@@ -204,6 +238,10 @@ class BandwidthClusterInfo(AbstractModel):
204
238
  for item in params.get("cities"):
205
239
  obj = CityInfo(item)
206
240
  self.cities.append(obj)
241
+ if params.get("tags") is not None:
242
+ self.tags = Tags(params.get("tags"))
243
+ if params.get("resourceGroup") is not None:
244
+ self.resourceGroup = ResourceGroupInfo(params.get("resourceGroup"))
207
245
 
208
246
 
209
247
  class CityInfo(AbstractModel):
@@ -221,19 +259,55 @@ class CityInfo(AbstractModel):
221
259
  self.cityCode = params.get("cityCode")
222
260
 
223
261
 
262
+ class Tags(AbstractModel):
263
+ def __init__(self, params=None):
264
+ if params is None:
265
+ params = {}
266
+ if len(params) > 0:
267
+ self._deserialize(params)
268
+ return
269
+ self.tags = None
270
+
271
+ def _deserialize(self, params):
272
+ if params.get("tags") is not None:
273
+ self.tags = []
274
+ for item in params.get("tags"):
275
+ obj = Tag(item)
276
+ self.tags.append(obj)
277
+
278
+
279
+ class ResourceGroupInfo(AbstractModel):
280
+ def __init__(self, params=None):
281
+ if params is None:
282
+ params = {}
283
+ if len(params) > 0:
284
+ self._deserialize(params)
285
+ return
286
+ self.resourceGroupId = None
287
+ self.resourceGroupName = None
288
+
289
+ def _deserialize(self, params):
290
+ self.resourceGroupId = params.get("resourceGroupId")
291
+ self.resourceGroupName = params.get("resourceGroupName")
292
+
293
+
224
294
  class CreateBandwidthClusterRequest(AbstractModel):
225
295
  def __init__(self):
226
296
  self.areaCode = None
227
297
  self.commitBandwidthMbps = None
298
+ self.internationalCommitBandwidthMbps = None
228
299
  self.networkLineType = None
229
300
  self.networkType = None
230
301
  self.internetChargeType = None
231
302
  self.name = None
232
303
  self.product = None
304
+ self.resourceGroupId = None
305
+ self.tags = None
233
306
 
234
307
  def _deserialize(self, params):
235
308
  self.areaCode = params.get("areaCode")
236
309
  self.commitBandwidthMbps = params.get("commitBandwidthMbps")
310
+ self.internationalCommitBandwidthMbps = params.get("internationalCommitBandwidthMbps")
237
311
  self.networkLineType = params.get("networkLineType")
238
312
  if params.get("networkType") is not None:
239
313
  warnings.warn(
@@ -245,6 +319,26 @@ class CreateBandwidthClusterRequest(AbstractModel):
245
319
  self.internetChargeType = params.get("internetChargeType")
246
320
  self.name = params.get("name")
247
321
  self.product = params.get("product")
322
+ self.resourceGroupId = params.get("resourceGroupId")
323
+ if params.get("tags") is not None:
324
+ self.tags = TagAssociation(params.get("tags"))
325
+
326
+
327
+ class TagAssociation(AbstractModel):
328
+ def __init__(self, params=None):
329
+ if params is None:
330
+ params = {}
331
+ if len(params) > 0:
332
+ self._deserialize(params)
333
+ return
334
+ self.tags = None
335
+
336
+ def _deserialize(self, params):
337
+ if params.get("tags") is not None:
338
+ self.tags = []
339
+ for item in params.get("tags"):
340
+ obj = Tag(item)
341
+ self.tags.append(obj)
248
342
 
249
343
 
250
344
  class CreateBandwidthClusterResponse(AbstractModel):
@@ -265,12 +359,14 @@ class DescribeBandwidthClusterTrafficRequest(AbstractModel):
265
359
  self.startTime = None
266
360
  self.endTime = None
267
361
  self.city = None
362
+ self.trafficType = None
268
363
 
269
364
  def _deserialize(self, params):
270
365
  self.bandwidthClusterId = params.get("bandwidthClusterId")
271
366
  self.startTime = params.get("startTime")
272
367
  self.endTime = params.get("endTime")
273
368
  self.city = params.get("city")
369
+ self.trafficType = params.get("trafficType")
274
370
 
275
371
 
276
372
  class DescribeBandwidthClusterTrafficResponse(AbstractModel):
@@ -338,10 +434,12 @@ class UpdateBandwidthClusterCommitBandwidthRequest(AbstractModel):
338
434
  def __init__(self):
339
435
  self.bandwidthClusterId = None
340
436
  self.commitBandwidthMbps = None
437
+ self.internationalCommitBandwidthMbps = None
341
438
 
342
439
  def _deserialize(self, params):
343
440
  self.bandwidthClusterId = params.get("bandwidthClusterId")
344
441
  self.commitBandwidthMbps = params.get("commitBandwidthMbps")
442
+ self.internationalCommitBandwidthMbps = params.get("internationalCommitBandwidthMbps")
345
443
 
346
444
 
347
445
  class UpdateBandwidthClusterCommitBandwidthResponse(AbstractModel):
@@ -480,11 +578,17 @@ class BandwidthClusterUsageData(AbstractModel):
480
578
  return
481
579
  self.time = None
482
580
  self.value = None
581
+ self.typeValues = None
483
582
  self.details = None
484
583
 
485
584
  def _deserialize(self, params):
486
585
  self.time = params.get("time")
487
586
  self.value = params.get("value")
587
+ if params.get("typeValues") is not None:
588
+ self.typeValues = []
589
+ for item in params.get("typeValues"):
590
+ obj = TrafficTypeValue(item)
591
+ self.typeValues.append(obj)
488
592
  if params.get("details") is not None:
489
593
  self.details = []
490
594
  for item in params.get("details"):
@@ -492,6 +596,21 @@ class BandwidthClusterUsageData(AbstractModel):
492
596
  self.details.append(obj)
493
597
 
494
598
 
599
+ class TrafficTypeValue(AbstractModel):
600
+ def __init__(self, params=None):
601
+ if params is None:
602
+ params = {}
603
+ if len(params) > 0:
604
+ self._deserialize(params)
605
+ return
606
+ self.trafficType = None
607
+ self.value = None
608
+
609
+ def _deserialize(self, params):
610
+ self.trafficType = params.get("trafficType")
611
+ self.value = params.get("value")
612
+
613
+
495
614
  class BandwidthClusterUsageDetail(AbstractModel):
496
615
  def __init__(self, params=None):
497
616
  if params is None:
@@ -503,11 +622,17 @@ class BandwidthClusterUsageDetail(AbstractModel):
503
622
  self.cityCode = None
504
623
  self.product = None
505
624
  self.value = None
625
+ self.typeValues = None
506
626
 
507
627
  def _deserialize(self, params):
508
628
  self.cityName = params.get("cityName")
509
629
  self.cityCode = params.get("cityCode")
510
630
  self.product = params.get("product")
511
631
  self.value = params.get("value")
632
+ if params.get("typeValues") is not None:
633
+ self.typeValues = []
634
+ for item in params.get("typeValues"):
635
+ obj = TrafficTypeValue(item)
636
+ self.typeValues.append(obj)
512
637
 
513
638
 
@@ -1083,9 +1083,11 @@ class ChangeNicNetworkTypeResponse(AbstractModel):
1083
1083
  class ReleaseInstancesRequest(AbstractModel):
1084
1084
  def __init__(self):
1085
1085
  self.instanceIds = None
1086
+ self.dependResource = None
1086
1087
 
1087
1088
  def _deserialize(self, params):
1088
1089
  self.instanceIds = params.get("instanceIds")
1090
+ self.dependResource = params.get("dependResource")
1089
1091
 
1090
1092
 
1091
1093
  class ReleaseInstancesResponse(AbstractModel):
@@ -1181,16 +1183,72 @@ class InquiryPriceModifyInstanceTypeResponse(AbstractModel):
1181
1183
  def __init__(self):
1182
1184
  self.requestId = None
1183
1185
  self.specPrice = None
1186
+ self.gpuPrice = None
1184
1187
  self.systemDiskPrice = None
1185
1188
 
1186
1189
  def _deserialize(self, params):
1187
1190
  self.requestId = params.get("requestId")
1188
1191
  if params.get("specPrice") is not None:
1189
1192
  self.specPrice = PriceItem(params.get("specPrice"))
1193
+ if params.get("gpuPrice") is not None:
1194
+ self.gpuPrice = PriceItem(params.get("gpuPrice"))
1190
1195
  if params.get("systemDiskPrice") is not None:
1191
1196
  self.systemDiskPrice = PriceItem(params.get("systemDiskPrice"))
1192
1197
 
1193
1198
 
1199
+ class DescribeZoneGpuInstanceConfigInfosRequest(AbstractModel):
1200
+ def __init__(self):
1201
+ self.zoneId = None
1202
+ self.instanceType = None
1203
+
1204
+ def _deserialize(self, params):
1205
+ self.zoneId = params.get("zoneId")
1206
+ self.instanceType = params.get("instanceType")
1207
+
1208
+
1209
+ class DescribeZoneGpuInstanceConfigInfosResponse(AbstractModel):
1210
+ def __init__(self):
1211
+ self.requestId = None
1212
+ self.instanceTypeQuotaSet = None
1213
+
1214
+ def _deserialize(self, params):
1215
+ self.requestId = params.get("requestId")
1216
+ if params.get("instanceTypeQuotaSet") is not None:
1217
+ self.instanceTypeQuotaSet = []
1218
+ for item in params.get("instanceTypeQuotaSet"):
1219
+ obj = GpuInstanceTypeQuotaItem(item)
1220
+ self.instanceTypeQuotaSet.append(obj)
1221
+
1222
+
1223
+ class GpuInstanceTypeQuotaItem(AbstractModel):
1224
+ def __init__(self, params=None):
1225
+ if params is None:
1226
+ params = {}
1227
+ if len(params) > 0:
1228
+ self._deserialize(params)
1229
+ return
1230
+ self.zoneId = None
1231
+ self.instanceType = None
1232
+ self.cpuCount = None
1233
+ self.memory = None
1234
+ self.gpuAmount = None
1235
+ self.instanceTypeName = None
1236
+ self.bps = None
1237
+ self.pps = None
1238
+ self.inventoryCapacity = None
1239
+
1240
+ def _deserialize(self, params):
1241
+ self.zoneId = params.get("zoneId")
1242
+ self.instanceType = params.get("instanceType")
1243
+ self.cpuCount = params.get("cpuCount")
1244
+ self.memory = params.get("memory")
1245
+ self.gpuAmount = params.get("gpuAmount")
1246
+ self.instanceTypeName = params.get("instanceTypeName")
1247
+ self.bps = params.get("bps")
1248
+ self.pps = params.get("pps")
1249
+ self.inventoryCapacity = params.get("inventoryCapacity")
1250
+
1251
+
1194
1252
  class DescribeImagesRequest(AbstractModel):
1195
1253
  def __init__(self):
1196
1254
  self.zoneId = None
@@ -4356,6 +4414,24 @@ class InquiryPriceChangeEipInternetChargeTypeResponse(AbstractModel):
4356
4414
  self.remoteBandwidthPrice = PriceItem(params.get("remoteBandwidthPrice"))
4357
4415
 
4358
4416
 
4417
+ class ModifyEipTrafficPackageRequest(AbstractModel):
4418
+ def __init__(self):
4419
+ self.eipId = None
4420
+ self.trafficPackageSize = None
4421
+
4422
+ def _deserialize(self, params):
4423
+ self.eipId = params.get("eipId")
4424
+ self.trafficPackageSize = params.get("trafficPackageSize")
4425
+
4426
+
4427
+ class ModifyEipTrafficPackageResponse(AbstractModel):
4428
+ def __init__(self):
4429
+ self.requestId = None
4430
+
4431
+ def _deserialize(self, params):
4432
+ self.requestId = params.get("requestId")
4433
+
4434
+
4359
4435
  class DescribeRoutesRequest(AbstractModel):
4360
4436
  def __init__(self):
4361
4437
  self.routeIds = None
@@ -233,6 +233,15 @@ class ZecClient(AbstractClient):
233
233
  model._deserialize(response)
234
234
  return model
235
235
 
236
+ def DescribeZoneGpuInstanceConfigInfos(self, request):
237
+ """
238
+ 查询可用区售卖的 GPU 规格信息
239
+ """
240
+ response = self._api_call("DescribeZoneGpuInstanceConfigInfos", request)
241
+ model = models.DescribeZoneGpuInstanceConfigInfosResponse()
242
+ model._deserialize(response)
243
+ return model
244
+
236
245
  def DescribeImages(self, request):
237
246
  """
238
247
  查询某节点支持的镜像列表。
@@ -1052,6 +1061,15 @@ class ZecClient(AbstractClient):
1052
1061
  model._deserialize(response)
1053
1062
  return model
1054
1063
 
1064
+ def ModifyEipTrafficPackage(self, request):
1065
+ """
1066
+ 调整弹性公网IP流量包。
1067
+ """
1068
+ response = self._api_call("ModifyEipTrafficPackage", request)
1069
+ model = models.ModifyEipTrafficPackageResponse()
1070
+ model._deserialize(response)
1071
+ return model
1072
+
1055
1073
  def DescribeRoutes(self, request):
1056
1074
  """
1057
1075
  查询路由列表。用户可以根据ID、名称等信息来搜索Route信息。路由列表包括系统生成的以及用户创建的路由。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zenlayercloud-sdk-python
3
- Version: 2.0.61
3
+ Version: 2.0.63
4
4
  Summary: Zenlayer Cloud SDK for Python
5
5
  Home-page: https://github.com/zenlayer/zenlayercloud-sdk-python
6
6
  Author: Zenlayer Cloud
@@ -1,4 +1,4 @@
1
- zenlayercloud/__init__.py,sha256=I6uLeALcWOOqk2MHRSxle79LHPBIWQy83gNG6KRgp_U,95
1
+ zenlayercloud/__init__.py,sha256=lLZGVoM0hmmvF9hChCg7KN0UlpZ4J6-2CCMTNd5X400,95
2
2
  zenlayercloud/aigw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  zenlayercloud/aigw/v20260414/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  zenlayercloud/aigw/v20260414/aigw_client.py,sha256=inQDTflrPy3InIZMOvRTjJGz1vE04Jv89XhLOZYuPis,5990
@@ -19,15 +19,15 @@ zenlayercloud/ccs/v20250901/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI
19
19
  zenlayercloud/ccs/v20250901/ccs_client.py,sha256=udKOGiGDxOCtiF7Wh5RdMObwYeE8akvc4S6n2yz1soY,1124
20
20
  zenlayercloud/ccs/v20250901/models.py,sha256=52DHoBqyr6KQtvxgHnK0Ux2Ukm3Cce_2mEz1IDKYZWg,3110
21
21
  zenlayercloud/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- zenlayercloud/common/abstract_client.py,sha256=dBkNPilsBbjnAbL2jK1KvhdRtPirW-DcWBrvdKNbMSY,5559
22
+ zenlayercloud/common/abstract_client.py,sha256=gWwrUXnh7H6kH_1g2CqyJvxJvVpx6QXgASXDAkZmGGc,6446
23
23
  zenlayercloud/common/abstract_model.py,sha256=4wPo9ZnW0HuKQ9_jDW7Hh9BeJLvzE1gM-eHJi_Ldg_0,1626
24
- zenlayercloud/common/config.py,sha256=eB7Qsvp0BR8IDGdwu3H4Qt-T2p23Vg-f4SAjQJQuZn4,1094
24
+ zenlayercloud/common/config.py,sha256=7Ycuaqh6gN6KWfqkDFWbXL-7XJ4kqWJadlp1xIpWPR0,1907
25
25
  zenlayercloud/common/credential.py,sha256=83uoJoomkud2AoxzAKCncFnO8YHhwFZhdco0I-ohT48,1723
26
26
  zenlayercloud/common/request.py,sha256=TYKa-cS2bCI7uZYX8p1C8rcyIqIE6ezlW63JzG7nSag,2925
27
27
  zenlayercloud/common/response.py,sha256=94XuYv189UaRjxCoS-wH7VBjjnNc26ydWCCfQnjlQxo,497
28
28
  zenlayercloud/common/utils.py,sha256=6HpSEU3AOwMdDiBMvR_LE3FXLQyrvnCneAqxjL_FMbc,354
29
29
  zenlayercloud/common/excpetion/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI2X9BX0HkvM,69
30
- zenlayercloud/common/excpetion/error_code.py,sha256=Z3NdJoP5EIGhHARUPWYzc_iC90KZg6SIceGFLJMEOFw,170
30
+ zenlayercloud/common/excpetion/error_code.py,sha256=LtY4AL-KFnAG3UcU2fxGsfn56_qO2eZIvS8C6D6334o,221
31
31
  zenlayercloud/common/excpetion/zenlayer_cloud_sdk_exception.py,sha256=IVKBhJKEKwbCgVk2K7bAZk8-rA4bBgbAaD2yciqaOBg,866
32
32
  zenlayercloud/ipt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  zenlayercloud/ipt/v20240901/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -51,7 +51,7 @@ zenlayercloud/sdn/v20230830/models.py,sha256=YCBbFYPJlbRuAfFq8YZendTnnSSGgiTkQBv
51
51
  zenlayercloud/sdn/v20230830/sdn_client.py,sha256=fSt_1JPa7gpB6sF5i0W-U3ZOA7CRGlecKYlPgnRjkk4,14299
52
52
  zenlayercloud/traffic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  zenlayercloud/traffic/v20240326/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- zenlayercloud/traffic/v20240326/models.py,sha256=rLm67UaKoXWyKA_DjDKbgO9HTOhvL1MXxPXpBZa4Z2w,16609
54
+ zenlayercloud/traffic/v20240326/models.py,sha256=R1Rzw-SgLyBB42Mvx-BCIHV3Im7KTuT10_9ctjEA4mg,20981
55
55
  zenlayercloud/traffic/v20240326/traffic_client.py,sha256=IpKeSguA76AMvJgHenuAlI94jnRlMZtkbsAYzMuXTyk,3988
56
56
  zenlayercloud/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  zenlayercloud/user/v20240529/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -77,8 +77,8 @@ zenlayercloud/zec/v20240401/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI
77
77
  zenlayercloud/zec/v20240401/models.py,sha256=2y8NHcednqU-_TdxG6WMfdA1ySvDaTeS7SnnxPfOBNE,131319
78
78
  zenlayercloud/zec/v20240401/zec_client.py,sha256=KoDlhy0ufpQB8eHCr4WP1AY5TNvtWK_0XnyoUGA0TeA,29784
79
79
  zenlayercloud/zec/v20250901/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- zenlayercloud/zec/v20250901/models.py,sha256=397WoyAJXGQJvWpJmFNbAtbf4O6hnRiVoz4GU-XtmMg,243537
81
- zenlayercloud/zec/v20250901/zec_client.py,sha256=s0qu7sTPOPENXY2U7RY_qPdWhDdI47Q7mRhthPD-xMk,67497
80
+ zenlayercloud/zec/v20250901/models.py,sha256=L61TQsc-fU3BjkJIvOBy6XeiAZsWNs8FMH7RQ6FId3g,246023
81
+ zenlayercloud/zec/v20250901/zec_client.py,sha256=634ZSL7ypM9pCLvk_-OPeDtGxPYhNUw-8XbbhCTnczw,68137
82
82
  zenlayercloud/zga/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI2X9BX0HkvM,69
83
83
  zenlayercloud/zga/v20241104/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI2X9BX0HkvM,69
84
84
  zenlayercloud/zga/v20241104/models.py,sha256=92gBJss6q0Z5FGk2DfHBTvCdif6OY5cVU32gXOY3E2M,40155
@@ -99,8 +99,8 @@ zenlayercloud/zrm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
99
99
  zenlayercloud/zrm/v20251014/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
100
  zenlayercloud/zrm/v20251014/models.py,sha256=3As3PAdEKe_Cpb1QpGI2_mrMlM2uZ6QOa4isOi09q3I,7491
101
101
  zenlayercloud/zrm/v20251014/zrm_client.py,sha256=p3fKeOdhGdjx_MhFcMuu9wv4bkSiwn_GNrj_570fkMg,2504
102
- zenlayercloud_sdk_python-2.0.61.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
103
- zenlayercloud_sdk_python-2.0.61.dist-info/METADATA,sha256=JG8klBq3KX8fITubFAH2NURFw7UDnODRgqS46AfBDBg,1653
104
- zenlayercloud_sdk_python-2.0.61.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
105
- zenlayercloud_sdk_python-2.0.61.dist-info/top_level.txt,sha256=ZU6L6c0yQDkyO8nG0oGpC6ptc0TNucEncz3xbFsoHmE,14
106
- zenlayercloud_sdk_python-2.0.61.dist-info/RECORD,,
102
+ zenlayercloud_sdk_python-2.0.63.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
103
+ zenlayercloud_sdk_python-2.0.63.dist-info/METADATA,sha256=VOfU6mBs7-rUD9N2oau7dyQkcHPer8kYN8zf5nE1kR4,1653
104
+ zenlayercloud_sdk_python-2.0.63.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
105
+ zenlayercloud_sdk_python-2.0.63.dist-info/top_level.txt,sha256=ZU6L6c0yQDkyO8nG0oGpC6ptc0TNucEncz3xbFsoHmE,14
106
+ zenlayercloud_sdk_python-2.0.63.dist-info/RECORD,,