zenlayercloud-sdk-python 2.0.25__tar.gz → 2.0.27__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 (70) hide show
  1. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/PKG-INFO +1 -1
  2. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/__init__.py +1 -1
  3. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/bmc/v20221120/models.py +40 -0
  4. zenlayercloud_sdk_python-2.0.27/zenlayercloud/ccs/v20250901/ccs_client.py +34 -0
  5. zenlayercloud_sdk_python-2.0.27/zenlayercloud/ccs/v20250901/models.py +112 -0
  6. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/sdn/v20230830/models.py +27 -0
  7. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/user/v20240529/models.py +91 -1
  8. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/user/v20240529/user_client.py +31 -0
  9. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/vm/v20230313/models.py +24 -0
  10. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zec/v20240401/models.py +485 -52
  11. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zec/v20240401/zec_client.py +91 -6
  12. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zga/v20241104/models.py +73 -0
  13. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zga/v20241104/zga_client.py +14 -0
  14. zenlayercloud_sdk_python-2.0.27/zenlayercloud/zls/__init__.py +2 -0
  15. zenlayercloud_sdk_python-2.0.27/zenlayercloud/zls/v20230804/__init__.py +2 -0
  16. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud_sdk_python.egg-info/PKG-INFO +1 -1
  17. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud_sdk_python.egg-info/SOURCES.txt +4 -0
  18. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/LICENSE +0 -0
  19. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/README.rst +0 -0
  20. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/setup.cfg +0 -0
  21. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/setup.py +0 -0
  22. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/alarm/__init__.py +0 -0
  23. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/alarm/v20250307/__init__.py +0 -0
  24. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/alarm/v20250307/alarm_client.py +0 -0
  25. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/alarm/v20250307/models.py +0 -0
  26. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/bmc/__init__.py +0 -0
  27. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/bmc/v20221120/__init__.py +0 -0
  28. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/bmc/v20221120/bmc_client.py +0 -0
  29. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/common/excpetion → zenlayercloud_sdk_python-2.0.27/zenlayercloud/ccs}/__init__.py +0 -0
  30. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/maintenance → zenlayercloud_sdk_python-2.0.27/zenlayercloud/ccs/v20250901}/__init__.py +0 -0
  31. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/__init__.py +0 -0
  32. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/abstract_client.py +0 -0
  33. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/abstract_model.py +0 -0
  34. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/config.py +0 -0
  35. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/credential.py +0 -0
  36. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/maintenance/v20250310 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/common/excpetion}/__init__.py +0 -0
  37. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/excpetion/error_code.py +0 -0
  38. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/excpetion/zenlayer_cloud_sdk_exception.py +0 -0
  39. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/request.py +0 -0
  40. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/response.py +0 -0
  41. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/common/utils.py +0 -0
  42. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/sdn → zenlayercloud_sdk_python-2.0.27/zenlayercloud/maintenance}/__init__.py +0 -0
  43. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/sdn/v20230830 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/maintenance/v20250310}/__init__.py +0 -0
  44. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/maintenance/v20250310/maintenance_client.py +0 -0
  45. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/maintenance/v20250310/models.py +0 -0
  46. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/user → zenlayercloud_sdk_python-2.0.27/zenlayercloud/sdn}/__init__.py +0 -0
  47. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/user/v20240529 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/sdn/v20230830}/__init__.py +0 -0
  48. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/sdn/v20230830/sdn_client.py +0 -0
  49. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/traffic/__init__.py +0 -0
  50. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/traffic/v20240326/__init__.py +0 -0
  51. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/traffic/v20240326/models.py +0 -0
  52. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/traffic/v20240326/traffic_client.py +0 -0
  53. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/vm → zenlayercloud_sdk_python-2.0.27/zenlayercloud/user}/__init__.py +0 -0
  54. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/vm/v20230313 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/user/v20240529}/__init__.py +0 -0
  55. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zbc → zenlayercloud_sdk_python-2.0.27/zenlayercloud/vm}/__init__.py +0 -0
  56. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zbc/v20240809 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/vm/v20230313}/__init__.py +0 -0
  57. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/vm/v20230313/vm_client.py +0 -0
  58. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zec → zenlayercloud_sdk_python-2.0.27/zenlayercloud/zbc}/__init__.py +0 -0
  59. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zec/v20240401 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/zbc/v20240809}/__init__.py +0 -0
  60. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zbc/v20240809/models.py +0 -0
  61. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zbc/v20240809/zbc_client.py +0 -0
  62. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zga → zenlayercloud_sdk_python-2.0.27/zenlayercloud/zec}/__init__.py +0 -0
  63. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zga/v20241104 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/zec/v20240401}/__init__.py +0 -0
  64. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zls → zenlayercloud_sdk_python-2.0.27/zenlayercloud/zga}/__init__.py +0 -0
  65. {zenlayercloud_sdk_python-2.0.25/zenlayercloud/zls/v20230804 → zenlayercloud_sdk_python-2.0.27/zenlayercloud/zga/v20241104}/__init__.py +0 -0
  66. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zls/v20230804/models.py +0 -0
  67. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud/zls/v20230804/zls_client.py +0 -0
  68. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud_sdk_python.egg-info/dependency_links.txt +0 -0
  69. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud_sdk_python.egg-info/requires.txt +0 -0
  70. {zenlayercloud_sdk_python-2.0.25 → zenlayercloud_sdk_python-2.0.27}/zenlayercloud_sdk_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zenlayercloud-sdk-python
3
- Version: 2.0.25
3
+ Version: 2.0.27
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,5 +1,5 @@
1
1
  # Zenlayer.com Inc.
2
2
  # Copyright (c) 2014-2023 All Rights Reserved.
3
3
 
4
- __version__ = '2.0.025'
4
+ __version__ = '2.0.027'
5
5
 
@@ -14,6 +14,7 @@ class CreateInstancesRequest(AbstractModel):
14
14
  self.instanceTypeId = None
15
15
  self.imageId = None
16
16
  self.ipxeUrl = None
17
+ self.keyId = None
17
18
  self.resourceGroupId = None
18
19
  self.instanceName = None
19
20
  self.hostname = None
@@ -29,6 +30,8 @@ class CreateInstancesRequest(AbstractModel):
29
30
  self.nic = None
30
31
  self.clusterId = None
31
32
  self.enablePrimaryIPv6 = None
33
+ self.marketingOptions = None
34
+ self.userData = None
32
35
 
33
36
  def _deserialize(self, params):
34
37
  self.zoneId = params.get("zoneId")
@@ -38,6 +41,7 @@ class CreateInstancesRequest(AbstractModel):
38
41
  self.instanceTypeId = params.get("instanceTypeId")
39
42
  self.imageId = params.get("imageId")
40
43
  self.ipxeUrl = params.get("ipxeUrl")
44
+ self.keyId = params.get("keyId")
41
45
  self.resourceGroupId = params.get("imageId")
42
46
  self.instanceName = params.get("instanceName")
43
47
  self.hostname = params.get("hostname")
@@ -59,6 +63,9 @@ class CreateInstancesRequest(AbstractModel):
59
63
  self.nic = Nic(params.get("nic"))
60
64
  self.clusterId = params.get("clusterId")
61
65
  self.enablePrimaryIPv6 = params.get("enablePrimaryIPv6")
66
+ if params.get("marketingOptions") is not None:
67
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
68
+ self.userData = params.get("userData")
62
69
 
63
70
 
64
71
  class CreateInstancesResponse(AbstractModel):
@@ -74,6 +81,23 @@ class CreateInstancesResponse(AbstractModel):
74
81
  self.requestId = params.get("requestId")
75
82
 
76
83
 
84
+
85
+ class MarketingInfo(AbstractModel):
86
+
87
+ def __init__(self, params=None):
88
+ if params is None:
89
+ params = {}
90
+ if len(params) > 0:
91
+ self._deserialize(params)
92
+ return
93
+ self.discountCode = None
94
+ self.usePocVoucher = None
95
+
96
+ def _deserialize(self, params):
97
+ self.discountCode = params.get("discountCode")
98
+ self.usePocVoucher = params.get("usePocVoucher")
99
+
100
+
77
101
  class ChargePrepaid(AbstractModel):
78
102
  """描述了实例的计费模式
79
103
 
@@ -395,6 +419,7 @@ class InstanceInfo(AbstractModel):
395
419
  self.imageId = None
396
420
  self.imageName = None
397
421
  self.ipxeUrl = None
422
+ self.keyId = None
398
423
  self.instanceChargeType = None
399
424
  self.bandwidthOutMbps = None
400
425
  self.internetChargeType = None
@@ -425,6 +450,7 @@ class InstanceInfo(AbstractModel):
425
450
  self.imageId = params.get("imageId")
426
451
  self.imageName = params.get("imageName")
427
452
  self.ipxeUrl = params.get("ipxeUrl")
453
+ self.keyId = params.get("keyId")
428
454
  self.instanceChargeType = params.get("instanceChargeType")
429
455
  self.bandwidthOutMbps = params.get("bandwidthOutMbps")
430
456
  self.internetChargeType = params.get("internetChargeType")
@@ -512,17 +538,20 @@ class ReinstallInstanceRequest(AbstractModel):
512
538
  self.instanceId = None
513
539
  self.imageId = None
514
540
  self.ipxeUrl = None
541
+ self.keyId = None
515
542
  self.hostname = None
516
543
  self.password = None
517
544
  self.sshKeys = None
518
545
  self.raidConfig = None
519
546
  self.partitions = None
520
547
  self.nic = None
548
+ self.userData = None
521
549
 
522
550
  def _deserialize(self, params):
523
551
  self.instanceId = params.get("instanceId")
524
552
  self.imageId = params.get("imageId")
525
553
  self.ipxeUrl = params.get("ipxeUrl")
554
+ self.keyId = params.get("keyId")
526
555
  self.hostname = params.get("hostname")
527
556
  self.password = params.get("password")
528
557
  self.sshKeys = params.get("sshKeys")
@@ -535,6 +564,7 @@ class ReinstallInstanceRequest(AbstractModel):
535
564
  self.partitions.append(obj)
536
565
  if params.get("nic") is not None:
537
566
  self.nic = Nic(params.get("nic"))
567
+ self.userData = params.get("userData")
538
568
 
539
569
 
540
570
  class ReinstallInstanceResponse(AbstractModel):
@@ -1350,6 +1380,7 @@ class AllocateEipAddressesRequest(AbstractModel):
1350
1380
  self.eipChargePrepaid = None
1351
1381
  self.amount = None
1352
1382
  self.resourceGroupId = None
1383
+ self.marketingOptions = None
1353
1384
 
1354
1385
  def _deserialize(self, params):
1355
1386
  self.zoneId = params.get("zoneId")
@@ -1358,6 +1389,9 @@ class AllocateEipAddressesRequest(AbstractModel):
1358
1389
  self.eipChargePrepaid = ChargePrepaid(params.get("eipChargePrepaid"))
1359
1390
  self.amount = params.get("amount")
1360
1391
  self.resourceGroupId = params.get("resourceGroupId")
1392
+ if params.get("marketingOptions") is not None:
1393
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
1394
+
1361
1395
 
1362
1396
 
1363
1397
  class AllocateEipAddressesResponse(AbstractModel):
@@ -1865,6 +1899,7 @@ class CreateIpv4BlockRequest(AbstractModel):
1865
1899
  self.netmask = None
1866
1900
  self.amount = None
1867
1901
  self.resourceGroupId = None
1902
+ self.marketingOptions = None
1868
1903
 
1869
1904
  def _deserialize(self, params):
1870
1905
  self.zoneId = params.get("zoneId")
@@ -1875,6 +1910,8 @@ class CreateIpv4BlockRequest(AbstractModel):
1875
1910
  self.netmask = params.get("netmask")
1876
1911
  self.amount = params.get("amount")
1877
1912
  self.resourceGroupId = params.get("resourceGroupId")
1913
+ if params.get("marketingOptions") is not None:
1914
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
1878
1915
 
1879
1916
 
1880
1917
  class CreateIpv4BlockResponse(AbstractModel):
@@ -2923,6 +2960,7 @@ class CreateLoadBalancerRequest(AbstractModel):
2923
2960
  self.cidrBlockId = None
2924
2961
  self.masterIp = None
2925
2962
  self.backupIp = None
2963
+ self.marketingOptions = None
2926
2964
 
2927
2965
  def _deserialize(self, params):
2928
2966
  self.clientToken = params.get("clientToken")
@@ -2938,6 +2976,8 @@ class CreateLoadBalancerRequest(AbstractModel):
2938
2976
  self.cidrBlockId = params.get("cidrBlockId")
2939
2977
  self.masterIp = params.get("masterIp")
2940
2978
  self.backupIp = params.get("backupIp")
2979
+ if params.get("marketingOptions") is not None:
2980
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
2941
2981
 
2942
2982
 
2943
2983
  class InstanceChargePrepaid(AbstractModel):
@@ -0,0 +1,34 @@
1
+ # Zenlayer.com Inc.
2
+ # Copyright (c) 2014-2024 All Rights Reserved.
3
+ from zenlayercloud.ccs.v20250901 import models
4
+ from zenlayercloud.common.abstract_client import AbstractClient
5
+
6
+
7
+ class CcsClient(AbstractClient):
8
+ _api_version = "2025-09-01"
9
+ _service = "ccs"
10
+
11
+ def DescribeKeyPairs(self, request):
12
+ response = self._api_call("DescribeKeyPairs", request)
13
+ model = models.DescribeKeyPairsResponse()
14
+ model._deserialize(response)
15
+ return model
16
+
17
+ def ImportKeyPair(self, request):
18
+ response = self._api_call("ImportKeyPair", request)
19
+ model = models.ImportKeyPairResponse()
20
+ model._deserialize(response)
21
+ return model
22
+
23
+ def ModifyKeyPairAttribute(self, request):
24
+ response = self._api_call("ModifyKeyPairAttribute", request)
25
+ model = models.ModifyKeyPairAttributeResponse()
26
+ model._deserialize(response)
27
+ return model
28
+
29
+ def DeleteKeyPairs(self, request):
30
+ response = self._api_call("DeleteKeyPairs", request)
31
+ model = models.DeleteKeyPairsResponse()
32
+ model._deserialize(response)
33
+ return model
34
+
@@ -0,0 +1,112 @@
1
+ # Zenlayer.com Inc.
2
+ # Copyright (c) 2014-2024 All Rights Reserved.
3
+ from zenlayercloud.common.abstract_model import AbstractModel
4
+
5
+
6
+ class DescribeKeyPairsRequest(AbstractModel):
7
+ def __init__(self):
8
+ self.keyIds = None
9
+ self.keyName = None
10
+ self.pageSize = None
11
+ self.pageNum = None
12
+
13
+ def _deserialize(self, params):
14
+ self.keyIds = params.get("keyIds")
15
+ self.keyName = params.get("keyName")
16
+ self.pageSize = params.get("pageSize")
17
+ self.pageNum = params.get("pageNum")
18
+
19
+
20
+ class DescribeKeyPairsResponse(AbstractModel):
21
+ def __init__(self):
22
+ self.requestId = None
23
+ self.totalCount = None
24
+ self.dataSet = None
25
+
26
+ def _deserialize(self, params):
27
+ self.requestId = params.get("requestId")
28
+ self.totalCount = params.get("totalCount")
29
+ if params.get("dataSet") is not None:
30
+ self.dataSet = []
31
+ for item in params.get("dataSet"):
32
+ obj = KeyPair(item)
33
+ self.dataSet.append(obj)
34
+
35
+
36
+ class KeyPair(AbstractModel):
37
+ def __init__(self, params=None):
38
+ if params is None:
39
+ params = {}
40
+ if len(params) > 0:
41
+ self._deserialize(params)
42
+ return
43
+ self.keyId = None
44
+ self.keyName = None
45
+ self.publicKey = None
46
+ self.keyDescription = None
47
+ self.createTime = None
48
+
49
+ def _deserialize(self, params):
50
+ self.keyId = params.get("keyId")
51
+ self.keyName = params.get("keyName")
52
+ self.publicKey = params.get("publicKey")
53
+ self.keyDescription = params.get("keyDescription")
54
+ self.createTime = params.get("createTime")
55
+
56
+
57
+ class ImportKeyPairRequest(AbstractModel):
58
+ def __init__(self):
59
+ self.keyName = None
60
+ self.keyDescription = None
61
+ self.publicKey = None
62
+
63
+ def _deserialize(self, params):
64
+ self.keyName = params.get("keyName")
65
+ self.keyDescription = params.get("keyDescription")
66
+ self.publicKey = params.get("publicKey")
67
+
68
+
69
+ class ImportKeyPairResponse(AbstractModel):
70
+ def __init__(self):
71
+ self.requestId = None
72
+ self.keyId = None
73
+
74
+ def _deserialize(self, params):
75
+ self.requestId = params.get("requestId")
76
+ self.keyId = params.get("keyId")
77
+
78
+
79
+ class ModifyKeyPairAttributeRequest(AbstractModel):
80
+ def __init__(self):
81
+ self.keyId = None
82
+ self.keyDescription = None
83
+
84
+ def _deserialize(self, params):
85
+ self.keyId = params.get("keyId")
86
+ self.keyDescription = params.get("keyDescription")
87
+
88
+
89
+ class ModifyKeyPairAttributeResponse(AbstractModel):
90
+ def __init__(self):
91
+ self.requestId = None
92
+
93
+ def _deserialize(self, params):
94
+ self.requestId = params.get("requestId")
95
+
96
+
97
+ class DeleteKeyPairsRequest(AbstractModel):
98
+ def __init__(self):
99
+ self.keyIds = None
100
+
101
+ def _deserialize(self, params):
102
+ self.keyIds = params.get("keyIds")
103
+
104
+
105
+ class DeleteKeyPairsResponse(AbstractModel):
106
+ def __init__(self):
107
+ self.requestId = None
108
+
109
+ def _deserialize(self, params):
110
+ self.requestId = params.get("requestId")
111
+
112
+
@@ -347,6 +347,7 @@ class CreatePortRequest(AbstractModel):
347
347
  self.portRemarks = None
348
348
  self.portType = None
349
349
  self.businessEntityName = None
350
+ self.marketingOptions = None
350
351
 
351
352
  def _deserialize(self, params):
352
353
  self.dcId = params.get("dcId")
@@ -354,6 +355,8 @@ class CreatePortRequest(AbstractModel):
354
355
  self.portRemarks = params.get("portRemarks")
355
356
  self.portType = params.get("portType")
356
357
  self.businessEntityName = params.get("businessEntityName")
358
+ if params.get("marketingOptions") is not None:
359
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
357
360
 
358
361
 
359
362
  class CreatePortResponse(AbstractModel):
@@ -367,6 +370,24 @@ class CreatePortResponse(AbstractModel):
367
370
  self.portId = params.get("portId")
368
371
 
369
372
 
373
+
374
+ class MarketingInfo(AbstractModel):
375
+
376
+ def __init__(self, params=None):
377
+ if params is None:
378
+ params = {}
379
+ if len(params) > 0:
380
+ self._deserialize(params)
381
+ return
382
+ self.discountCode = None
383
+ self.usePocVoucher = None
384
+
385
+ def _deserialize(self, params):
386
+ self.discountCode = params.get("discountCode")
387
+ self.usePocVoucher = params.get("usePocVoucher")
388
+
389
+
390
+
370
391
  class DescribeDataCenterPortPriceRequest(AbstractModel):
371
392
  def __init__(self):
372
393
  self.dcId = None
@@ -870,6 +891,7 @@ class CreatePrivateConnectRequest(AbstractModel):
870
891
  self.endpointZ = None
871
892
  self.bandwidthMbps = None
872
893
  self.resourceGroupId = None
894
+ self.marketingOptions = None
873
895
 
874
896
  def _deserialize(self, params):
875
897
  self.privateConnectName = params.get("privateConnectName")
@@ -879,6 +901,8 @@ class CreatePrivateConnectRequest(AbstractModel):
879
901
  self.endpointZ = CreateEndpointParam(params.get("endpointZ"))
880
902
  self.bandwidthMbps = params.get("bandwidthMbps")
881
903
  self.resourceGroupId = params.get("resourceGroupId")
904
+ if params.get("marketingOptions") is not None:
905
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
882
906
 
883
907
 
884
908
  class CreatePrivateConnectResponse(AbstractModel):
@@ -1383,6 +1407,7 @@ class CreateCloudRouterRequest(AbstractModel):
1383
1407
  self.cloudRouterDescription = None
1384
1408
  self.edgePoints = None
1385
1409
  self.resourceGroupId = None
1410
+ self.marketingOptions = None
1386
1411
 
1387
1412
  def _deserialize(self, params):
1388
1413
  self.cloudRouterName = params.get("cloudRouterName")
@@ -1393,6 +1418,8 @@ class CreateCloudRouterRequest(AbstractModel):
1393
1418
  obj = CreateCloudRouterEdgePoint(item)
1394
1419
  self.edgePoints.append(obj)
1395
1420
  self.resourceGroupId = params.get("resourceGroupId")
1421
+ if params.get("marketingOptions") is not None:
1422
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
1396
1423
 
1397
1424
 
1398
1425
  class CreateCloudRouterResponse(AbstractModel):
@@ -111,4 +111,94 @@ class ResourceInfo(AbstractModel):
111
111
  self.aliasName = params.get("aliasName")
112
112
  self.resourceType = params.get("resourceType")
113
113
  self.createTime = params.get("createTime")
114
- self.updateTime = params.get("updateTime")
114
+ self.updateTime = params.get("updateTime")
115
+
116
+
117
+ class CreateResourceGroupRequest(AbstractModel):
118
+
119
+ def __init__(self):
120
+ self.name = None
121
+
122
+ def _deserialize(self, params):
123
+ self.name = params.get("name")
124
+
125
+
126
+ class CreateResourceGroupResponse(AbstractModel):
127
+
128
+ def __init__(self):
129
+ self.name = None
130
+ self.resourceGroupId = None
131
+ self.createTime = None
132
+
133
+ def _deserialize(self, params):
134
+ self.name = params.get("name")
135
+ self.createTime = params.get("createTime")
136
+ self.resourceGroupId = params.get("resourceGroupId")
137
+
138
+ class AddResourceResourceGroupRequest(AbstractModel):
139
+
140
+ def __init__(self):
141
+ self.resources = None
142
+ self.resourceGroupId = None
143
+
144
+
145
+ def _deserialize(self, params):
146
+ self.resources = params.get("resources")
147
+ self.resourceGroupId = params.get("resourceGroupId")
148
+
149
+
150
+ class AddResourceResourceGroupResponse(AbstractModel):
151
+
152
+ def __init__(self):
153
+ self.requestId = None
154
+
155
+
156
+ def _deserialize(self, params):
157
+ self.requestId = params.get("requestId")
158
+
159
+ class DeleteResourceGroupRequest(AbstractModel):
160
+
161
+ def __init__(self):
162
+ self.resourceGroupId = None
163
+
164
+
165
+ def _deserialize(self, params):
166
+ self.resourceGroupId = params.get("resourceGroupId")
167
+
168
+ class DeleteResourceGroupResponse(AbstractModel):
169
+
170
+ def __init__(self):
171
+ self.requestId = None
172
+
173
+
174
+ def _deserialize(self, params):
175
+ self.requestId = params.get("requestId")
176
+
177
+
178
+ class ModifyResourceGroupRequest(AbstractModel):
179
+
180
+ def __init__(self):
181
+ self.resourceGroupId = None
182
+ self.name = None
183
+
184
+ def _deserialize(self, params):
185
+ self.resourceGroupId = params.get("resourceGroupId")
186
+ self.name = params.get("name")
187
+
188
+ class ModifyResourceGroupResponse(AbstractModel):
189
+
190
+ def __init__(self):
191
+ self.requestId = None
192
+ self.name = None
193
+ self.resourceGroupId = None
194
+ self.createTime = None
195
+
196
+
197
+ def _deserialize(self, params):
198
+ self.requestId = params.get("requestId")
199
+ self.name = params.get("name")
200
+ self.createTime = params.get("createTime")
201
+ self.resourceGroupId = params.get("resourceGroupId")
202
+
203
+
204
+
@@ -31,3 +31,34 @@ class UserClient(AbstractClient):
31
31
  model._deserialize(response)
32
32
  return model
33
33
 
34
+ def CreateResourceGroup(self, request):
35
+ response = self._api_call("CreateResourceGroup", request)
36
+
37
+ model = models.CreateResourceGroupResponse()
38
+ model._deserialize(response)
39
+ return model
40
+
41
+ def ModifyResourceGroup(self, request):
42
+ response = self._api_call("ModifyResourceGroup", request)
43
+
44
+ model = models.ModifyResourceGroupResponse()
45
+ model._deserialize(response)
46
+ return model
47
+
48
+ def DeleteResourceGroup(self, request):
49
+ response = self._api_call("DeleteResourceGroup", request)
50
+
51
+ model = models.DeleteResourceGroupResponse()
52
+ model._deserialize(response)
53
+ return model
54
+
55
+ def AddResourceResourceGroup(self, request):
56
+ response = self._api_call("AddResourceResourceGroup", request)
57
+
58
+ model = models.AddResourceResourceGroupResponse()
59
+ model._deserialize(response)
60
+ return model
61
+
62
+
63
+
64
+
@@ -286,6 +286,7 @@ class CreateInstancesRequest(AbstractModel):
286
286
  self.trafficPackageSize = None
287
287
  self.subnetId = None
288
288
  self.enableIpv6 = None
289
+ self.enableIpv4 = None
289
290
  self.cpuPassThrough = None
290
291
  self.initScript = None
291
292
  self.systemDisk = None
@@ -295,6 +296,7 @@ class CreateInstancesRequest(AbstractModel):
295
296
  self.clusterId = None
296
297
  self.networkMode = None
297
298
  self.diskPreAllocated = None
299
+ self.marketingOptions = None
298
300
 
299
301
  def _deserialize(self, params):
300
302
  self.zoneId = params.get("zoneId")
@@ -313,6 +315,7 @@ class CreateInstancesRequest(AbstractModel):
313
315
  self.trafficPackageSize = params.get("trafficPackageSize")
314
316
  self.subnetId = params.get("subnetId")
315
317
  self.enableIpv6 = params.get("enableIpv6")
318
+ self.enableIpv4 = params.get("enableIpv4")
316
319
  self.cpuPassThrough = params.get("cpuPassThrough")
317
320
  self.initScript = params.get("initScript")
318
321
  if params.get("systemDisk") is not None:
@@ -328,6 +331,24 @@ class CreateInstancesRequest(AbstractModel):
328
331
  self.clusterId = params.get("clusterId")
329
332
  self.networkMode = params.get("networkMode")
330
333
  self.diskPreAllocated = params.get("diskPreAllocated")
334
+ if params.get("marketingOptions") is not None:
335
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
336
+
337
+
338
+ class MarketingInfo(AbstractModel):
339
+
340
+ def __init__(self, params=None):
341
+ if params is None:
342
+ params = {}
343
+ if len(params) > 0:
344
+ self._deserialize(params)
345
+ return
346
+ self.discountCode = None
347
+ self.usePocVoucher = None
348
+
349
+ def _deserialize(self, params):
350
+ self.discountCode = params.get("discountCode")
351
+ self.usePocVoucher = params.get("usePocVoucher")
331
352
 
332
353
 
333
354
  class Nic(AbstractModel):
@@ -1088,6 +1109,7 @@ class CreateDisksRequest(AbstractModel):
1088
1109
  self.zoneId = None
1089
1110
  self.diskAmount = None
1090
1111
  self.resourceGroupId = None
1112
+ self.marketingOptions = None
1091
1113
 
1092
1114
  def _deserialize(self, params):
1093
1115
  self.chargeType = params.get("chargeType")
@@ -1100,6 +1122,8 @@ class CreateDisksRequest(AbstractModel):
1100
1122
  self.zoneId = params.get("zoneId")
1101
1123
  self.diskAmount = params.get("diskAmount")
1102
1124
  self.resourceGroupId = params.get("resourceGroupId")
1125
+ if params.get("marketingOptions") is not None:
1126
+ self.marketingOptions = MarketingInfo(params.get("marketingOptions"))
1103
1127
 
1104
1128
 
1105
1129
  class CreateDisksResponse(AbstractModel):