alibabacloud-vpc20160428 6.9.4__py3-none-any.whl → 6.9.6__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.
- alibabacloud_vpc20160428/__init__.py +1 -1
- alibabacloud_vpc20160428/client.py +100 -32
- alibabacloud_vpc20160428/models.py +1387 -163
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.6.dist-info}/METADATA +2 -2
- alibabacloud_vpc20160428-6.9.6.dist-info/RECORD +8 -0
- alibabacloud_vpc20160428-6.9.4.dist-info/RECORD +0 -8
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.6.dist-info}/LICENSE +0 -0
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.6.dist-info}/WHEEL +0 -0
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.6.dist-info}/top_level.txt +0 -0
|
@@ -8642,6 +8642,39 @@ class CreateExpressCloudConnectionResponse(TeaModel):
|
|
|
8642
8642
|
return self
|
|
8643
8643
|
|
|
8644
8644
|
|
|
8645
|
+
class CreateExpressConnectTrafficQosRequestTags(TeaModel):
|
|
8646
|
+
def __init__(
|
|
8647
|
+
self,
|
|
8648
|
+
key: str = None,
|
|
8649
|
+
value: str = None,
|
|
8650
|
+
):
|
|
8651
|
+
self.key = key
|
|
8652
|
+
self.value = value
|
|
8653
|
+
|
|
8654
|
+
def validate(self):
|
|
8655
|
+
pass
|
|
8656
|
+
|
|
8657
|
+
def to_map(self):
|
|
8658
|
+
_map = super().to_map()
|
|
8659
|
+
if _map is not None:
|
|
8660
|
+
return _map
|
|
8661
|
+
|
|
8662
|
+
result = dict()
|
|
8663
|
+
if self.key is not None:
|
|
8664
|
+
result['Key'] = self.key
|
|
8665
|
+
if self.value is not None:
|
|
8666
|
+
result['Value'] = self.value
|
|
8667
|
+
return result
|
|
8668
|
+
|
|
8669
|
+
def from_map(self, m: dict = None):
|
|
8670
|
+
m = m or dict()
|
|
8671
|
+
if m.get('Key') is not None:
|
|
8672
|
+
self.key = m.get('Key')
|
|
8673
|
+
if m.get('Value') is not None:
|
|
8674
|
+
self.value = m.get('Value')
|
|
8675
|
+
return self
|
|
8676
|
+
|
|
8677
|
+
|
|
8645
8678
|
class CreateExpressConnectTrafficQosRequest(TeaModel):
|
|
8646
8679
|
def __init__(
|
|
8647
8680
|
self,
|
|
@@ -8651,7 +8684,9 @@ class CreateExpressConnectTrafficQosRequest(TeaModel):
|
|
|
8651
8684
|
qos_description: str = None,
|
|
8652
8685
|
qos_name: str = None,
|
|
8653
8686
|
region_id: str = None,
|
|
8687
|
+
resource_group_id: str = None,
|
|
8654
8688
|
resource_owner_account: str = None,
|
|
8689
|
+
tags: List[CreateExpressConnectTrafficQosRequestTags] = None,
|
|
8655
8690
|
):
|
|
8656
8691
|
# The client token that is used to ensure the idempotence of the request.
|
|
8657
8692
|
#
|
|
@@ -8675,10 +8710,15 @@ class CreateExpressConnectTrafficQosRequest(TeaModel):
|
|
|
8675
8710
|
#
|
|
8676
8711
|
# This parameter is required.
|
|
8677
8712
|
self.region_id = region_id
|
|
8713
|
+
self.resource_group_id = resource_group_id
|
|
8678
8714
|
self.resource_owner_account = resource_owner_account
|
|
8715
|
+
self.tags = tags
|
|
8679
8716
|
|
|
8680
8717
|
def validate(self):
|
|
8681
|
-
|
|
8718
|
+
if self.tags:
|
|
8719
|
+
for k in self.tags:
|
|
8720
|
+
if k:
|
|
8721
|
+
k.validate()
|
|
8682
8722
|
|
|
8683
8723
|
def to_map(self):
|
|
8684
8724
|
_map = super().to_map()
|
|
@@ -8698,8 +8738,14 @@ class CreateExpressConnectTrafficQosRequest(TeaModel):
|
|
|
8698
8738
|
result['QosName'] = self.qos_name
|
|
8699
8739
|
if self.region_id is not None:
|
|
8700
8740
|
result['RegionId'] = self.region_id
|
|
8741
|
+
if self.resource_group_id is not None:
|
|
8742
|
+
result['ResourceGroupId'] = self.resource_group_id
|
|
8701
8743
|
if self.resource_owner_account is not None:
|
|
8702
8744
|
result['ResourceOwnerAccount'] = self.resource_owner_account
|
|
8745
|
+
result['Tags'] = []
|
|
8746
|
+
if self.tags is not None:
|
|
8747
|
+
for k in self.tags:
|
|
8748
|
+
result['Tags'].append(k.to_map() if k else None)
|
|
8703
8749
|
return result
|
|
8704
8750
|
|
|
8705
8751
|
def from_map(self, m: dict = None):
|
|
@@ -8716,8 +8762,15 @@ class CreateExpressConnectTrafficQosRequest(TeaModel):
|
|
|
8716
8762
|
self.qos_name = m.get('QosName')
|
|
8717
8763
|
if m.get('RegionId') is not None:
|
|
8718
8764
|
self.region_id = m.get('RegionId')
|
|
8765
|
+
if m.get('ResourceGroupId') is not None:
|
|
8766
|
+
self.resource_group_id = m.get('ResourceGroupId')
|
|
8719
8767
|
if m.get('ResourceOwnerAccount') is not None:
|
|
8720
8768
|
self.resource_owner_account = m.get('ResourceOwnerAccount')
|
|
8769
|
+
self.tags = []
|
|
8770
|
+
if m.get('Tags') is not None:
|
|
8771
|
+
for k in m.get('Tags'):
|
|
8772
|
+
temp_model = CreateExpressConnectTrafficQosRequestTags()
|
|
8773
|
+
self.tags.append(temp_model.from_map(k))
|
|
8721
8774
|
return self
|
|
8722
8775
|
|
|
8723
8776
|
|
|
@@ -9809,6 +9862,7 @@ class CreateForwardEntryRequest(TeaModel):
|
|
|
9809
9862
|
def __init__(
|
|
9810
9863
|
self,
|
|
9811
9864
|
client_token: str = None,
|
|
9865
|
+
dry_run: bool = None,
|
|
9812
9866
|
external_ip: str = None,
|
|
9813
9867
|
external_port: str = None,
|
|
9814
9868
|
forward_entry_name: str = None,
|
|
@@ -9829,6 +9883,7 @@ class CreateForwardEntryRequest(TeaModel):
|
|
|
9829
9883
|
#
|
|
9830
9884
|
# > If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
|
|
9831
9885
|
self.client_token = client_token
|
|
9886
|
+
self.dry_run = dry_run
|
|
9832
9887
|
# * The EIP that can be accessed over the Internet when you configure a DNAT entry for an Internet NAT gateway.
|
|
9833
9888
|
# * The NAT IP address that can be accessed by external networks when you configure a DNAT entry for a VPC NAT gateway.
|
|
9834
9889
|
#
|
|
@@ -9903,6 +9958,8 @@ class CreateForwardEntryRequest(TeaModel):
|
|
|
9903
9958
|
result = dict()
|
|
9904
9959
|
if self.client_token is not None:
|
|
9905
9960
|
result['ClientToken'] = self.client_token
|
|
9961
|
+
if self.dry_run is not None:
|
|
9962
|
+
result['DryRun'] = self.dry_run
|
|
9906
9963
|
if self.external_ip is not None:
|
|
9907
9964
|
result['ExternalIp'] = self.external_ip
|
|
9908
9965
|
if self.external_port is not None:
|
|
@@ -9935,6 +9992,8 @@ class CreateForwardEntryRequest(TeaModel):
|
|
|
9935
9992
|
m = m or dict()
|
|
9936
9993
|
if m.get('ClientToken') is not None:
|
|
9937
9994
|
self.client_token = m.get('ClientToken')
|
|
9995
|
+
if m.get('DryRun') is not None:
|
|
9996
|
+
self.dry_run = m.get('DryRun')
|
|
9938
9997
|
if m.get('ExternalIp') is not None:
|
|
9939
9998
|
self.external_ip = m.get('ExternalIp')
|
|
9940
9999
|
if m.get('ExternalPort') is not None:
|
|
@@ -12719,7 +12778,19 @@ class CreateNatGatewayRequestAccessMode(TeaModel):
|
|
|
12719
12778
|
mode_value: str = None,
|
|
12720
12779
|
tunnel_type: str = None,
|
|
12721
12780
|
):
|
|
12781
|
+
# Access mode. Valid values:
|
|
12782
|
+
#
|
|
12783
|
+
# - **route**: route mode
|
|
12784
|
+
#
|
|
12785
|
+
# - **tunnel**: tunnel mode
|
|
12786
|
+
#
|
|
12787
|
+
# > If this parameter is specified, you must set **PrivateLinkEnabled** to **true**.
|
|
12722
12788
|
self.mode_value = mode_value
|
|
12789
|
+
# Tunnel mode type:
|
|
12790
|
+
#
|
|
12791
|
+
# - **geneve**: Geneve type
|
|
12792
|
+
#
|
|
12793
|
+
# > This value takes effect if the access mode is the tunnel mode.
|
|
12723
12794
|
self.tunnel_type = tunnel_type
|
|
12724
12795
|
|
|
12725
12796
|
def validate(self):
|
|
@@ -12752,9 +12823,9 @@ class CreateNatGatewayRequestTag(TeaModel):
|
|
|
12752
12823
|
key: str = None,
|
|
12753
12824
|
value: str = None,
|
|
12754
12825
|
):
|
|
12755
|
-
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length
|
|
12826
|
+
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
12756
12827
|
self.key = key
|
|
12757
|
-
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag
|
|
12828
|
+
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
12758
12829
|
self.value = value
|
|
12759
12830
|
|
|
12760
12831
|
def validate(self):
|
|
@@ -12809,6 +12880,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12809
12880
|
v_switch_id: str = None,
|
|
12810
12881
|
vpc_id: str = None,
|
|
12811
12882
|
):
|
|
12883
|
+
# The access mode for reverse access to the VPC NAT gateway.
|
|
12812
12884
|
self.access_mode = access_mode
|
|
12813
12885
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12814
12886
|
self.auto_pay = auto_pay
|
|
@@ -12826,13 +12898,11 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12826
12898
|
self.duration = duration
|
|
12827
12899
|
# The mode in which the EIP is associated with the NAT gateway. Valid values:
|
|
12828
12900
|
#
|
|
12829
|
-
#
|
|
12830
|
-
#
|
|
12831
|
-
# * **NAT**: NAT mode. IPv4 gateways are supported in this mode.
|
|
12901
|
+
# - **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.
|
|
12832
12902
|
#
|
|
12833
|
-
#
|
|
12903
|
+
# - **NAT**: NAT mode, which is compatible with IPv4 addresses.
|
|
12834
12904
|
#
|
|
12835
|
-
#
|
|
12905
|
+
# > If an EIP is associated with a NAT gateway in NAT mode, the EIP occupies a private IP address of the vSwitch where the NAT gateway is deployed. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, EIPs cannot be associated with the NAT gateway. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
12836
12906
|
self.eip_bind_mode = eip_bind_mode
|
|
12837
12907
|
# Specifies whether to enable ICMP retrieval. Valid values:
|
|
12838
12908
|
#
|
|
@@ -12849,7 +12919,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12849
12919
|
self.internet_charge_type = internet_charge_type
|
|
12850
12920
|
# The name of the NAT gateway.
|
|
12851
12921
|
#
|
|
12852
|
-
# The name must be 2 to 128 characters in length
|
|
12922
|
+
# The name must be 2 to 128 characters in length and can contain letters, digits, underscores (_), and hyphens (-). The name must start with a letter.
|
|
12853
12923
|
#
|
|
12854
12924
|
# If this parameter is not set, the system assigns a default name to the NAT gateway.
|
|
12855
12925
|
self.name = name
|
|
@@ -12864,6 +12934,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12864
12934
|
self.owner_id = owner_id
|
|
12865
12935
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12866
12936
|
self.pricing_cycle = pricing_cycle
|
|
12937
|
+
# PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.
|
|
12867
12938
|
self.private_link_enabled = private_link_enabled
|
|
12868
12939
|
# The region ID of the NAT gateway.
|
|
12869
12940
|
#
|
|
@@ -13024,9 +13095,9 @@ class CreateNatGatewayShrinkRequestTag(TeaModel):
|
|
|
13024
13095
|
key: str = None,
|
|
13025
13096
|
value: str = None,
|
|
13026
13097
|
):
|
|
13027
|
-
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length
|
|
13098
|
+
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
13028
13099
|
self.key = key
|
|
13029
|
-
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag
|
|
13100
|
+
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
13030
13101
|
self.value = value
|
|
13031
13102
|
|
|
13032
13103
|
def validate(self):
|
|
@@ -13081,6 +13152,7 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13081
13152
|
v_switch_id: str = None,
|
|
13082
13153
|
vpc_id: str = None,
|
|
13083
13154
|
):
|
|
13155
|
+
# The access mode for reverse access to the VPC NAT gateway.
|
|
13084
13156
|
self.access_mode_shrink = access_mode_shrink
|
|
13085
13157
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
13086
13158
|
self.auto_pay = auto_pay
|
|
@@ -13098,13 +13170,11 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13098
13170
|
self.duration = duration
|
|
13099
13171
|
# The mode in which the EIP is associated with the NAT gateway. Valid values:
|
|
13100
13172
|
#
|
|
13101
|
-
#
|
|
13173
|
+
# - **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.
|
|
13102
13174
|
#
|
|
13103
|
-
#
|
|
13175
|
+
# - **NAT**: NAT mode, which is compatible with IPv4 addresses.
|
|
13104
13176
|
#
|
|
13105
|
-
#
|
|
13106
|
-
#
|
|
13107
|
-
# **Note** If a NAT gateway is associated with an EIP in NAT mode, the EIP occupies one private IP address in the vSwitch. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, the NAT gateway fails to be associated with the EIP. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
13177
|
+
# > If an EIP is associated with a NAT gateway in NAT mode, the EIP occupies a private IP address of the vSwitch where the NAT gateway is deployed. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, EIPs cannot be associated with the NAT gateway. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
13108
13178
|
self.eip_bind_mode = eip_bind_mode
|
|
13109
13179
|
# Specifies whether to enable ICMP retrieval. Valid values:
|
|
13110
13180
|
#
|
|
@@ -13121,7 +13191,7 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13121
13191
|
self.internet_charge_type = internet_charge_type
|
|
13122
13192
|
# The name of the NAT gateway.
|
|
13123
13193
|
#
|
|
13124
|
-
# The name must be 2 to 128 characters in length
|
|
13194
|
+
# The name must be 2 to 128 characters in length and can contain letters, digits, underscores (_), and hyphens (-). The name must start with a letter.
|
|
13125
13195
|
#
|
|
13126
13196
|
# If this parameter is not set, the system assigns a default name to the NAT gateway.
|
|
13127
13197
|
self.name = name
|
|
@@ -13136,6 +13206,7 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13136
13206
|
self.owner_id = owner_id
|
|
13137
13207
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
13138
13208
|
self.pricing_cycle = pricing_cycle
|
|
13209
|
+
# PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.
|
|
13139
13210
|
self.private_link_enabled = private_link_enabled
|
|
13140
13211
|
# The region ID of the NAT gateway.
|
|
13141
13212
|
#
|
|
@@ -16849,6 +16920,7 @@ class CreateSnatEntryRequest(TeaModel):
|
|
|
16849
16920
|
def __init__(
|
|
16850
16921
|
self,
|
|
16851
16922
|
client_token: str = None,
|
|
16923
|
+
dry_run: bool = None,
|
|
16852
16924
|
eip_affinity: int = None,
|
|
16853
16925
|
network_interface_id: str = None,
|
|
16854
16926
|
owner_account: str = None,
|
|
@@ -16870,6 +16942,7 @@ class CreateSnatEntryRequest(TeaModel):
|
|
|
16870
16942
|
#
|
|
16871
16943
|
# **Description** If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
|
|
16872
16944
|
self.client_token = client_token
|
|
16945
|
+
self.dry_run = dry_run
|
|
16873
16946
|
# Specifies whether to enable EIP affinity. Valid values:
|
|
16874
16947
|
#
|
|
16875
16948
|
# * **0**: no
|
|
@@ -16952,6 +17025,8 @@ class CreateSnatEntryRequest(TeaModel):
|
|
|
16952
17025
|
result = dict()
|
|
16953
17026
|
if self.client_token is not None:
|
|
16954
17027
|
result['ClientToken'] = self.client_token
|
|
17028
|
+
if self.dry_run is not None:
|
|
17029
|
+
result['DryRun'] = self.dry_run
|
|
16955
17030
|
if self.eip_affinity is not None:
|
|
16956
17031
|
result['EipAffinity'] = self.eip_affinity
|
|
16957
17032
|
if self.network_interface_id is not None:
|
|
@@ -16982,6 +17057,8 @@ class CreateSnatEntryRequest(TeaModel):
|
|
|
16982
17057
|
m = m or dict()
|
|
16983
17058
|
if m.get('ClientToken') is not None:
|
|
16984
17059
|
self.client_token = m.get('ClientToken')
|
|
17060
|
+
if m.get('DryRun') is not None:
|
|
17061
|
+
self.dry_run = m.get('DryRun')
|
|
16985
17062
|
if m.get('EipAffinity') is not None:
|
|
16986
17063
|
self.eip_affinity = m.get('EipAffinity')
|
|
16987
17064
|
if m.get('NetworkInterfaceId') is not None:
|
|
@@ -17341,18 +17418,25 @@ class CreateSslVpnServerRequest(TeaModel):
|
|
|
17341
17418
|
# * **true**\
|
|
17342
17419
|
# * **false** (default)
|
|
17343
17420
|
self.compress = compress
|
|
17344
|
-
# Specifies whether to enable two-factor authentication.
|
|
17421
|
+
# Specifies whether to enable two-factor authentication. To enable two-factor authentication, you need to specify `IDaaSInstanceId`, `IDaaSRegionId`, and `IDaaSApplicationId`. Valid values:
|
|
17345
17422
|
#
|
|
17346
|
-
# * **true
|
|
17347
|
-
# * **false** (default)
|
|
17423
|
+
# * **true**\
|
|
17424
|
+
# * **false** (default)
|
|
17425
|
+
#
|
|
17426
|
+
# >
|
|
17348
17427
|
#
|
|
17349
|
-
#
|
|
17350
|
-
#
|
|
17428
|
+
# * If you use two-factor authentication for the first time, you need to complete [authorization](https://ram.console.aliyun.com/role/authorization?request=%7B%22Services%22%3A%5B%7B%22Service%22%3A%22VPN%22%2C%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunVpnAccessingIdaasRole%22%2C%22TemplateId%22%3A%22IdaasRole%22%7D%5D%7D%5D%2C%22ReturnUrl%22%3A%22https%3A%2F%2Fvpc.console.aliyun.com%2Fsslvpn%2Fcn-shanghai%2Fvpn-servers%22%7D) before you create an SSL server.
|
|
17429
|
+
#
|
|
17430
|
+
# * IDaaS EIAM 1.0 instances are no longer available for purchase. If your Alibaba Cloud account has IDaaS EIAM 1.0 instances, IDaaS EIAM 1.0 instances can be associated after two-factor authentication is enabled. If your Alibaba Cloud account does not have IDaaS EIAM 1.0 instances, only IDaaS EIAM 2.0 instances can be associated after two-factor authentication is enabled.
|
|
17351
17431
|
self.enable_multi_factor_auth = enable_multi_factor_auth
|
|
17432
|
+
# The ID of the IDaaS application.
|
|
17433
|
+
#
|
|
17434
|
+
# * If an IDaaS EIAM 2.0 instance is associated, you need to specify an IDaaS application ID.
|
|
17435
|
+
# * If an IDaaS EIAM 1.0 instance is associated, you do not need to specify an IDaaS application ID.
|
|
17352
17436
|
self.idaa_sapplication_id = idaa_sapplication_id
|
|
17353
|
-
# The
|
|
17437
|
+
# The ID of the IDaaS EIAM instance.
|
|
17354
17438
|
self.idaa_sinstance_id = idaa_sinstance_id
|
|
17355
|
-
# The ID of the
|
|
17439
|
+
# The region ID of the IDaaS EIAM instance.
|
|
17356
17440
|
self.idaa_sregion_id = idaa_sregion_id
|
|
17357
17441
|
# The local CIDR block.
|
|
17358
17442
|
#
|
|
@@ -21446,6 +21530,236 @@ class CreateVpnAttachmentRequestTags(TeaModel):
|
|
|
21446
21530
|
return self
|
|
21447
21531
|
|
|
21448
21532
|
|
|
21533
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
21534
|
+
def __init__(
|
|
21535
|
+
self,
|
|
21536
|
+
local_asn: int = None,
|
|
21537
|
+
local_bgp_ip: str = None,
|
|
21538
|
+
tunnel_cidr: str = None,
|
|
21539
|
+
):
|
|
21540
|
+
self.local_asn = local_asn
|
|
21541
|
+
self.local_bgp_ip = local_bgp_ip
|
|
21542
|
+
self.tunnel_cidr = tunnel_cidr
|
|
21543
|
+
|
|
21544
|
+
def validate(self):
|
|
21545
|
+
pass
|
|
21546
|
+
|
|
21547
|
+
def to_map(self):
|
|
21548
|
+
_map = super().to_map()
|
|
21549
|
+
if _map is not None:
|
|
21550
|
+
return _map
|
|
21551
|
+
|
|
21552
|
+
result = dict()
|
|
21553
|
+
if self.local_asn is not None:
|
|
21554
|
+
result['LocalAsn'] = self.local_asn
|
|
21555
|
+
if self.local_bgp_ip is not None:
|
|
21556
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
21557
|
+
if self.tunnel_cidr is not None:
|
|
21558
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
21559
|
+
return result
|
|
21560
|
+
|
|
21561
|
+
def from_map(self, m: dict = None):
|
|
21562
|
+
m = m or dict()
|
|
21563
|
+
if m.get('LocalAsn') is not None:
|
|
21564
|
+
self.local_asn = m.get('LocalAsn')
|
|
21565
|
+
if m.get('LocalBgpIp') is not None:
|
|
21566
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
21567
|
+
if m.get('TunnelCidr') is not None:
|
|
21568
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
21569
|
+
return self
|
|
21570
|
+
|
|
21571
|
+
|
|
21572
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
21573
|
+
def __init__(
|
|
21574
|
+
self,
|
|
21575
|
+
ike_auth_alg: str = None,
|
|
21576
|
+
ike_enc_alg: str = None,
|
|
21577
|
+
ike_lifetime: int = None,
|
|
21578
|
+
ike_mode: str = None,
|
|
21579
|
+
ike_pfs: str = None,
|
|
21580
|
+
ike_version: str = None,
|
|
21581
|
+
local_id: str = None,
|
|
21582
|
+
psk: str = None,
|
|
21583
|
+
remote_id: str = None,
|
|
21584
|
+
):
|
|
21585
|
+
self.ike_auth_alg = ike_auth_alg
|
|
21586
|
+
self.ike_enc_alg = ike_enc_alg
|
|
21587
|
+
self.ike_lifetime = ike_lifetime
|
|
21588
|
+
self.ike_mode = ike_mode
|
|
21589
|
+
self.ike_pfs = ike_pfs
|
|
21590
|
+
self.ike_version = ike_version
|
|
21591
|
+
self.local_id = local_id
|
|
21592
|
+
self.psk = psk
|
|
21593
|
+
self.remote_id = remote_id
|
|
21594
|
+
|
|
21595
|
+
def validate(self):
|
|
21596
|
+
pass
|
|
21597
|
+
|
|
21598
|
+
def to_map(self):
|
|
21599
|
+
_map = super().to_map()
|
|
21600
|
+
if _map is not None:
|
|
21601
|
+
return _map
|
|
21602
|
+
|
|
21603
|
+
result = dict()
|
|
21604
|
+
if self.ike_auth_alg is not None:
|
|
21605
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
21606
|
+
if self.ike_enc_alg is not None:
|
|
21607
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
21608
|
+
if self.ike_lifetime is not None:
|
|
21609
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
21610
|
+
if self.ike_mode is not None:
|
|
21611
|
+
result['IkeMode'] = self.ike_mode
|
|
21612
|
+
if self.ike_pfs is not None:
|
|
21613
|
+
result['IkePfs'] = self.ike_pfs
|
|
21614
|
+
if self.ike_version is not None:
|
|
21615
|
+
result['IkeVersion'] = self.ike_version
|
|
21616
|
+
if self.local_id is not None:
|
|
21617
|
+
result['LocalId'] = self.local_id
|
|
21618
|
+
if self.psk is not None:
|
|
21619
|
+
result['Psk'] = self.psk
|
|
21620
|
+
if self.remote_id is not None:
|
|
21621
|
+
result['RemoteId'] = self.remote_id
|
|
21622
|
+
return result
|
|
21623
|
+
|
|
21624
|
+
def from_map(self, m: dict = None):
|
|
21625
|
+
m = m or dict()
|
|
21626
|
+
if m.get('IkeAuthAlg') is not None:
|
|
21627
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
21628
|
+
if m.get('IkeEncAlg') is not None:
|
|
21629
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
21630
|
+
if m.get('IkeLifetime') is not None:
|
|
21631
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
21632
|
+
if m.get('IkeMode') is not None:
|
|
21633
|
+
self.ike_mode = m.get('IkeMode')
|
|
21634
|
+
if m.get('IkePfs') is not None:
|
|
21635
|
+
self.ike_pfs = m.get('IkePfs')
|
|
21636
|
+
if m.get('IkeVersion') is not None:
|
|
21637
|
+
self.ike_version = m.get('IkeVersion')
|
|
21638
|
+
if m.get('LocalId') is not None:
|
|
21639
|
+
self.local_id = m.get('LocalId')
|
|
21640
|
+
if m.get('Psk') is not None:
|
|
21641
|
+
self.psk = m.get('Psk')
|
|
21642
|
+
if m.get('RemoteId') is not None:
|
|
21643
|
+
self.remote_id = m.get('RemoteId')
|
|
21644
|
+
return self
|
|
21645
|
+
|
|
21646
|
+
|
|
21647
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
21648
|
+
def __init__(
|
|
21649
|
+
self,
|
|
21650
|
+
ipsec_auth_alg: str = None,
|
|
21651
|
+
ipsec_enc_alg: str = None,
|
|
21652
|
+
ipsec_lifetime: int = None,
|
|
21653
|
+
ipsec_pfs: str = None,
|
|
21654
|
+
):
|
|
21655
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
21656
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
21657
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
21658
|
+
self.ipsec_pfs = ipsec_pfs
|
|
21659
|
+
|
|
21660
|
+
def validate(self):
|
|
21661
|
+
pass
|
|
21662
|
+
|
|
21663
|
+
def to_map(self):
|
|
21664
|
+
_map = super().to_map()
|
|
21665
|
+
if _map is not None:
|
|
21666
|
+
return _map
|
|
21667
|
+
|
|
21668
|
+
result = dict()
|
|
21669
|
+
if self.ipsec_auth_alg is not None:
|
|
21670
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
21671
|
+
if self.ipsec_enc_alg is not None:
|
|
21672
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
21673
|
+
if self.ipsec_lifetime is not None:
|
|
21674
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
21675
|
+
if self.ipsec_pfs is not None:
|
|
21676
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
21677
|
+
return result
|
|
21678
|
+
|
|
21679
|
+
def from_map(self, m: dict = None):
|
|
21680
|
+
m = m or dict()
|
|
21681
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
21682
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
21683
|
+
if m.get('IpsecEncAlg') is not None:
|
|
21684
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
21685
|
+
if m.get('IpsecLifetime') is not None:
|
|
21686
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
21687
|
+
if m.get('IpsecPfs') is not None:
|
|
21688
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
21689
|
+
return self
|
|
21690
|
+
|
|
21691
|
+
|
|
21692
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecification(TeaModel):
|
|
21693
|
+
def __init__(
|
|
21694
|
+
self,
|
|
21695
|
+
customer_gateway_id: str = None,
|
|
21696
|
+
enable_dpd: bool = None,
|
|
21697
|
+
enable_nat_traversal: bool = None,
|
|
21698
|
+
tunnel_bgp_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
21699
|
+
tunnel_ike_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
21700
|
+
tunnel_index: int = None,
|
|
21701
|
+
tunnel_ipsec_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
21702
|
+
):
|
|
21703
|
+
self.customer_gateway_id = customer_gateway_id
|
|
21704
|
+
self.enable_dpd = enable_dpd
|
|
21705
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
21706
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
21707
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
21708
|
+
self.tunnel_index = tunnel_index
|
|
21709
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
21710
|
+
|
|
21711
|
+
def validate(self):
|
|
21712
|
+
if self.tunnel_bgp_config:
|
|
21713
|
+
self.tunnel_bgp_config.validate()
|
|
21714
|
+
if self.tunnel_ike_config:
|
|
21715
|
+
self.tunnel_ike_config.validate()
|
|
21716
|
+
if self.tunnel_ipsec_config:
|
|
21717
|
+
self.tunnel_ipsec_config.validate()
|
|
21718
|
+
|
|
21719
|
+
def to_map(self):
|
|
21720
|
+
_map = super().to_map()
|
|
21721
|
+
if _map is not None:
|
|
21722
|
+
return _map
|
|
21723
|
+
|
|
21724
|
+
result = dict()
|
|
21725
|
+
if self.customer_gateway_id is not None:
|
|
21726
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
21727
|
+
if self.enable_dpd is not None:
|
|
21728
|
+
result['EnableDpd'] = self.enable_dpd
|
|
21729
|
+
if self.enable_nat_traversal is not None:
|
|
21730
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
21731
|
+
if self.tunnel_bgp_config is not None:
|
|
21732
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
21733
|
+
if self.tunnel_ike_config is not None:
|
|
21734
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
21735
|
+
if self.tunnel_index is not None:
|
|
21736
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
21737
|
+
if self.tunnel_ipsec_config is not None:
|
|
21738
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
21739
|
+
return result
|
|
21740
|
+
|
|
21741
|
+
def from_map(self, m: dict = None):
|
|
21742
|
+
m = m or dict()
|
|
21743
|
+
if m.get('CustomerGatewayId') is not None:
|
|
21744
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
21745
|
+
if m.get('EnableDpd') is not None:
|
|
21746
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
21747
|
+
if m.get('EnableNatTraversal') is not None:
|
|
21748
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
21749
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
21750
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig()
|
|
21751
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
21752
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
21753
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig()
|
|
21754
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
21755
|
+
if m.get('TunnelIndex') is not None:
|
|
21756
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
21757
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
21758
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
21759
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
21760
|
+
return self
|
|
21761
|
+
|
|
21762
|
+
|
|
21449
21763
|
class CreateVpnAttachmentRequest(TeaModel):
|
|
21450
21764
|
def __init__(
|
|
21451
21765
|
self,
|
|
@@ -21456,6 +21770,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21456
21770
|
effect_immediately: bool = None,
|
|
21457
21771
|
enable_dpd: bool = None,
|
|
21458
21772
|
enable_nat_traversal: bool = None,
|
|
21773
|
+
enable_tunnels_bgp: bool = None,
|
|
21459
21774
|
health_check_config: str = None,
|
|
21460
21775
|
ike_config: str = None,
|
|
21461
21776
|
ipsec_config: str = None,
|
|
@@ -21470,6 +21785,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21470
21785
|
resource_owner_account: str = None,
|
|
21471
21786
|
resource_owner_id: int = None,
|
|
21472
21787
|
tags: List[CreateVpnAttachmentRequestTags] = None,
|
|
21788
|
+
tunnel_options_specification: List[CreateVpnAttachmentRequestTunnelOptionsSpecification] = None,
|
|
21473
21789
|
):
|
|
21474
21790
|
# Specifies whether to automatically configure routes. Valid values:
|
|
21475
21791
|
#
|
|
@@ -21499,9 +21815,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21499
21815
|
#
|
|
21500
21816
|
# > If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
|
|
21501
21817
|
self.client_token = client_token
|
|
21502
|
-
# The
|
|
21503
|
-
#
|
|
21504
|
-
# This parameter is required.
|
|
21818
|
+
# The customer gateway ID.
|
|
21505
21819
|
self.customer_gateway_id = customer_gateway_id
|
|
21506
21820
|
# Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:
|
|
21507
21821
|
#
|
|
@@ -21518,6 +21832,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21518
21832
|
# * **true** (default) After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the VPN tunnel.
|
|
21519
21833
|
# * **false**\
|
|
21520
21834
|
self.enable_nat_traversal = enable_nat_traversal
|
|
21835
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
21521
21836
|
# The health check configuration:
|
|
21522
21837
|
#
|
|
21523
21838
|
# * **HealthCheckConfig.enable**: specifies whether to enable health checks. Valid values: **true** and **false**. Default value: false.
|
|
@@ -21537,14 +21852,14 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21537
21852
|
self.health_check_config = health_check_config
|
|
21538
21853
|
# The configurations of Phase 1 negotiations:
|
|
21539
21854
|
#
|
|
21540
|
-
# * **IkeConfig.Psk**:
|
|
21855
|
+
# * **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
21541
21856
|
#
|
|
21542
|
-
# *
|
|
21543
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
21857
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21858
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
21544
21859
|
#
|
|
21545
|
-
# > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the data center. Otherwise,
|
|
21860
|
+
# > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
|
|
21546
21861
|
#
|
|
21547
|
-
# * **IkeConfig.IkeVersion**: the IKE
|
|
21862
|
+
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21548
21863
|
#
|
|
21549
21864
|
# * **IkeConfig.IkeMode**: the negotiation mode. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21550
21865
|
#
|
|
@@ -21554,9 +21869,9 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21554
21869
|
#
|
|
21555
21870
|
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.
|
|
21556
21871
|
#
|
|
21557
|
-
# * **IkeConfig.IkeLifetime**: the SA lifetime
|
|
21872
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
|
|
21558
21873
|
#
|
|
21559
|
-
# * **IkeConfig.
|
|
21874
|
+
# * **IkeConfig.LocalIdIPsec**: the identifier on the Alibaba Cloud side. The identifier cannot exceed 100 characters in length. This parameter is left empty by default.
|
|
21560
21875
|
#
|
|
21561
21876
|
# * **IkeConfig.RemoteId**: the identifier on the data center side. The identifier cannot exceed 100 characters in length. The default value is the IP address of the customer gateway.
|
|
21562
21877
|
self.ike_config = ike_config
|
|
@@ -21620,12 +21935,17 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21620
21935
|
#
|
|
21621
21936
|
# Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.
|
|
21622
21937
|
self.tags = tags
|
|
21938
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
21623
21939
|
|
|
21624
21940
|
def validate(self):
|
|
21625
21941
|
if self.tags:
|
|
21626
21942
|
for k in self.tags:
|
|
21627
21943
|
if k:
|
|
21628
21944
|
k.validate()
|
|
21945
|
+
if self.tunnel_options_specification:
|
|
21946
|
+
for k in self.tunnel_options_specification:
|
|
21947
|
+
if k:
|
|
21948
|
+
k.validate()
|
|
21629
21949
|
|
|
21630
21950
|
def to_map(self):
|
|
21631
21951
|
_map = super().to_map()
|
|
@@ -21647,6 +21967,8 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21647
21967
|
result['EnableDpd'] = self.enable_dpd
|
|
21648
21968
|
if self.enable_nat_traversal is not None:
|
|
21649
21969
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
21970
|
+
if self.enable_tunnels_bgp is not None:
|
|
21971
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
21650
21972
|
if self.health_check_config is not None:
|
|
21651
21973
|
result['HealthCheckConfig'] = self.health_check_config
|
|
21652
21974
|
if self.ike_config is not None:
|
|
@@ -21677,6 +21999,10 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21677
21999
|
if self.tags is not None:
|
|
21678
22000
|
for k in self.tags:
|
|
21679
22001
|
result['Tags'].append(k.to_map() if k else None)
|
|
22002
|
+
result['TunnelOptionsSpecification'] = []
|
|
22003
|
+
if self.tunnel_options_specification is not None:
|
|
22004
|
+
for k in self.tunnel_options_specification:
|
|
22005
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
21680
22006
|
return result
|
|
21681
22007
|
|
|
21682
22008
|
def from_map(self, m: dict = None):
|
|
@@ -21695,6 +22021,8 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21695
22021
|
self.enable_dpd = m.get('EnableDpd')
|
|
21696
22022
|
if m.get('EnableNatTraversal') is not None:
|
|
21697
22023
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
22024
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
22025
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
21698
22026
|
if m.get('HealthCheckConfig') is not None:
|
|
21699
22027
|
self.health_check_config = m.get('HealthCheckConfig')
|
|
21700
22028
|
if m.get('IkeConfig') is not None:
|
|
@@ -21726,6 +22054,11 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21726
22054
|
for k in m.get('Tags'):
|
|
21727
22055
|
temp_model = CreateVpnAttachmentRequestTags()
|
|
21728
22056
|
self.tags.append(temp_model.from_map(k))
|
|
22057
|
+
self.tunnel_options_specification = []
|
|
22058
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
22059
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
22060
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecification()
|
|
22061
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
21729
22062
|
return self
|
|
21730
22063
|
|
|
21731
22064
|
|
|
@@ -21895,17 +22228,19 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaMod
|
|
|
21895
22228
|
local_bgp_ip: str = None,
|
|
21896
22229
|
tunnel_cidr: str = None,
|
|
21897
22230
|
):
|
|
21898
|
-
# The ASN on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
22231
|
+
# The autonomous system number (ASN) of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
22232
|
+
#
|
|
22233
|
+
#
|
|
21899
22234
|
#
|
|
21900
|
-
# >
|
|
21901
|
-
#
|
|
21902
|
-
#
|
|
22235
|
+
# > - If you set **EnableTunnelsBgp** to **true**, you must set this parameter.
|
|
22236
|
+
# > - Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [VPN Gateway supports BGP dynamic routing](https://help.aliyun.com/document_detail/170235.html).
|
|
22237
|
+
# > - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.
|
|
21903
22238
|
self.local_asn = local_asn
|
|
21904
|
-
# The BGP address on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block
|
|
22239
|
+
# The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.
|
|
21905
22240
|
self.local_bgp_ip = local_bgp_ip
|
|
21906
|
-
# The BGP CIDR block of the tunnel. The CIDR block must
|
|
22241
|
+
# The BGP CIDR block of the tunnel. The CIDR block must fall within the 169.254.0.0/16 range. The subnet mask of the CIDR block must be 30 bits in length.
|
|
21907
22242
|
#
|
|
21908
|
-
# > The BGP CIDR block of
|
|
22243
|
+
# > The BGP CIDR block of each tunnel must be unique on a VPN gateway.
|
|
21909
22244
|
self.tunnel_cidr = tunnel_cidr
|
|
21910
22245
|
|
|
21911
22246
|
def validate(self):
|
|
@@ -21957,36 +22292,36 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaMod
|
|
|
21957
22292
|
#
|
|
21958
22293
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
|
|
21959
22294
|
self.ike_enc_alg = ike_enc_alg
|
|
21960
|
-
# The SA lifetime
|
|
22295
|
+
# The SA lifetime as a result of Phase 1 negotiations. Unit: seconds.
|
|
21961
22296
|
#
|
|
21962
22297
|
# Valid values: **0** to **86400**. Default value: **86400**.
|
|
21963
22298
|
self.ike_lifetime = ike_lifetime
|
|
21964
22299
|
# The negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21965
22300
|
#
|
|
21966
|
-
# * **main
|
|
21967
|
-
# * **aggressive**: This mode
|
|
22301
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
22302
|
+
# * **aggressive**: This mode supports faster negotiations and a higher success rate.
|
|
21968
22303
|
self.ike_mode = ike_mode
|
|
21969
|
-
# The
|
|
22304
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.\\
|
|
21970
22305
|
# Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
21971
22306
|
self.ike_pfs = ike_pfs
|
|
21972
22307
|
# The version of the IKE protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21973
22308
|
#
|
|
21974
|
-
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and
|
|
22309
|
+
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
21975
22310
|
self.ike_version = ike_version
|
|
21976
|
-
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations.
|
|
22311
|
+
# The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. It can contain at most 100 characters. The default value is the IP address of the tunnel.
|
|
21977
22312
|
#
|
|
21978
|
-
#
|
|
22313
|
+
# **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
21979
22314
|
self.local_id = local_id
|
|
21980
|
-
# The pre-shared key
|
|
22315
|
+
# The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.
|
|
21981
22316
|
#
|
|
21982
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21983
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
22317
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22318
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
21984
22319
|
#
|
|
21985
22320
|
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.
|
|
21986
22321
|
self.psk = psk
|
|
21987
|
-
# The identifier of the tunnel peer, which is used in Phase 1 negotiations.
|
|
22322
|
+
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. It can contain at most 100 characters. The default value is the IP address of the customer gateway that is associated with the tunnel.
|
|
21988
22323
|
#
|
|
21989
|
-
#
|
|
22324
|
+
# **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
21990
22325
|
self.remote_id = remote_id
|
|
21991
22326
|
|
|
21992
22327
|
def validate(self):
|
|
@@ -22057,11 +22392,11 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaM
|
|
|
22057
22392
|
#
|
|
22058
22393
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
|
|
22059
22394
|
self.ipsec_enc_alg = ipsec_enc_alg
|
|
22060
|
-
# The SA lifetime
|
|
22395
|
+
# The SA lifetime as a result of Phase 2 negotiations. Unit: seconds.
|
|
22061
22396
|
#
|
|
22062
22397
|
# Valid values: **0** to **86400**. Default value: **86400**.
|
|
22063
22398
|
self.ipsec_lifetime = ipsec_lifetime
|
|
22064
|
-
# The
|
|
22399
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: **group2**.
|
|
22065
22400
|
#
|
|
22066
22401
|
# Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
|
|
22067
22402
|
self.ipsec_pfs = ipsec_pfs
|
|
@@ -22110,33 +22445,33 @@ class CreateVpnConnectionRequestTunnelOptionsSpecification(TeaModel):
|
|
|
22110
22445
|
tunnel_ike_config: CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
22111
22446
|
tunnel_ipsec_config: CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
22112
22447
|
):
|
|
22113
|
-
# The ID of the customer gateway associated with the tunnel.
|
|
22448
|
+
# The ID of the customer gateway that is associated with the tunnel.
|
|
22114
22449
|
#
|
|
22115
|
-
# >
|
|
22116
|
-
#
|
|
22117
|
-
#
|
|
22450
|
+
# > - This parameter is required when you create an IPsec-VPN connection in dual-tunnel mode.
|
|
22451
|
+
# > - You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
|
|
22452
|
+
# > - When you create an IPsec-VPN connection in dual tunnel mode, you must add configurations of the active and standby tunnels for the IPsec-VPN connection. Each IPsec-VPN connection supports only one active tunnel and one standby tunnel.
|
|
22118
22453
|
self.customer_gateway_id = customer_gateway_id
|
|
22119
|
-
# Specifies whether to enable DPD for the tunnel. Valid values:
|
|
22454
|
+
# Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
|
|
22120
22455
|
#
|
|
22121
|
-
# * **true** (default) The initiator of the IPsec-VPN connection sends DPD packets to
|
|
22122
|
-
# * **false
|
|
22456
|
+
# * **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted. The security tunnel is also deleted.
|
|
22457
|
+
# * **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
|
|
22123
22458
|
self.enable_dpd = enable_dpd
|
|
22124
22459
|
# Specifies whether to enable NAT traversal for the tunnel. Valid values:
|
|
22125
22460
|
#
|
|
22126
|
-
# * **true** (default) After NAT traversal is enabled, the
|
|
22127
|
-
# * **false
|
|
22461
|
+
# * **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.
|
|
22462
|
+
# * **false**: disables NAT traversal.
|
|
22128
22463
|
self.enable_nat_traversal = enable_nat_traversal
|
|
22129
|
-
#
|
|
22464
|
+
# If the VPN gateway uses an SM certificate, you need to configure the CA certificate used by the IPsec peer.
|
|
22130
22465
|
#
|
|
22131
|
-
# * If
|
|
22132
|
-
# * If
|
|
22466
|
+
# * If the VPN gateway uses an SM certificate, this parameter is required.
|
|
22467
|
+
# * If the VPN gateway does not use an SM certificate, leave this parameter empty.
|
|
22133
22468
|
self.remote_ca_certificate = remote_ca_certificate
|
|
22134
|
-
# The role of the tunnel. Valid values:
|
|
22469
|
+
# The role of the tunnel. Valid values: Valid values:
|
|
22135
22470
|
#
|
|
22136
|
-
# * **master**: The tunnel is
|
|
22137
|
-
# * **slave**: The tunnel is
|
|
22471
|
+
# * **master**: The tunnel is an active tunnel.
|
|
22472
|
+
# * **slave**: The tunnel is a standby tunnel.
|
|
22138
22473
|
self.role = role
|
|
22139
|
-
# The BGP configurations
|
|
22474
|
+
# The Border Gateway Protocol (BGP) configurations of the tunnel.
|
|
22140
22475
|
self.tunnel_bgp_config = tunnel_bgp_config
|
|
22141
22476
|
# The configurations of Phase 1 negotiations.
|
|
22142
22477
|
self.tunnel_ike_config = tunnel_ike_config
|
|
@@ -22295,26 +22630,28 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22295
22630
|
# * **HealthCheckConfig.interval**: the time interval of health check retries. Unit: seconds. Default value: **3**.
|
|
22296
22631
|
# * **HealthCheckConfig.retry**: the maximum number of health check retries. Default value: **3**.
|
|
22297
22632
|
self.health_check_config = health_check_config
|
|
22298
|
-
# This parameter is
|
|
22633
|
+
# This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
|
|
22299
22634
|
#
|
|
22300
22635
|
# The configurations of Phase 1 negotiations:
|
|
22301
22636
|
#
|
|
22302
|
-
# * **IkeConfig.Psk**:
|
|
22637
|
+
# * **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
22638
|
+
#
|
|
22639
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22303
22640
|
#
|
|
22304
|
-
# *
|
|
22641
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
22305
22642
|
#
|
|
22306
|
-
#
|
|
22643
|
+
# **\
|
|
22307
22644
|
#
|
|
22308
|
-
#
|
|
22645
|
+
# **Note** The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
|
|
22309
22646
|
#
|
|
22310
22647
|
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
22311
22648
|
#
|
|
22312
|
-
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and
|
|
22649
|
+
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
22313
22650
|
#
|
|
22314
22651
|
# * **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
22315
22652
|
#
|
|
22316
22653
|
# * **main:** This mode offers higher security during negotiations.
|
|
22317
|
-
# * **aggressive
|
|
22654
|
+
# * **aggressive**: This mode supports faster negotiations and a higher success rate.
|
|
22318
22655
|
#
|
|
22319
22656
|
# * **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.
|
|
22320
22657
|
#
|
|
@@ -22324,13 +22661,13 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22324
22661
|
#
|
|
22325
22662
|
# Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.
|
|
22326
22663
|
#
|
|
22327
|
-
# * **IkeConfig.IkePfs**: the Diffie-Hellman
|
|
22664
|
+
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.
|
|
22328
22665
|
#
|
|
22329
|
-
# * **IkeConfig.IkeLifetime**: the SA lifetime
|
|
22666
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
|
|
22330
22667
|
#
|
|
22331
|
-
# * **IkeConfig.LocalId**: the identifier of the VPN gateway.
|
|
22668
|
+
# * **IkeConfig.LocalId**: the identifier of the VPN gateway. It can contain at most 100 characters. The default value is the IP address of the VPN gateway.
|
|
22332
22669
|
#
|
|
22333
|
-
# * **IkeConfig.RemoteId**: the identifier of the customer gateway.
|
|
22670
|
+
# * **IkeConfig.RemoteId**: the identifier of the customer gateway. It can contain at most 100 characters. The default value is the IP address of the customer gateway.
|
|
22334
22671
|
self.ike_config = ike_config
|
|
22335
22672
|
# This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.
|
|
22336
22673
|
#
|
|
@@ -22397,8 +22734,8 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22397
22734
|
self.tags = tags
|
|
22398
22735
|
# The tunnel configurations.
|
|
22399
22736
|
#
|
|
22400
|
-
# * You can specify
|
|
22401
|
-
# *
|
|
22737
|
+
# * You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
|
|
22738
|
+
# * When you create an IPsec-VPN connection in dual tunnel mode, you must add configurations of the active and standby tunnels for the IPsec-VPN connection. Each IPsec-VPN connection supports only one active tunnel and one standby tunnel.
|
|
22402
22739
|
self.tunnel_options_specification = tunnel_options_specification
|
|
22403
22740
|
# The ID of the VPN gateway.
|
|
22404
22741
|
#
|
|
@@ -37386,6 +37723,39 @@ class DescribeEipSegmentResponse(TeaModel):
|
|
|
37386
37723
|
return self
|
|
37387
37724
|
|
|
37388
37725
|
|
|
37726
|
+
class DescribeExpressConnectTrafficQosRequestTags(TeaModel):
|
|
37727
|
+
def __init__(
|
|
37728
|
+
self,
|
|
37729
|
+
key: str = None,
|
|
37730
|
+
value: str = None,
|
|
37731
|
+
):
|
|
37732
|
+
self.key = key
|
|
37733
|
+
self.value = value
|
|
37734
|
+
|
|
37735
|
+
def validate(self):
|
|
37736
|
+
pass
|
|
37737
|
+
|
|
37738
|
+
def to_map(self):
|
|
37739
|
+
_map = super().to_map()
|
|
37740
|
+
if _map is not None:
|
|
37741
|
+
return _map
|
|
37742
|
+
|
|
37743
|
+
result = dict()
|
|
37744
|
+
if self.key is not None:
|
|
37745
|
+
result['Key'] = self.key
|
|
37746
|
+
if self.value is not None:
|
|
37747
|
+
result['Value'] = self.value
|
|
37748
|
+
return result
|
|
37749
|
+
|
|
37750
|
+
def from_map(self, m: dict = None):
|
|
37751
|
+
m = m or dict()
|
|
37752
|
+
if m.get('Key') is not None:
|
|
37753
|
+
self.key = m.get('Key')
|
|
37754
|
+
if m.get('Value') is not None:
|
|
37755
|
+
self.value = m.get('Value')
|
|
37756
|
+
return self
|
|
37757
|
+
|
|
37758
|
+
|
|
37389
37759
|
class DescribeExpressConnectTrafficQosRequest(TeaModel):
|
|
37390
37760
|
def __init__(
|
|
37391
37761
|
self,
|
|
@@ -37397,7 +37767,9 @@ class DescribeExpressConnectTrafficQosRequest(TeaModel):
|
|
|
37397
37767
|
qos_id_list: List[str] = None,
|
|
37398
37768
|
qos_name_list: List[str] = None,
|
|
37399
37769
|
region_id: str = None,
|
|
37770
|
+
resource_group_id: str = None,
|
|
37400
37771
|
resource_owner_account: str = None,
|
|
37772
|
+
tags: List[DescribeExpressConnectTrafficQosRequestTags] = None,
|
|
37401
37773
|
):
|
|
37402
37774
|
self.client_token = client_token
|
|
37403
37775
|
self.max_results = max_results
|
|
@@ -37408,10 +37780,15 @@ class DescribeExpressConnectTrafficQosRequest(TeaModel):
|
|
|
37408
37780
|
self.qos_name_list = qos_name_list
|
|
37409
37781
|
# This parameter is required.
|
|
37410
37782
|
self.region_id = region_id
|
|
37783
|
+
self.resource_group_id = resource_group_id
|
|
37411
37784
|
self.resource_owner_account = resource_owner_account
|
|
37785
|
+
self.tags = tags
|
|
37412
37786
|
|
|
37413
37787
|
def validate(self):
|
|
37414
|
-
|
|
37788
|
+
if self.tags:
|
|
37789
|
+
for k in self.tags:
|
|
37790
|
+
if k:
|
|
37791
|
+
k.validate()
|
|
37415
37792
|
|
|
37416
37793
|
def to_map(self):
|
|
37417
37794
|
_map = super().to_map()
|
|
@@ -37435,8 +37812,14 @@ class DescribeExpressConnectTrafficQosRequest(TeaModel):
|
|
|
37435
37812
|
result['QosNameList'] = self.qos_name_list
|
|
37436
37813
|
if self.region_id is not None:
|
|
37437
37814
|
result['RegionId'] = self.region_id
|
|
37815
|
+
if self.resource_group_id is not None:
|
|
37816
|
+
result['ResourceGroupId'] = self.resource_group_id
|
|
37438
37817
|
if self.resource_owner_account is not None:
|
|
37439
37818
|
result['ResourceOwnerAccount'] = self.resource_owner_account
|
|
37819
|
+
result['Tags'] = []
|
|
37820
|
+
if self.tags is not None:
|
|
37821
|
+
for k in self.tags:
|
|
37822
|
+
result['Tags'].append(k.to_map() if k else None)
|
|
37440
37823
|
return result
|
|
37441
37824
|
|
|
37442
37825
|
def from_map(self, m: dict = None):
|
|
@@ -37457,8 +37840,15 @@ class DescribeExpressConnectTrafficQosRequest(TeaModel):
|
|
|
37457
37840
|
self.qos_name_list = m.get('QosNameList')
|
|
37458
37841
|
if m.get('RegionId') is not None:
|
|
37459
37842
|
self.region_id = m.get('RegionId')
|
|
37843
|
+
if m.get('ResourceGroupId') is not None:
|
|
37844
|
+
self.resource_group_id = m.get('ResourceGroupId')
|
|
37460
37845
|
if m.get('ResourceOwnerAccount') is not None:
|
|
37461
37846
|
self.resource_owner_account = m.get('ResourceOwnerAccount')
|
|
37847
|
+
self.tags = []
|
|
37848
|
+
if m.get('Tags') is not None:
|
|
37849
|
+
for k in m.get('Tags'):
|
|
37850
|
+
temp_model = DescribeExpressConnectTrafficQosRequestTags()
|
|
37851
|
+
self.tags.append(temp_model.from_map(k))
|
|
37462
37852
|
return self
|
|
37463
37853
|
|
|
37464
37854
|
|
|
@@ -37570,6 +37960,39 @@ class DescribeExpressConnectTrafficQosResponseBodyQosListQueueList(TeaModel):
|
|
|
37570
37960
|
return self
|
|
37571
37961
|
|
|
37572
37962
|
|
|
37963
|
+
class DescribeExpressConnectTrafficQosResponseBodyQosListTags(TeaModel):
|
|
37964
|
+
def __init__(
|
|
37965
|
+
self,
|
|
37966
|
+
key: str = None,
|
|
37967
|
+
value: str = None,
|
|
37968
|
+
):
|
|
37969
|
+
self.key = key
|
|
37970
|
+
self.value = value
|
|
37971
|
+
|
|
37972
|
+
def validate(self):
|
|
37973
|
+
pass
|
|
37974
|
+
|
|
37975
|
+
def to_map(self):
|
|
37976
|
+
_map = super().to_map()
|
|
37977
|
+
if _map is not None:
|
|
37978
|
+
return _map
|
|
37979
|
+
|
|
37980
|
+
result = dict()
|
|
37981
|
+
if self.key is not None:
|
|
37982
|
+
result['Key'] = self.key
|
|
37983
|
+
if self.value is not None:
|
|
37984
|
+
result['Value'] = self.value
|
|
37985
|
+
return result
|
|
37986
|
+
|
|
37987
|
+
def from_map(self, m: dict = None):
|
|
37988
|
+
m = m or dict()
|
|
37989
|
+
if m.get('Key') is not None:
|
|
37990
|
+
self.key = m.get('Key')
|
|
37991
|
+
if m.get('Value') is not None:
|
|
37992
|
+
self.value = m.get('Value')
|
|
37993
|
+
return self
|
|
37994
|
+
|
|
37995
|
+
|
|
37573
37996
|
class DescribeExpressConnectTrafficQosResponseBodyQosList(TeaModel):
|
|
37574
37997
|
def __init__(
|
|
37575
37998
|
self,
|
|
@@ -37579,7 +38002,9 @@ class DescribeExpressConnectTrafficQosResponseBodyQosList(TeaModel):
|
|
|
37579
38002
|
qos_id: str = None,
|
|
37580
38003
|
qos_name: str = None,
|
|
37581
38004
|
queue_list: List[DescribeExpressConnectTrafficQosResponseBodyQosListQueueList] = None,
|
|
38005
|
+
resource_group_id: str = None,
|
|
37582
38006
|
status: str = None,
|
|
38007
|
+
tags: List[DescribeExpressConnectTrafficQosResponseBodyQosListTags] = None,
|
|
37583
38008
|
):
|
|
37584
38009
|
self.associated_instance_list = associated_instance_list
|
|
37585
38010
|
self.progressing = progressing
|
|
@@ -37587,7 +38012,9 @@ class DescribeExpressConnectTrafficQosResponseBodyQosList(TeaModel):
|
|
|
37587
38012
|
self.qos_id = qos_id
|
|
37588
38013
|
self.qos_name = qos_name
|
|
37589
38014
|
self.queue_list = queue_list
|
|
38015
|
+
self.resource_group_id = resource_group_id
|
|
37590
38016
|
self.status = status
|
|
38017
|
+
self.tags = tags
|
|
37591
38018
|
|
|
37592
38019
|
def validate(self):
|
|
37593
38020
|
if self.associated_instance_list:
|
|
@@ -37598,6 +38025,10 @@ class DescribeExpressConnectTrafficQosResponseBodyQosList(TeaModel):
|
|
|
37598
38025
|
for k in self.queue_list:
|
|
37599
38026
|
if k:
|
|
37600
38027
|
k.validate()
|
|
38028
|
+
if self.tags:
|
|
38029
|
+
for k in self.tags:
|
|
38030
|
+
if k:
|
|
38031
|
+
k.validate()
|
|
37601
38032
|
|
|
37602
38033
|
def to_map(self):
|
|
37603
38034
|
_map = super().to_map()
|
|
@@ -37621,8 +38052,14 @@ class DescribeExpressConnectTrafficQosResponseBodyQosList(TeaModel):
|
|
|
37621
38052
|
if self.queue_list is not None:
|
|
37622
38053
|
for k in self.queue_list:
|
|
37623
38054
|
result['QueueList'].append(k.to_map() if k else None)
|
|
38055
|
+
if self.resource_group_id is not None:
|
|
38056
|
+
result['ResourceGroupId'] = self.resource_group_id
|
|
37624
38057
|
if self.status is not None:
|
|
37625
38058
|
result['Status'] = self.status
|
|
38059
|
+
result['Tags'] = []
|
|
38060
|
+
if self.tags is not None:
|
|
38061
|
+
for k in self.tags:
|
|
38062
|
+
result['Tags'].append(k.to_map() if k else None)
|
|
37626
38063
|
return result
|
|
37627
38064
|
|
|
37628
38065
|
def from_map(self, m: dict = None):
|
|
@@ -37645,8 +38082,15 @@ class DescribeExpressConnectTrafficQosResponseBodyQosList(TeaModel):
|
|
|
37645
38082
|
for k in m.get('QueueList'):
|
|
37646
38083
|
temp_model = DescribeExpressConnectTrafficQosResponseBodyQosListQueueList()
|
|
37647
38084
|
self.queue_list.append(temp_model.from_map(k))
|
|
38085
|
+
if m.get('ResourceGroupId') is not None:
|
|
38086
|
+
self.resource_group_id = m.get('ResourceGroupId')
|
|
37648
38087
|
if m.get('Status') is not None:
|
|
37649
38088
|
self.status = m.get('Status')
|
|
38089
|
+
self.tags = []
|
|
38090
|
+
if m.get('Tags') is not None:
|
|
38091
|
+
for k in m.get('Tags'):
|
|
38092
|
+
temp_model = DescribeExpressConnectTrafficQosResponseBodyQosListTags()
|
|
38093
|
+
self.tags.append(temp_model.from_map(k))
|
|
37650
38094
|
return self
|
|
37651
38095
|
|
|
37652
38096
|
|
|
@@ -56989,6 +57433,7 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56989
57433
|
community: str = None,
|
|
56990
57434
|
create_time: int = None,
|
|
56991
57435
|
next_hop: str = None,
|
|
57436
|
+
next_hop_tunnel_id_list: List[str] = None,
|
|
56992
57437
|
route_dest: str = None,
|
|
56993
57438
|
route_entry_type: str = None,
|
|
56994
57439
|
source: str = None,
|
|
@@ -57006,6 +57451,7 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57006
57451
|
self.create_time = create_time
|
|
57007
57452
|
# The next hop of the route.
|
|
57008
57453
|
self.next_hop = next_hop
|
|
57454
|
+
self.next_hop_tunnel_id_list = next_hop_tunnel_id_list
|
|
57009
57455
|
# The destination CIDR block of the route.
|
|
57010
57456
|
self.route_dest = route_dest
|
|
57011
57457
|
# The route type. Valid values:
|
|
@@ -57048,6 +57494,8 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57048
57494
|
result['CreateTime'] = self.create_time
|
|
57049
57495
|
if self.next_hop is not None:
|
|
57050
57496
|
result['NextHop'] = self.next_hop
|
|
57497
|
+
if self.next_hop_tunnel_id_list is not None:
|
|
57498
|
+
result['NextHopTunnelIdList'] = self.next_hop_tunnel_id_list
|
|
57051
57499
|
if self.route_dest is not None:
|
|
57052
57500
|
result['RouteDest'] = self.route_dest
|
|
57053
57501
|
if self.route_entry_type is not None:
|
|
@@ -57072,6 +57520,8 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57072
57520
|
self.create_time = m.get('CreateTime')
|
|
57073
57521
|
if m.get('NextHop') is not None:
|
|
57074
57522
|
self.next_hop = m.get('NextHop')
|
|
57523
|
+
if m.get('NextHopTunnelIdList') is not None:
|
|
57524
|
+
self.next_hop_tunnel_id_list = m.get('NextHopTunnelIdList')
|
|
57075
57525
|
if m.get('RouteDest') is not None:
|
|
57076
57526
|
self.route_dest = m.get('RouteDest')
|
|
57077
57527
|
if m.get('RouteEntryType') is not None:
|
|
@@ -57087,6 +57537,45 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57087
57537
|
return self
|
|
57088
57538
|
|
|
57089
57539
|
|
|
57540
|
+
class DescribeVcoRouteEntriesResponseBodyVpnRouteCounts(TeaModel):
|
|
57541
|
+
def __init__(
|
|
57542
|
+
self,
|
|
57543
|
+
route_count: int = None,
|
|
57544
|
+
route_entry_type: str = None,
|
|
57545
|
+
source: str = None,
|
|
57546
|
+
):
|
|
57547
|
+
self.route_count = route_count
|
|
57548
|
+
self.route_entry_type = route_entry_type
|
|
57549
|
+
self.source = source
|
|
57550
|
+
|
|
57551
|
+
def validate(self):
|
|
57552
|
+
pass
|
|
57553
|
+
|
|
57554
|
+
def to_map(self):
|
|
57555
|
+
_map = super().to_map()
|
|
57556
|
+
if _map is not None:
|
|
57557
|
+
return _map
|
|
57558
|
+
|
|
57559
|
+
result = dict()
|
|
57560
|
+
if self.route_count is not None:
|
|
57561
|
+
result['RouteCount'] = self.route_count
|
|
57562
|
+
if self.route_entry_type is not None:
|
|
57563
|
+
result['RouteEntryType'] = self.route_entry_type
|
|
57564
|
+
if self.source is not None:
|
|
57565
|
+
result['Source'] = self.source
|
|
57566
|
+
return result
|
|
57567
|
+
|
|
57568
|
+
def from_map(self, m: dict = None):
|
|
57569
|
+
m = m or dict()
|
|
57570
|
+
if m.get('RouteCount') is not None:
|
|
57571
|
+
self.route_count = m.get('RouteCount')
|
|
57572
|
+
if m.get('RouteEntryType') is not None:
|
|
57573
|
+
self.route_entry_type = m.get('RouteEntryType')
|
|
57574
|
+
if m.get('Source') is not None:
|
|
57575
|
+
self.source = m.get('Source')
|
|
57576
|
+
return self
|
|
57577
|
+
|
|
57578
|
+
|
|
57090
57579
|
class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
57091
57580
|
def __init__(
|
|
57092
57581
|
self,
|
|
@@ -57095,6 +57584,7 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57095
57584
|
request_id: str = None,
|
|
57096
57585
|
total_count: int = None,
|
|
57097
57586
|
vco_route_entries: List[DescribeVcoRouteEntriesResponseBodyVcoRouteEntries] = None,
|
|
57587
|
+
vpn_route_counts: List[DescribeVcoRouteEntriesResponseBodyVpnRouteCounts] = None,
|
|
57098
57588
|
):
|
|
57099
57589
|
# The number of the returned page.
|
|
57100
57590
|
self.page_number = page_number
|
|
@@ -57106,12 +57596,17 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57106
57596
|
self.total_count = total_count
|
|
57107
57597
|
# The list of routes.
|
|
57108
57598
|
self.vco_route_entries = vco_route_entries
|
|
57599
|
+
self.vpn_route_counts = vpn_route_counts
|
|
57109
57600
|
|
|
57110
57601
|
def validate(self):
|
|
57111
57602
|
if self.vco_route_entries:
|
|
57112
57603
|
for k in self.vco_route_entries:
|
|
57113
57604
|
if k:
|
|
57114
57605
|
k.validate()
|
|
57606
|
+
if self.vpn_route_counts:
|
|
57607
|
+
for k in self.vpn_route_counts:
|
|
57608
|
+
if k:
|
|
57609
|
+
k.validate()
|
|
57115
57610
|
|
|
57116
57611
|
def to_map(self):
|
|
57117
57612
|
_map = super().to_map()
|
|
@@ -57131,6 +57626,10 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57131
57626
|
if self.vco_route_entries is not None:
|
|
57132
57627
|
for k in self.vco_route_entries:
|
|
57133
57628
|
result['VcoRouteEntries'].append(k.to_map() if k else None)
|
|
57629
|
+
result['VpnRouteCounts'] = []
|
|
57630
|
+
if self.vpn_route_counts is not None:
|
|
57631
|
+
for k in self.vpn_route_counts:
|
|
57632
|
+
result['VpnRouteCounts'].append(k.to_map() if k else None)
|
|
57134
57633
|
return result
|
|
57135
57634
|
|
|
57136
57635
|
def from_map(self, m: dict = None):
|
|
@@ -57148,6 +57647,11 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57148
57647
|
for k in m.get('VcoRouteEntries'):
|
|
57149
57648
|
temp_model = DescribeVcoRouteEntriesResponseBodyVcoRouteEntries()
|
|
57150
57649
|
self.vco_route_entries.append(temp_model.from_map(k))
|
|
57650
|
+
self.vpn_route_counts = []
|
|
57651
|
+
if m.get('VpnRouteCounts') is not None:
|
|
57652
|
+
for k in m.get('VpnRouteCounts'):
|
|
57653
|
+
temp_model = DescribeVcoRouteEntriesResponseBodyVpnRouteCounts()
|
|
57654
|
+
self.vpn_route_counts.append(temp_model.from_map(k))
|
|
57151
57655
|
return self
|
|
57152
57656
|
|
|
57153
57657
|
|
|
@@ -60471,6 +60975,39 @@ class DescribeVpnAttachmentsRequest(TeaModel):
|
|
|
60471
60975
|
return self
|
|
60472
60976
|
|
|
60473
60977
|
|
|
60978
|
+
class DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags(TeaModel):
|
|
60979
|
+
def __init__(
|
|
60980
|
+
self,
|
|
60981
|
+
key: str = None,
|
|
60982
|
+
value: str = None,
|
|
60983
|
+
):
|
|
60984
|
+
self.key = key
|
|
60985
|
+
self.value = value
|
|
60986
|
+
|
|
60987
|
+
def validate(self):
|
|
60988
|
+
pass
|
|
60989
|
+
|
|
60990
|
+
def to_map(self):
|
|
60991
|
+
_map = super().to_map()
|
|
60992
|
+
if _map is not None:
|
|
60993
|
+
return _map
|
|
60994
|
+
|
|
60995
|
+
result = dict()
|
|
60996
|
+
if self.key is not None:
|
|
60997
|
+
result['Key'] = self.key
|
|
60998
|
+
if self.value is not None:
|
|
60999
|
+
result['Value'] = self.value
|
|
61000
|
+
return result
|
|
61001
|
+
|
|
61002
|
+
def from_map(self, m: dict = None):
|
|
61003
|
+
m = m or dict()
|
|
61004
|
+
if m.get('Key') is not None:
|
|
61005
|
+
self.key = m.get('Key')
|
|
61006
|
+
if m.get('Value') is not None:
|
|
61007
|
+
self.value = m.get('Value')
|
|
61008
|
+
return self
|
|
61009
|
+
|
|
61010
|
+
|
|
60474
61011
|
class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
60475
61012
|
def __init__(
|
|
60476
61013
|
self,
|
|
@@ -60479,6 +61016,8 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60479
61016
|
description: str = None,
|
|
60480
61017
|
instance_id: str = None,
|
|
60481
61018
|
name: str = None,
|
|
61019
|
+
tag: str = None,
|
|
61020
|
+
tags: List[DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags] = None,
|
|
60482
61021
|
transit_router_id: str = None,
|
|
60483
61022
|
transit_router_name: str = None,
|
|
60484
61023
|
):
|
|
@@ -60495,13 +61034,18 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60495
61034
|
self.instance_id = instance_id
|
|
60496
61035
|
# The name of the IPsec-VPN connection.
|
|
60497
61036
|
self.name = name
|
|
61037
|
+
self.tag = tag
|
|
61038
|
+
self.tags = tags
|
|
60498
61039
|
# The ID of the transit router with which the IPsec-VPN connection is associated.
|
|
60499
61040
|
self.transit_router_id = transit_router_id
|
|
60500
61041
|
# The name of the transit router.
|
|
60501
61042
|
self.transit_router_name = transit_router_name
|
|
60502
61043
|
|
|
60503
61044
|
def validate(self):
|
|
60504
|
-
|
|
61045
|
+
if self.tags:
|
|
61046
|
+
for k in self.tags:
|
|
61047
|
+
if k:
|
|
61048
|
+
k.validate()
|
|
60505
61049
|
|
|
60506
61050
|
def to_map(self):
|
|
60507
61051
|
_map = super().to_map()
|
|
@@ -60519,6 +61063,12 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60519
61063
|
result['InstanceId'] = self.instance_id
|
|
60520
61064
|
if self.name is not None:
|
|
60521
61065
|
result['Name'] = self.name
|
|
61066
|
+
if self.tag is not None:
|
|
61067
|
+
result['Tag'] = self.tag
|
|
61068
|
+
result['Tags'] = []
|
|
61069
|
+
if self.tags is not None:
|
|
61070
|
+
for k in self.tags:
|
|
61071
|
+
result['Tags'].append(k.to_map() if k else None)
|
|
60522
61072
|
if self.transit_router_id is not None:
|
|
60523
61073
|
result['TransitRouterId'] = self.transit_router_id
|
|
60524
61074
|
if self.transit_router_name is not None:
|
|
@@ -60537,6 +61087,13 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60537
61087
|
self.instance_id = m.get('InstanceId')
|
|
60538
61088
|
if m.get('Name') is not None:
|
|
60539
61089
|
self.name = m.get('Name')
|
|
61090
|
+
if m.get('Tag') is not None:
|
|
61091
|
+
self.tag = m.get('Tag')
|
|
61092
|
+
self.tags = []
|
|
61093
|
+
if m.get('Tags') is not None:
|
|
61094
|
+
for k in m.get('Tags'):
|
|
61095
|
+
temp_model = DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags()
|
|
61096
|
+
self.tags.append(temp_model.from_map(k))
|
|
60540
61097
|
if m.get('TransitRouterId') is not None:
|
|
60541
61098
|
self.transit_router_id = m.get('TransitRouterId')
|
|
60542
61099
|
if m.get('TransitRouterName') is not None:
|
|
@@ -61141,6 +61698,7 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61141
61698
|
tunnel_bgp_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelBgpConfig = None,
|
|
61142
61699
|
tunnel_id: str = None,
|
|
61143
61700
|
tunnel_ike_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig = None,
|
|
61701
|
+
tunnel_index: int = None,
|
|
61144
61702
|
tunnel_ipsec_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig = None,
|
|
61145
61703
|
zone_no: str = None,
|
|
61146
61704
|
):
|
|
@@ -61186,6 +61744,7 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61186
61744
|
self.tunnel_id = tunnel_id
|
|
61187
61745
|
# The configuration of Phase 1 negotiations.
|
|
61188
61746
|
self.tunnel_ike_config = tunnel_ike_config
|
|
61747
|
+
self.tunnel_index = tunnel_index
|
|
61189
61748
|
# The configurations of Phase 2 negotiations.
|
|
61190
61749
|
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
61191
61750
|
# The zone where the tunnel is deployed.
|
|
@@ -61229,6 +61788,8 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61229
61788
|
result['TunnelId'] = self.tunnel_id
|
|
61230
61789
|
if self.tunnel_ike_config is not None:
|
|
61231
61790
|
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
61791
|
+
if self.tunnel_index is not None:
|
|
61792
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
61232
61793
|
if self.tunnel_ipsec_config is not None:
|
|
61233
61794
|
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
61234
61795
|
if self.zone_no is not None:
|
|
@@ -61261,6 +61822,8 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61261
61822
|
if m.get('TunnelIkeConfig') is not None:
|
|
61262
61823
|
temp_model = DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig()
|
|
61263
61824
|
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
61825
|
+
if m.get('TunnelIndex') is not None:
|
|
61826
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
61264
61827
|
if m.get('TunnelIpsecConfig') is not None:
|
|
61265
61828
|
temp_model = DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig()
|
|
61266
61829
|
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
@@ -62656,6 +63219,7 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62656
63219
|
tunnel_bgp_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelBgpConfig = None,
|
|
62657
63220
|
tunnel_id: str = None,
|
|
62658
63221
|
tunnel_ike_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig = None,
|
|
63222
|
+
tunnel_index: int = None,
|
|
62659
63223
|
tunnel_ipsec_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig = None,
|
|
62660
63224
|
zone_no: str = None,
|
|
62661
63225
|
):
|
|
@@ -62701,6 +63265,7 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62701
63265
|
self.tunnel_id = tunnel_id
|
|
62702
63266
|
# The configuration of Phase 1 negotiations.
|
|
62703
63267
|
self.tunnel_ike_config = tunnel_ike_config
|
|
63268
|
+
self.tunnel_index = tunnel_index
|
|
62704
63269
|
# The configurations of Phase 2 negotiations.
|
|
62705
63270
|
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
62706
63271
|
# The zone of the tunnel.
|
|
@@ -62742,6 +63307,8 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62742
63307
|
result['TunnelId'] = self.tunnel_id
|
|
62743
63308
|
if self.tunnel_ike_config is not None:
|
|
62744
63309
|
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
63310
|
+
if self.tunnel_index is not None:
|
|
63311
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
62745
63312
|
if self.tunnel_ipsec_config is not None:
|
|
62746
63313
|
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
62747
63314
|
if self.zone_no is not None:
|
|
@@ -62774,6 +63341,8 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62774
63341
|
if m.get('TunnelIkeConfig') is not None:
|
|
62775
63342
|
temp_model = DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig()
|
|
62776
63343
|
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
63344
|
+
if m.get('TunnelIndex') is not None:
|
|
63345
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
62777
63346
|
if m.get('TunnelIpsecConfig') is not None:
|
|
62778
63347
|
temp_model = DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig()
|
|
62779
63348
|
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
@@ -64033,33 +64602,38 @@ class DescribeVpnGatewayResponseBody(TeaModel):
|
|
|
64033
64602
|
# * **updating**\
|
|
64034
64603
|
# * **deleting**\
|
|
64035
64604
|
self.status = status
|
|
64036
|
-
# The automatically generated tag of the
|
|
64605
|
+
# The tag that is automatically generated for the VPN gateway. The tag consists of the following parameters:
|
|
64037
64606
|
#
|
|
64038
64607
|
# * **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:
|
|
64039
64608
|
#
|
|
64040
64609
|
# * **true**\
|
|
64041
64610
|
# * **false**\
|
|
64042
64611
|
#
|
|
64043
|
-
# * **VisuallySsl**: indicates whether the VPN gateway allows you to view information
|
|
64612
|
+
# * **VisuallySsl**: indicates whether the VPN gateway allows you to view the connection information of SSL clients. Valid values:
|
|
64044
64613
|
#
|
|
64045
64614
|
# * **true**\
|
|
64046
64615
|
# * **false**\
|
|
64047
64616
|
#
|
|
64048
|
-
# * **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes.
|
|
64617
|
+
# * **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes. Valid values:
|
|
64049
64618
|
#
|
|
64050
64619
|
# * **true**\
|
|
64051
64620
|
# * **false**\
|
|
64052
64621
|
#
|
|
64053
|
-
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded.
|
|
64622
|
+
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:
|
|
64054
64623
|
#
|
|
64055
64624
|
# * **true**\
|
|
64056
64625
|
# * **false**\
|
|
64057
64626
|
#
|
|
64058
|
-
# * **description
|
|
64627
|
+
# * **description**: the description of the VPN gateway. This parameter is only for internal use.
|
|
64628
|
+
#
|
|
64629
|
+
# * **VpnVersion**: the version of the VPN gateway.
|
|
64630
|
+
#
|
|
64631
|
+
# * **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.
|
|
64059
64632
|
#
|
|
64060
|
-
#
|
|
64633
|
+
# * **true**\
|
|
64634
|
+
# * **false**\
|
|
64061
64635
|
self.tag = tag
|
|
64062
|
-
# The
|
|
64636
|
+
# The tags that are added to the VPN gateway.
|
|
64063
64637
|
self.tags = tags
|
|
64064
64638
|
# The ID of the vSwitch to which the VPN gateway belongs.
|
|
64065
64639
|
self.v_switch_id = v_switch_id
|
|
@@ -64067,9 +64641,7 @@ class DescribeVpnGatewayResponseBody(TeaModel):
|
|
|
64067
64641
|
self.vpc_id = vpc_id
|
|
64068
64642
|
# The ID of the VPN gateway.
|
|
64069
64643
|
self.vpn_gateway_id = vpn_gateway_id
|
|
64070
|
-
# The type of
|
|
64071
|
-
#
|
|
64072
|
-
# Only **Normal** may be returned, which indicates a standard VPN gateway.
|
|
64644
|
+
# The type of VPN gateway. Only **Normal** may be returned, which indicates a standard VPN gateway.
|
|
64073
64645
|
self.vpn_type = vpn_type
|
|
64074
64646
|
|
|
64075
64647
|
def validate(self):
|
|
@@ -64441,17 +65013,13 @@ class DescribeVpnGatewaysRequestTag(TeaModel):
|
|
|
64441
65013
|
key: str = None,
|
|
64442
65014
|
value: str = None,
|
|
64443
65015
|
):
|
|
64444
|
-
# The tag key.
|
|
64445
|
-
#
|
|
64446
|
-
# It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.
|
|
65016
|
+
# The tag key.
|
|
64447
65017
|
#
|
|
64448
|
-
# You can specify at most 20 tag keys
|
|
65018
|
+
# You can specify at most 20 tag keys at a time.
|
|
64449
65019
|
self.key = key
|
|
64450
65020
|
# The tag value.
|
|
64451
65021
|
#
|
|
64452
|
-
#
|
|
64453
|
-
#
|
|
64454
|
-
# Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
|
|
65022
|
+
# Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.
|
|
64455
65023
|
self.value = value
|
|
64456
65024
|
|
|
64457
65025
|
def validate(self):
|
|
@@ -64532,11 +65100,7 @@ class DescribeVpnGatewaysRequest(TeaModel):
|
|
|
64532
65100
|
# * **updating**\
|
|
64533
65101
|
# * **deleting**\
|
|
64534
65102
|
self.status = status
|
|
64535
|
-
# The
|
|
64536
|
-
#
|
|
64537
|
-
# The value of this parameter can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.
|
|
64538
|
-
#
|
|
64539
|
-
# Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
|
|
65103
|
+
# The tags that are added to the VPN gateway.
|
|
64540
65104
|
self.tag = tag
|
|
64541
65105
|
# The ID of the virtual private cloud (VPC) to which the VPN gateway belongs.
|
|
64542
65106
|
self.vpc_id = vpc_id
|
|
@@ -64922,7 +65486,7 @@ class DescribeVpnGatewaysResponseBodyVpnGatewaysVpnGateway(TeaModel):
|
|
|
64922
65486
|
# * **updating**\
|
|
64923
65487
|
# * **deleting**\
|
|
64924
65488
|
self.status = status
|
|
64925
|
-
# The tag that is automatically generated for the VPN gateway.
|
|
65489
|
+
# The tag that is automatically generated for the VPN gateway.
|
|
64926
65490
|
#
|
|
64927
65491
|
# * **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:
|
|
64928
65492
|
#
|
|
@@ -64941,12 +65505,17 @@ class DescribeVpnGatewaysResponseBodyVpnGatewaysVpnGateway(TeaModel):
|
|
|
64941
65505
|
#
|
|
64942
65506
|
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:
|
|
64943
65507
|
#
|
|
64944
|
-
# * **true
|
|
65508
|
+
# * **true**: queries only SQL templates that need to be optimized.
|
|
64945
65509
|
# * **false**: does not query only SQL statements that need to be optimized.
|
|
64946
65510
|
#
|
|
64947
65511
|
# * **description**: the description of the VPN gateway. This parameter is only for internal use.
|
|
64948
65512
|
#
|
|
64949
65513
|
# * **VpnVersion**: the version of the VPN gateway.
|
|
65514
|
+
#
|
|
65515
|
+
# * **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.
|
|
65516
|
+
#
|
|
65517
|
+
# * **true**\
|
|
65518
|
+
# * **false**\
|
|
64950
65519
|
self.tag = tag
|
|
64951
65520
|
# The tags that are added to the VPN gateway.
|
|
64952
65521
|
self.tags = tags
|
|
@@ -65145,7 +65714,7 @@ class DescribeVpnGatewaysResponseBody(TeaModel):
|
|
|
65145
65714
|
self.request_id = request_id
|
|
65146
65715
|
# The number of entries returned.
|
|
65147
65716
|
self.total_count = total_count
|
|
65148
|
-
# The VPN gateways.
|
|
65717
|
+
# The information about the VPN gateways.
|
|
65149
65718
|
self.vpn_gateways = vpn_gateways
|
|
65150
65719
|
|
|
65151
65720
|
def validate(self):
|
|
@@ -65629,6 +66198,80 @@ class DescribeVpnRouteEntriesRequest(TeaModel):
|
|
|
65629
66198
|
return self
|
|
65630
66199
|
|
|
65631
66200
|
|
|
66201
|
+
class DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount(TeaModel):
|
|
66202
|
+
def __init__(
|
|
66203
|
+
self,
|
|
66204
|
+
route_count: int = None,
|
|
66205
|
+
route_entry_type: str = None,
|
|
66206
|
+
source: str = None,
|
|
66207
|
+
):
|
|
66208
|
+
self.route_count = route_count
|
|
66209
|
+
self.route_entry_type = route_entry_type
|
|
66210
|
+
self.source = source
|
|
66211
|
+
|
|
66212
|
+
def validate(self):
|
|
66213
|
+
pass
|
|
66214
|
+
|
|
66215
|
+
def to_map(self):
|
|
66216
|
+
_map = super().to_map()
|
|
66217
|
+
if _map is not None:
|
|
66218
|
+
return _map
|
|
66219
|
+
|
|
66220
|
+
result = dict()
|
|
66221
|
+
if self.route_count is not None:
|
|
66222
|
+
result['RouteCount'] = self.route_count
|
|
66223
|
+
if self.route_entry_type is not None:
|
|
66224
|
+
result['RouteEntryType'] = self.route_entry_type
|
|
66225
|
+
if self.source is not None:
|
|
66226
|
+
result['Source'] = self.source
|
|
66227
|
+
return result
|
|
66228
|
+
|
|
66229
|
+
def from_map(self, m: dict = None):
|
|
66230
|
+
m = m or dict()
|
|
66231
|
+
if m.get('RouteCount') is not None:
|
|
66232
|
+
self.route_count = m.get('RouteCount')
|
|
66233
|
+
if m.get('RouteEntryType') is not None:
|
|
66234
|
+
self.route_entry_type = m.get('RouteEntryType')
|
|
66235
|
+
if m.get('Source') is not None:
|
|
66236
|
+
self.source = m.get('Source')
|
|
66237
|
+
return self
|
|
66238
|
+
|
|
66239
|
+
|
|
66240
|
+
class DescribeVpnRouteEntriesResponseBodyVpnRouteCounts(TeaModel):
|
|
66241
|
+
def __init__(
|
|
66242
|
+
self,
|
|
66243
|
+
vpn_route_count: List[DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount] = None,
|
|
66244
|
+
):
|
|
66245
|
+
self.vpn_route_count = vpn_route_count
|
|
66246
|
+
|
|
66247
|
+
def validate(self):
|
|
66248
|
+
if self.vpn_route_count:
|
|
66249
|
+
for k in self.vpn_route_count:
|
|
66250
|
+
if k:
|
|
66251
|
+
k.validate()
|
|
66252
|
+
|
|
66253
|
+
def to_map(self):
|
|
66254
|
+
_map = super().to_map()
|
|
66255
|
+
if _map is not None:
|
|
66256
|
+
return _map
|
|
66257
|
+
|
|
66258
|
+
result = dict()
|
|
66259
|
+
result['VpnRouteCount'] = []
|
|
66260
|
+
if self.vpn_route_count is not None:
|
|
66261
|
+
for k in self.vpn_route_count:
|
|
66262
|
+
result['VpnRouteCount'].append(k.to_map() if k else None)
|
|
66263
|
+
return result
|
|
66264
|
+
|
|
66265
|
+
def from_map(self, m: dict = None):
|
|
66266
|
+
m = m or dict()
|
|
66267
|
+
self.vpn_route_count = []
|
|
66268
|
+
if m.get('VpnRouteCount') is not None:
|
|
66269
|
+
for k in m.get('VpnRouteCount'):
|
|
66270
|
+
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount()
|
|
66271
|
+
self.vpn_route_count.append(temp_model.from_map(k))
|
|
66272
|
+
return self
|
|
66273
|
+
|
|
66274
|
+
|
|
65632
66275
|
class DescribeVpnRouteEntriesResponseBodyVpnRouteEntriesVpnRouteEntry(TeaModel):
|
|
65633
66276
|
def __init__(
|
|
65634
66277
|
self,
|
|
@@ -65781,6 +66424,7 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65781
66424
|
page_size: int = None,
|
|
65782
66425
|
request_id: str = None,
|
|
65783
66426
|
total_count: int = None,
|
|
66427
|
+
vpn_route_counts: DescribeVpnRouteEntriesResponseBodyVpnRouteCounts = None,
|
|
65784
66428
|
vpn_route_entries: DescribeVpnRouteEntriesResponseBodyVpnRouteEntries = None,
|
|
65785
66429
|
):
|
|
65786
66430
|
# The page number of the returned page.
|
|
@@ -65791,10 +66435,13 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65791
66435
|
self.request_id = request_id
|
|
65792
66436
|
# The total number of entries returned.
|
|
65793
66437
|
self.total_count = total_count
|
|
66438
|
+
self.vpn_route_counts = vpn_route_counts
|
|
65794
66439
|
# The list of route entries.
|
|
65795
66440
|
self.vpn_route_entries = vpn_route_entries
|
|
65796
66441
|
|
|
65797
66442
|
def validate(self):
|
|
66443
|
+
if self.vpn_route_counts:
|
|
66444
|
+
self.vpn_route_counts.validate()
|
|
65798
66445
|
if self.vpn_route_entries:
|
|
65799
66446
|
self.vpn_route_entries.validate()
|
|
65800
66447
|
|
|
@@ -65812,6 +66459,8 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65812
66459
|
result['RequestId'] = self.request_id
|
|
65813
66460
|
if self.total_count is not None:
|
|
65814
66461
|
result['TotalCount'] = self.total_count
|
|
66462
|
+
if self.vpn_route_counts is not None:
|
|
66463
|
+
result['VpnRouteCounts'] = self.vpn_route_counts.to_map()
|
|
65815
66464
|
if self.vpn_route_entries is not None:
|
|
65816
66465
|
result['VpnRouteEntries'] = self.vpn_route_entries.to_map()
|
|
65817
66466
|
return result
|
|
@@ -65826,6 +66475,9 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65826
66475
|
self.request_id = m.get('RequestId')
|
|
65827
66476
|
if m.get('TotalCount') is not None:
|
|
65828
66477
|
self.total_count = m.get('TotalCount')
|
|
66478
|
+
if m.get('VpnRouteCounts') is not None:
|
|
66479
|
+
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteCounts()
|
|
66480
|
+
self.vpn_route_counts = temp_model.from_map(m['VpnRouteCounts'])
|
|
65829
66481
|
if m.get('VpnRouteEntries') is not None:
|
|
65830
66482
|
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteEntries()
|
|
65831
66483
|
self.vpn_route_entries = temp_model.from_map(m['VpnRouteEntries'])
|
|
@@ -67547,7 +68199,7 @@ class DissociateVpnGatewayWithCertificateRequest(TeaModel):
|
|
|
67547
68199
|
):
|
|
67548
68200
|
# The certificate ID.
|
|
67549
68201
|
#
|
|
67550
|
-
# >
|
|
68202
|
+
# > The certificate ID refers to the ID generated after the SSL certificate is associated with the VPN gateway. It is not the ID of the SSL certificate. You can call the [ListVpnCertificateAssociations](https://help.aliyun.com/document_detail/2521961.html) operation to query certificate IDs.
|
|
67551
68203
|
#
|
|
67552
68204
|
# This parameter is required.
|
|
67553
68205
|
self.certificate_id = certificate_id
|
|
@@ -83890,6 +84542,7 @@ class ModifyForwardEntryRequest(TeaModel):
|
|
|
83890
84542
|
def __init__(
|
|
83891
84543
|
self,
|
|
83892
84544
|
client_token: str = None,
|
|
84545
|
+
dry_run: bool = None,
|
|
83893
84546
|
external_ip: str = None,
|
|
83894
84547
|
external_port: str = None,
|
|
83895
84548
|
forward_entry_id: str = None,
|
|
@@ -83911,6 +84564,7 @@ class ModifyForwardEntryRequest(TeaModel):
|
|
|
83911
84564
|
#
|
|
83912
84565
|
# > If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
|
|
83913
84566
|
self.client_token = client_token
|
|
84567
|
+
self.dry_run = dry_run
|
|
83914
84568
|
# * When you modify DNAT entries of Internet NAT gateways, this parameter specifies the elastic IP addresses (EIPs) that are used to access the Internet.
|
|
83915
84569
|
# * When you modify DNAT entries of Virtual Private Cloud (VPC) NAT gateways, this parameter specifies the NAT IP addresses that are accessed by external networks.
|
|
83916
84570
|
self.external_ip = external_ip
|
|
@@ -83973,6 +84627,8 @@ class ModifyForwardEntryRequest(TeaModel):
|
|
|
83973
84627
|
result = dict()
|
|
83974
84628
|
if self.client_token is not None:
|
|
83975
84629
|
result['ClientToken'] = self.client_token
|
|
84630
|
+
if self.dry_run is not None:
|
|
84631
|
+
result['DryRun'] = self.dry_run
|
|
83976
84632
|
if self.external_ip is not None:
|
|
83977
84633
|
result['ExternalIp'] = self.external_ip
|
|
83978
84634
|
if self.external_port is not None:
|
|
@@ -84007,6 +84663,8 @@ class ModifyForwardEntryRequest(TeaModel):
|
|
|
84007
84663
|
m = m or dict()
|
|
84008
84664
|
if m.get('ClientToken') is not None:
|
|
84009
84665
|
self.client_token = m.get('ClientToken')
|
|
84666
|
+
if m.get('DryRun') is not None:
|
|
84667
|
+
self.dry_run = m.get('DryRun')
|
|
84010
84668
|
if m.get('ExternalIp') is not None:
|
|
84011
84669
|
self.external_ip = m.get('ExternalIp')
|
|
84012
84670
|
if m.get('ExternalPort') is not None:
|
|
@@ -88134,6 +88792,7 @@ class ModifySnatEntryRequest(TeaModel):
|
|
|
88134
88792
|
def __init__(
|
|
88135
88793
|
self,
|
|
88136
88794
|
client_token: str = None,
|
|
88795
|
+
dry_run: bool = None,
|
|
88137
88796
|
eip_affinity: int = None,
|
|
88138
88797
|
network_interface_id: str = None,
|
|
88139
88798
|
owner_account: str = None,
|
|
@@ -88152,6 +88811,7 @@ class ModifySnatEntryRequest(TeaModel):
|
|
|
88152
88811
|
#
|
|
88153
88812
|
# > If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
|
|
88154
88813
|
self.client_token = client_token
|
|
88814
|
+
self.dry_run = dry_run
|
|
88155
88815
|
self.eip_affinity = eip_affinity
|
|
88156
88816
|
self.network_interface_id = network_interface_id
|
|
88157
88817
|
self.owner_account = owner_account
|
|
@@ -88194,6 +88854,8 @@ class ModifySnatEntryRequest(TeaModel):
|
|
|
88194
88854
|
result = dict()
|
|
88195
88855
|
if self.client_token is not None:
|
|
88196
88856
|
result['ClientToken'] = self.client_token
|
|
88857
|
+
if self.dry_run is not None:
|
|
88858
|
+
result['DryRun'] = self.dry_run
|
|
88197
88859
|
if self.eip_affinity is not None:
|
|
88198
88860
|
result['EipAffinity'] = self.eip_affinity
|
|
88199
88861
|
if self.network_interface_id is not None:
|
|
@@ -88222,6 +88884,8 @@ class ModifySnatEntryRequest(TeaModel):
|
|
|
88222
88884
|
m = m or dict()
|
|
88223
88885
|
if m.get('ClientToken') is not None:
|
|
88224
88886
|
self.client_token = m.get('ClientToken')
|
|
88887
|
+
if m.get('DryRun') is not None:
|
|
88888
|
+
self.dry_run = m.get('DryRun')
|
|
88225
88889
|
if m.get('EipAffinity') is not None:
|
|
88226
88890
|
self.eip_affinity = m.get('EipAffinity')
|
|
88227
88891
|
if m.get('NetworkInterfaceId') is not None:
|
|
@@ -89062,6 +89726,7 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig(Te
|
|
|
89062
89726
|
class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
89063
89727
|
def __init__(
|
|
89064
89728
|
self,
|
|
89729
|
+
customer_gateway_id: str = None,
|
|
89065
89730
|
enable_dpd: bool = None,
|
|
89066
89731
|
enable_nat_traversal: bool = None,
|
|
89067
89732
|
remote_ca_certificate: str = None,
|
|
@@ -89069,6 +89734,7 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
89069
89734
|
tunnel_ike_config: ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
89070
89735
|
tunnel_ipsec_config: ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
89071
89736
|
):
|
|
89737
|
+
self.customer_gateway_id = customer_gateway_id
|
|
89072
89738
|
# Specifies whether to enable the dead peer detection (DPD) feature. Valid values:
|
|
89073
89739
|
#
|
|
89074
89740
|
# * **true**: DPD is enabled. The IPsec initiator sends DPD packets to verify the existence and availability of the IPsec peer. If no response is received from the peer within a specified period of time, the IPsec peer is considered disconnected. Then, the ISAKMP SA, IPsec SA, and IPsec tunnel are deleted.
|
|
@@ -89104,6 +89770,8 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
89104
89770
|
return _map
|
|
89105
89771
|
|
|
89106
89772
|
result = dict()
|
|
89773
|
+
if self.customer_gateway_id is not None:
|
|
89774
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
89107
89775
|
if self.enable_dpd is not None:
|
|
89108
89776
|
result['EnableDpd'] = self.enable_dpd
|
|
89109
89777
|
if self.enable_nat_traversal is not None:
|
|
@@ -89120,6 +89788,8 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
89120
89788
|
|
|
89121
89789
|
def from_map(self, m: dict = None):
|
|
89122
89790
|
m = m or dict()
|
|
89791
|
+
if m.get('CustomerGatewayId') is not None:
|
|
89792
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
89123
89793
|
if m.get('EnableDpd') is not None:
|
|
89124
89794
|
self.enable_dpd = m.get('EnableDpd')
|
|
89125
89795
|
if m.get('EnableNatTraversal') is not None:
|
|
@@ -91070,6 +91740,242 @@ class ModifyVpcPrefixListResponse(TeaModel):
|
|
|
91070
91740
|
return self
|
|
91071
91741
|
|
|
91072
91742
|
|
|
91743
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
91744
|
+
def __init__(
|
|
91745
|
+
self,
|
|
91746
|
+
local_asn: int = None,
|
|
91747
|
+
local_bgp_ip: str = None,
|
|
91748
|
+
tunnel_cidr: str = None,
|
|
91749
|
+
):
|
|
91750
|
+
self.local_asn = local_asn
|
|
91751
|
+
self.local_bgp_ip = local_bgp_ip
|
|
91752
|
+
self.tunnel_cidr = tunnel_cidr
|
|
91753
|
+
|
|
91754
|
+
def validate(self):
|
|
91755
|
+
pass
|
|
91756
|
+
|
|
91757
|
+
def to_map(self):
|
|
91758
|
+
_map = super().to_map()
|
|
91759
|
+
if _map is not None:
|
|
91760
|
+
return _map
|
|
91761
|
+
|
|
91762
|
+
result = dict()
|
|
91763
|
+
if self.local_asn is not None:
|
|
91764
|
+
result['LocalAsn'] = self.local_asn
|
|
91765
|
+
if self.local_bgp_ip is not None:
|
|
91766
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
91767
|
+
if self.tunnel_cidr is not None:
|
|
91768
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
91769
|
+
return result
|
|
91770
|
+
|
|
91771
|
+
def from_map(self, m: dict = None):
|
|
91772
|
+
m = m or dict()
|
|
91773
|
+
if m.get('LocalAsn') is not None:
|
|
91774
|
+
self.local_asn = m.get('LocalAsn')
|
|
91775
|
+
if m.get('LocalBgpIp') is not None:
|
|
91776
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
91777
|
+
if m.get('TunnelCidr') is not None:
|
|
91778
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
91779
|
+
return self
|
|
91780
|
+
|
|
91781
|
+
|
|
91782
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
91783
|
+
def __init__(
|
|
91784
|
+
self,
|
|
91785
|
+
ike_auth_alg: str = None,
|
|
91786
|
+
ike_enc_alg: str = None,
|
|
91787
|
+
ike_lifetime: int = None,
|
|
91788
|
+
ike_mode: str = None,
|
|
91789
|
+
ike_pfs: str = None,
|
|
91790
|
+
ike_version: str = None,
|
|
91791
|
+
local_id: str = None,
|
|
91792
|
+
psk: str = None,
|
|
91793
|
+
remote_id: str = None,
|
|
91794
|
+
):
|
|
91795
|
+
self.ike_auth_alg = ike_auth_alg
|
|
91796
|
+
self.ike_enc_alg = ike_enc_alg
|
|
91797
|
+
self.ike_lifetime = ike_lifetime
|
|
91798
|
+
self.ike_mode = ike_mode
|
|
91799
|
+
self.ike_pfs = ike_pfs
|
|
91800
|
+
self.ike_version = ike_version
|
|
91801
|
+
self.local_id = local_id
|
|
91802
|
+
self.psk = psk
|
|
91803
|
+
self.remote_id = remote_id
|
|
91804
|
+
|
|
91805
|
+
def validate(self):
|
|
91806
|
+
pass
|
|
91807
|
+
|
|
91808
|
+
def to_map(self):
|
|
91809
|
+
_map = super().to_map()
|
|
91810
|
+
if _map is not None:
|
|
91811
|
+
return _map
|
|
91812
|
+
|
|
91813
|
+
result = dict()
|
|
91814
|
+
if self.ike_auth_alg is not None:
|
|
91815
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
91816
|
+
if self.ike_enc_alg is not None:
|
|
91817
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
91818
|
+
if self.ike_lifetime is not None:
|
|
91819
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
91820
|
+
if self.ike_mode is not None:
|
|
91821
|
+
result['IkeMode'] = self.ike_mode
|
|
91822
|
+
if self.ike_pfs is not None:
|
|
91823
|
+
result['IkePfs'] = self.ike_pfs
|
|
91824
|
+
if self.ike_version is not None:
|
|
91825
|
+
result['IkeVersion'] = self.ike_version
|
|
91826
|
+
if self.local_id is not None:
|
|
91827
|
+
result['LocalId'] = self.local_id
|
|
91828
|
+
if self.psk is not None:
|
|
91829
|
+
result['Psk'] = self.psk
|
|
91830
|
+
if self.remote_id is not None:
|
|
91831
|
+
result['RemoteId'] = self.remote_id
|
|
91832
|
+
return result
|
|
91833
|
+
|
|
91834
|
+
def from_map(self, m: dict = None):
|
|
91835
|
+
m = m or dict()
|
|
91836
|
+
if m.get('IkeAuthAlg') is not None:
|
|
91837
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
91838
|
+
if m.get('IkeEncAlg') is not None:
|
|
91839
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
91840
|
+
if m.get('IkeLifetime') is not None:
|
|
91841
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
91842
|
+
if m.get('IkeMode') is not None:
|
|
91843
|
+
self.ike_mode = m.get('IkeMode')
|
|
91844
|
+
if m.get('IkePfs') is not None:
|
|
91845
|
+
self.ike_pfs = m.get('IkePfs')
|
|
91846
|
+
if m.get('IkeVersion') is not None:
|
|
91847
|
+
self.ike_version = m.get('IkeVersion')
|
|
91848
|
+
if m.get('LocalId') is not None:
|
|
91849
|
+
self.local_id = m.get('LocalId')
|
|
91850
|
+
if m.get('Psk') is not None:
|
|
91851
|
+
self.psk = m.get('Psk')
|
|
91852
|
+
if m.get('RemoteId') is not None:
|
|
91853
|
+
self.remote_id = m.get('RemoteId')
|
|
91854
|
+
return self
|
|
91855
|
+
|
|
91856
|
+
|
|
91857
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
91858
|
+
def __init__(
|
|
91859
|
+
self,
|
|
91860
|
+
ipsec_auth_alg: str = None,
|
|
91861
|
+
ipsec_enc_alg: str = None,
|
|
91862
|
+
ipsec_lifetime: int = None,
|
|
91863
|
+
ipsec_pfs: str = None,
|
|
91864
|
+
):
|
|
91865
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
91866
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
91867
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
91868
|
+
self.ipsec_pfs = ipsec_pfs
|
|
91869
|
+
|
|
91870
|
+
def validate(self):
|
|
91871
|
+
pass
|
|
91872
|
+
|
|
91873
|
+
def to_map(self):
|
|
91874
|
+
_map = super().to_map()
|
|
91875
|
+
if _map is not None:
|
|
91876
|
+
return _map
|
|
91877
|
+
|
|
91878
|
+
result = dict()
|
|
91879
|
+
if self.ipsec_auth_alg is not None:
|
|
91880
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
91881
|
+
if self.ipsec_enc_alg is not None:
|
|
91882
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
91883
|
+
if self.ipsec_lifetime is not None:
|
|
91884
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
91885
|
+
if self.ipsec_pfs is not None:
|
|
91886
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
91887
|
+
return result
|
|
91888
|
+
|
|
91889
|
+
def from_map(self, m: dict = None):
|
|
91890
|
+
m = m or dict()
|
|
91891
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
91892
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
91893
|
+
if m.get('IpsecEncAlg') is not None:
|
|
91894
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
91895
|
+
if m.get('IpsecLifetime') is not None:
|
|
91896
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
91897
|
+
if m.get('IpsecPfs') is not None:
|
|
91898
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
91899
|
+
return self
|
|
91900
|
+
|
|
91901
|
+
|
|
91902
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
91903
|
+
def __init__(
|
|
91904
|
+
self,
|
|
91905
|
+
customer_gateway_id: str = None,
|
|
91906
|
+
enable_dpd: bool = None,
|
|
91907
|
+
enable_nat_traversal: bool = None,
|
|
91908
|
+
tunnel_bgp_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
91909
|
+
tunnel_id: str = None,
|
|
91910
|
+
tunnel_ike_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
91911
|
+
tunnel_index: int = None,
|
|
91912
|
+
tunnel_ipsec_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
91913
|
+
):
|
|
91914
|
+
self.customer_gateway_id = customer_gateway_id
|
|
91915
|
+
self.enable_dpd = enable_dpd
|
|
91916
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
91917
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
91918
|
+
self.tunnel_id = tunnel_id
|
|
91919
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
91920
|
+
self.tunnel_index = tunnel_index
|
|
91921
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
91922
|
+
|
|
91923
|
+
def validate(self):
|
|
91924
|
+
if self.tunnel_bgp_config:
|
|
91925
|
+
self.tunnel_bgp_config.validate()
|
|
91926
|
+
if self.tunnel_ike_config:
|
|
91927
|
+
self.tunnel_ike_config.validate()
|
|
91928
|
+
if self.tunnel_ipsec_config:
|
|
91929
|
+
self.tunnel_ipsec_config.validate()
|
|
91930
|
+
|
|
91931
|
+
def to_map(self):
|
|
91932
|
+
_map = super().to_map()
|
|
91933
|
+
if _map is not None:
|
|
91934
|
+
return _map
|
|
91935
|
+
|
|
91936
|
+
result = dict()
|
|
91937
|
+
if self.customer_gateway_id is not None:
|
|
91938
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
91939
|
+
if self.enable_dpd is not None:
|
|
91940
|
+
result['EnableDpd'] = self.enable_dpd
|
|
91941
|
+
if self.enable_nat_traversal is not None:
|
|
91942
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
91943
|
+
if self.tunnel_bgp_config is not None:
|
|
91944
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
91945
|
+
if self.tunnel_id is not None:
|
|
91946
|
+
result['TunnelId'] = self.tunnel_id
|
|
91947
|
+
if self.tunnel_ike_config is not None:
|
|
91948
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
91949
|
+
if self.tunnel_index is not None:
|
|
91950
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
91951
|
+
if self.tunnel_ipsec_config is not None:
|
|
91952
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
91953
|
+
return result
|
|
91954
|
+
|
|
91955
|
+
def from_map(self, m: dict = None):
|
|
91956
|
+
m = m or dict()
|
|
91957
|
+
if m.get('CustomerGatewayId') is not None:
|
|
91958
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
91959
|
+
if m.get('EnableDpd') is not None:
|
|
91960
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
91961
|
+
if m.get('EnableNatTraversal') is not None:
|
|
91962
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
91963
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
91964
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig()
|
|
91965
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
91966
|
+
if m.get('TunnelId') is not None:
|
|
91967
|
+
self.tunnel_id = m.get('TunnelId')
|
|
91968
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
91969
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig()
|
|
91970
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
91971
|
+
if m.get('TunnelIndex') is not None:
|
|
91972
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
91973
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
91974
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
91975
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
91976
|
+
return self
|
|
91977
|
+
|
|
91978
|
+
|
|
91073
91979
|
class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
91074
91980
|
def __init__(
|
|
91075
91981
|
self,
|
|
@@ -91080,6 +91986,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91080
91986
|
effect_immediately: bool = None,
|
|
91081
91987
|
enable_dpd: bool = None,
|
|
91082
91988
|
enable_nat_traversal: bool = None,
|
|
91989
|
+
enable_tunnels_bgp: bool = None,
|
|
91083
91990
|
health_check_config: str = None,
|
|
91084
91991
|
ike_config: str = None,
|
|
91085
91992
|
ipsec_config: str = None,
|
|
@@ -91092,6 +91999,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91092
91999
|
remote_subnet: str = None,
|
|
91093
92000
|
resource_owner_account: str = None,
|
|
91094
92001
|
resource_owner_id: int = None,
|
|
92002
|
+
tunnel_options_specification: List[ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification] = None,
|
|
91095
92003
|
vpn_connection_id: str = None,
|
|
91096
92004
|
):
|
|
91097
92005
|
# Specifies whether to automatically configure routes. Valid values:
|
|
@@ -91142,6 +92050,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91142
92050
|
# * **true** After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec tunnel.
|
|
91143
92051
|
# * **false**\
|
|
91144
92052
|
self.enable_nat_traversal = enable_nat_traversal
|
|
92053
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
91145
92054
|
# The health check configurations:
|
|
91146
92055
|
#
|
|
91147
92056
|
# * **HealthCheckConfig.enable**: specifies whether to enable the health check feature. Valid values:
|
|
@@ -91232,13 +92141,17 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91232
92141
|
self.remote_subnet = remote_subnet
|
|
91233
92142
|
self.resource_owner_account = resource_owner_account
|
|
91234
92143
|
self.resource_owner_id = resource_owner_id
|
|
92144
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
91235
92145
|
# The ID of the IPsec-VPN connection.
|
|
91236
92146
|
#
|
|
91237
92147
|
# This parameter is required.
|
|
91238
92148
|
self.vpn_connection_id = vpn_connection_id
|
|
91239
92149
|
|
|
91240
92150
|
def validate(self):
|
|
91241
|
-
|
|
92151
|
+
if self.tunnel_options_specification:
|
|
92152
|
+
for k in self.tunnel_options_specification:
|
|
92153
|
+
if k:
|
|
92154
|
+
k.validate()
|
|
91242
92155
|
|
|
91243
92156
|
def to_map(self):
|
|
91244
92157
|
_map = super().to_map()
|
|
@@ -91260,6 +92173,8 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91260
92173
|
result['EnableDpd'] = self.enable_dpd
|
|
91261
92174
|
if self.enable_nat_traversal is not None:
|
|
91262
92175
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92176
|
+
if self.enable_tunnels_bgp is not None:
|
|
92177
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
91263
92178
|
if self.health_check_config is not None:
|
|
91264
92179
|
result['HealthCheckConfig'] = self.health_check_config
|
|
91265
92180
|
if self.ike_config is not None:
|
|
@@ -91284,6 +92199,10 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91284
92199
|
result['ResourceOwnerAccount'] = self.resource_owner_account
|
|
91285
92200
|
if self.resource_owner_id is not None:
|
|
91286
92201
|
result['ResourceOwnerId'] = self.resource_owner_id
|
|
92202
|
+
result['TunnelOptionsSpecification'] = []
|
|
92203
|
+
if self.tunnel_options_specification is not None:
|
|
92204
|
+
for k in self.tunnel_options_specification:
|
|
92205
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
91287
92206
|
if self.vpn_connection_id is not None:
|
|
91288
92207
|
result['VpnConnectionId'] = self.vpn_connection_id
|
|
91289
92208
|
return result
|
|
@@ -91304,6 +92223,8 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91304
92223
|
self.enable_dpd = m.get('EnableDpd')
|
|
91305
92224
|
if m.get('EnableNatTraversal') is not None:
|
|
91306
92225
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92226
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
92227
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
91307
92228
|
if m.get('HealthCheckConfig') is not None:
|
|
91308
92229
|
self.health_check_config = m.get('HealthCheckConfig')
|
|
91309
92230
|
if m.get('IkeConfig') is not None:
|
|
@@ -91328,6 +92249,11 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91328
92249
|
self.resource_owner_account = m.get('ResourceOwnerAccount')
|
|
91329
92250
|
if m.get('ResourceOwnerId') is not None:
|
|
91330
92251
|
self.resource_owner_id = m.get('ResourceOwnerId')
|
|
92252
|
+
self.tunnel_options_specification = []
|
|
92253
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
92254
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
92255
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification()
|
|
92256
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
91331
92257
|
if m.get('VpnConnectionId') is not None:
|
|
91332
92258
|
self.vpn_connection_id = m.get('VpnConnectionId')
|
|
91333
92259
|
return self
|
|
@@ -91468,6 +92394,272 @@ class ModifyVpnAttachmentAttributeResponseBodyIpsecConfig(TeaModel):
|
|
|
91468
92394
|
return self
|
|
91469
92395
|
|
|
91470
92396
|
|
|
92397
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
92398
|
+
def __init__(
|
|
92399
|
+
self,
|
|
92400
|
+
local_asn: int = None,
|
|
92401
|
+
local_bgp_ip: str = None,
|
|
92402
|
+
peer_asn: int = None,
|
|
92403
|
+
peer_bgp_ip: str = None,
|
|
92404
|
+
tunnel_cidr: str = None,
|
|
92405
|
+
):
|
|
92406
|
+
self.local_asn = local_asn
|
|
92407
|
+
self.local_bgp_ip = local_bgp_ip
|
|
92408
|
+
self.peer_asn = peer_asn
|
|
92409
|
+
self.peer_bgp_ip = peer_bgp_ip
|
|
92410
|
+
self.tunnel_cidr = tunnel_cidr
|
|
92411
|
+
|
|
92412
|
+
def validate(self):
|
|
92413
|
+
pass
|
|
92414
|
+
|
|
92415
|
+
def to_map(self):
|
|
92416
|
+
_map = super().to_map()
|
|
92417
|
+
if _map is not None:
|
|
92418
|
+
return _map
|
|
92419
|
+
|
|
92420
|
+
result = dict()
|
|
92421
|
+
if self.local_asn is not None:
|
|
92422
|
+
result['LocalAsn'] = self.local_asn
|
|
92423
|
+
if self.local_bgp_ip is not None:
|
|
92424
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
92425
|
+
if self.peer_asn is not None:
|
|
92426
|
+
result['PeerAsn'] = self.peer_asn
|
|
92427
|
+
if self.peer_bgp_ip is not None:
|
|
92428
|
+
result['PeerBgpIp'] = self.peer_bgp_ip
|
|
92429
|
+
if self.tunnel_cidr is not None:
|
|
92430
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
92431
|
+
return result
|
|
92432
|
+
|
|
92433
|
+
def from_map(self, m: dict = None):
|
|
92434
|
+
m = m or dict()
|
|
92435
|
+
if m.get('LocalAsn') is not None:
|
|
92436
|
+
self.local_asn = m.get('LocalAsn')
|
|
92437
|
+
if m.get('LocalBgpIp') is not None:
|
|
92438
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
92439
|
+
if m.get('PeerAsn') is not None:
|
|
92440
|
+
self.peer_asn = m.get('PeerAsn')
|
|
92441
|
+
if m.get('PeerBgpIp') is not None:
|
|
92442
|
+
self.peer_bgp_ip = m.get('PeerBgpIp')
|
|
92443
|
+
if m.get('TunnelCidr') is not None:
|
|
92444
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
92445
|
+
return self
|
|
92446
|
+
|
|
92447
|
+
|
|
92448
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
92449
|
+
def __init__(
|
|
92450
|
+
self,
|
|
92451
|
+
ike_auth_alg: str = None,
|
|
92452
|
+
ike_enc_alg: str = None,
|
|
92453
|
+
ike_lifetime: int = None,
|
|
92454
|
+
ike_mode: str = None,
|
|
92455
|
+
ike_pfs: str = None,
|
|
92456
|
+
ike_version: str = None,
|
|
92457
|
+
local_id: str = None,
|
|
92458
|
+
psk: str = None,
|
|
92459
|
+
remote_id: str = None,
|
|
92460
|
+
):
|
|
92461
|
+
self.ike_auth_alg = ike_auth_alg
|
|
92462
|
+
self.ike_enc_alg = ike_enc_alg
|
|
92463
|
+
self.ike_lifetime = ike_lifetime
|
|
92464
|
+
self.ike_mode = ike_mode
|
|
92465
|
+
self.ike_pfs = ike_pfs
|
|
92466
|
+
self.ike_version = ike_version
|
|
92467
|
+
self.local_id = local_id
|
|
92468
|
+
self.psk = psk
|
|
92469
|
+
self.remote_id = remote_id
|
|
92470
|
+
|
|
92471
|
+
def validate(self):
|
|
92472
|
+
pass
|
|
92473
|
+
|
|
92474
|
+
def to_map(self):
|
|
92475
|
+
_map = super().to_map()
|
|
92476
|
+
if _map is not None:
|
|
92477
|
+
return _map
|
|
92478
|
+
|
|
92479
|
+
result = dict()
|
|
92480
|
+
if self.ike_auth_alg is not None:
|
|
92481
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
92482
|
+
if self.ike_enc_alg is not None:
|
|
92483
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
92484
|
+
if self.ike_lifetime is not None:
|
|
92485
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
92486
|
+
if self.ike_mode is not None:
|
|
92487
|
+
result['IkeMode'] = self.ike_mode
|
|
92488
|
+
if self.ike_pfs is not None:
|
|
92489
|
+
result['IkePfs'] = self.ike_pfs
|
|
92490
|
+
if self.ike_version is not None:
|
|
92491
|
+
result['IkeVersion'] = self.ike_version
|
|
92492
|
+
if self.local_id is not None:
|
|
92493
|
+
result['LocalId'] = self.local_id
|
|
92494
|
+
if self.psk is not None:
|
|
92495
|
+
result['Psk'] = self.psk
|
|
92496
|
+
if self.remote_id is not None:
|
|
92497
|
+
result['RemoteId'] = self.remote_id
|
|
92498
|
+
return result
|
|
92499
|
+
|
|
92500
|
+
def from_map(self, m: dict = None):
|
|
92501
|
+
m = m or dict()
|
|
92502
|
+
if m.get('IkeAuthAlg') is not None:
|
|
92503
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
92504
|
+
if m.get('IkeEncAlg') is not None:
|
|
92505
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
92506
|
+
if m.get('IkeLifetime') is not None:
|
|
92507
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
92508
|
+
if m.get('IkeMode') is not None:
|
|
92509
|
+
self.ike_mode = m.get('IkeMode')
|
|
92510
|
+
if m.get('IkePfs') is not None:
|
|
92511
|
+
self.ike_pfs = m.get('IkePfs')
|
|
92512
|
+
if m.get('IkeVersion') is not None:
|
|
92513
|
+
self.ike_version = m.get('IkeVersion')
|
|
92514
|
+
if m.get('LocalId') is not None:
|
|
92515
|
+
self.local_id = m.get('LocalId')
|
|
92516
|
+
if m.get('Psk') is not None:
|
|
92517
|
+
self.psk = m.get('Psk')
|
|
92518
|
+
if m.get('RemoteId') is not None:
|
|
92519
|
+
self.remote_id = m.get('RemoteId')
|
|
92520
|
+
return self
|
|
92521
|
+
|
|
92522
|
+
|
|
92523
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
92524
|
+
def __init__(
|
|
92525
|
+
self,
|
|
92526
|
+
ipsec_auth_alg: str = None,
|
|
92527
|
+
ipsec_enc_alg: str = None,
|
|
92528
|
+
ipsec_lifetime: int = None,
|
|
92529
|
+
ipsec_pfs: str = None,
|
|
92530
|
+
):
|
|
92531
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
92532
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
92533
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
92534
|
+
self.ipsec_pfs = ipsec_pfs
|
|
92535
|
+
|
|
92536
|
+
def validate(self):
|
|
92537
|
+
pass
|
|
92538
|
+
|
|
92539
|
+
def to_map(self):
|
|
92540
|
+
_map = super().to_map()
|
|
92541
|
+
if _map is not None:
|
|
92542
|
+
return _map
|
|
92543
|
+
|
|
92544
|
+
result = dict()
|
|
92545
|
+
if self.ipsec_auth_alg is not None:
|
|
92546
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
92547
|
+
if self.ipsec_enc_alg is not None:
|
|
92548
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
92549
|
+
if self.ipsec_lifetime is not None:
|
|
92550
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
92551
|
+
if self.ipsec_pfs is not None:
|
|
92552
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
92553
|
+
return result
|
|
92554
|
+
|
|
92555
|
+
def from_map(self, m: dict = None):
|
|
92556
|
+
m = m or dict()
|
|
92557
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
92558
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
92559
|
+
if m.get('IpsecEncAlg') is not None:
|
|
92560
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
92561
|
+
if m.get('IpsecLifetime') is not None:
|
|
92562
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
92563
|
+
if m.get('IpsecPfs') is not None:
|
|
92564
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
92565
|
+
return self
|
|
92566
|
+
|
|
92567
|
+
|
|
92568
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification(TeaModel):
|
|
92569
|
+
def __init__(
|
|
92570
|
+
self,
|
|
92571
|
+
customer_gateway_id: str = None,
|
|
92572
|
+
enable_dpd: bool = None,
|
|
92573
|
+
enable_nat_traversal: bool = None,
|
|
92574
|
+
internet_ip: str = None,
|
|
92575
|
+
role: str = None,
|
|
92576
|
+
state: str = None,
|
|
92577
|
+
tunnel_bgp_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
92578
|
+
tunnel_id: str = None,
|
|
92579
|
+
tunnel_ike_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
92580
|
+
tunnel_index: int = None,
|
|
92581
|
+
tunnel_ipsec_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
92582
|
+
):
|
|
92583
|
+
self.customer_gateway_id = customer_gateway_id
|
|
92584
|
+
self.enable_dpd = enable_dpd
|
|
92585
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
92586
|
+
self.internet_ip = internet_ip
|
|
92587
|
+
self.role = role
|
|
92588
|
+
self.state = state
|
|
92589
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
92590
|
+
self.tunnel_id = tunnel_id
|
|
92591
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
92592
|
+
self.tunnel_index = tunnel_index
|
|
92593
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
92594
|
+
|
|
92595
|
+
def validate(self):
|
|
92596
|
+
if self.tunnel_bgp_config:
|
|
92597
|
+
self.tunnel_bgp_config.validate()
|
|
92598
|
+
if self.tunnel_ike_config:
|
|
92599
|
+
self.tunnel_ike_config.validate()
|
|
92600
|
+
if self.tunnel_ipsec_config:
|
|
92601
|
+
self.tunnel_ipsec_config.validate()
|
|
92602
|
+
|
|
92603
|
+
def to_map(self):
|
|
92604
|
+
_map = super().to_map()
|
|
92605
|
+
if _map is not None:
|
|
92606
|
+
return _map
|
|
92607
|
+
|
|
92608
|
+
result = dict()
|
|
92609
|
+
if self.customer_gateway_id is not None:
|
|
92610
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
92611
|
+
if self.enable_dpd is not None:
|
|
92612
|
+
result['EnableDpd'] = self.enable_dpd
|
|
92613
|
+
if self.enable_nat_traversal is not None:
|
|
92614
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92615
|
+
if self.internet_ip is not None:
|
|
92616
|
+
result['InternetIp'] = self.internet_ip
|
|
92617
|
+
if self.role is not None:
|
|
92618
|
+
result['Role'] = self.role
|
|
92619
|
+
if self.state is not None:
|
|
92620
|
+
result['State'] = self.state
|
|
92621
|
+
if self.tunnel_bgp_config is not None:
|
|
92622
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
92623
|
+
if self.tunnel_id is not None:
|
|
92624
|
+
result['TunnelId'] = self.tunnel_id
|
|
92625
|
+
if self.tunnel_ike_config is not None:
|
|
92626
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
92627
|
+
if self.tunnel_index is not None:
|
|
92628
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
92629
|
+
if self.tunnel_ipsec_config is not None:
|
|
92630
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
92631
|
+
return result
|
|
92632
|
+
|
|
92633
|
+
def from_map(self, m: dict = None):
|
|
92634
|
+
m = m or dict()
|
|
92635
|
+
if m.get('CustomerGatewayId') is not None:
|
|
92636
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
92637
|
+
if m.get('EnableDpd') is not None:
|
|
92638
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
92639
|
+
if m.get('EnableNatTraversal') is not None:
|
|
92640
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92641
|
+
if m.get('InternetIp') is not None:
|
|
92642
|
+
self.internet_ip = m.get('InternetIp')
|
|
92643
|
+
if m.get('Role') is not None:
|
|
92644
|
+
self.role = m.get('Role')
|
|
92645
|
+
if m.get('State') is not None:
|
|
92646
|
+
self.state = m.get('State')
|
|
92647
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
92648
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig()
|
|
92649
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
92650
|
+
if m.get('TunnelId') is not None:
|
|
92651
|
+
self.tunnel_id = m.get('TunnelId')
|
|
92652
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
92653
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig()
|
|
92654
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
92655
|
+
if m.get('TunnelIndex') is not None:
|
|
92656
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
92657
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
92658
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
92659
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
92660
|
+
return self
|
|
92661
|
+
|
|
92662
|
+
|
|
91471
92663
|
class ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck(TeaModel):
|
|
91472
92664
|
def __init__(
|
|
91473
92665
|
self,
|
|
@@ -91624,6 +92816,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91624
92816
|
effect_immediately: bool = None,
|
|
91625
92817
|
enable_dpd: bool = None,
|
|
91626
92818
|
enable_nat_traversal: bool = None,
|
|
92819
|
+
enable_tunnels_bgp: bool = None,
|
|
91627
92820
|
ike_config: ModifyVpnAttachmentAttributeResponseBodyIkeConfig = None,
|
|
91628
92821
|
ipsec_config: ModifyVpnAttachmentAttributeResponseBodyIpsecConfig = None,
|
|
91629
92822
|
local_subnet: str = None,
|
|
@@ -91634,6 +92827,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91634
92827
|
resource_group_id: str = None,
|
|
91635
92828
|
spec: str = None,
|
|
91636
92829
|
status: str = None,
|
|
92830
|
+
tunnel_options_specification: List[ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification] = None,
|
|
91637
92831
|
vco_health_check: ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck = None,
|
|
91638
92832
|
vpn_bgp_config: ModifyVpnAttachmentAttributeResponseBodyVpnBgpConfig = None,
|
|
91639
92833
|
vpn_connection_id: str = None,
|
|
@@ -91670,6 +92864,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91670
92864
|
# * **true**\
|
|
91671
92865
|
# * **false**\
|
|
91672
92866
|
self.enable_nat_traversal = enable_nat_traversal
|
|
92867
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
91673
92868
|
# The configuration of Phase 1 negotiations.
|
|
91674
92869
|
self.ike_config = ike_config
|
|
91675
92870
|
# The configuration of Phase 2 negotiations.
|
|
@@ -91702,6 +92897,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91702
92897
|
# * **ipsec_sa_not_established**: Phase 2 negotiations failed.
|
|
91703
92898
|
# * **ipsec_sa_established**: Phase 2 negotiations succeeded.
|
|
91704
92899
|
self.status = status
|
|
92900
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
91705
92901
|
# The health check configuration of the IPsec-VPN connection.
|
|
91706
92902
|
self.vco_health_check = vco_health_check
|
|
91707
92903
|
# The BGP configuration of the IPsec-VPN connection.
|
|
@@ -91716,6 +92912,10 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91716
92912
|
self.ike_config.validate()
|
|
91717
92913
|
if self.ipsec_config:
|
|
91718
92914
|
self.ipsec_config.validate()
|
|
92915
|
+
if self.tunnel_options_specification:
|
|
92916
|
+
for k in self.tunnel_options_specification:
|
|
92917
|
+
if k:
|
|
92918
|
+
k.validate()
|
|
91719
92919
|
if self.vco_health_check:
|
|
91720
92920
|
self.vco_health_check.validate()
|
|
91721
92921
|
if self.vpn_bgp_config:
|
|
@@ -91743,6 +92943,8 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91743
92943
|
result['EnableDpd'] = self.enable_dpd
|
|
91744
92944
|
if self.enable_nat_traversal is not None:
|
|
91745
92945
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92946
|
+
if self.enable_tunnels_bgp is not None:
|
|
92947
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
91746
92948
|
if self.ike_config is not None:
|
|
91747
92949
|
result['IkeConfig'] = self.ike_config.to_map()
|
|
91748
92950
|
if self.ipsec_config is not None:
|
|
@@ -91763,6 +92965,10 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91763
92965
|
result['Spec'] = self.spec
|
|
91764
92966
|
if self.status is not None:
|
|
91765
92967
|
result['Status'] = self.status
|
|
92968
|
+
result['TunnelOptionsSpecification'] = []
|
|
92969
|
+
if self.tunnel_options_specification is not None:
|
|
92970
|
+
for k in self.tunnel_options_specification:
|
|
92971
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
91766
92972
|
if self.vco_health_check is not None:
|
|
91767
92973
|
result['VcoHealthCheck'] = self.vco_health_check.to_map()
|
|
91768
92974
|
if self.vpn_bgp_config is not None:
|
|
@@ -91791,6 +92997,8 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91791
92997
|
self.enable_dpd = m.get('EnableDpd')
|
|
91792
92998
|
if m.get('EnableNatTraversal') is not None:
|
|
91793
92999
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
93000
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
93001
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
91794
93002
|
if m.get('IkeConfig') is not None:
|
|
91795
93003
|
temp_model = ModifyVpnAttachmentAttributeResponseBodyIkeConfig()
|
|
91796
93004
|
self.ike_config = temp_model.from_map(m['IkeConfig'])
|
|
@@ -91813,6 +93021,11 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91813
93021
|
self.spec = m.get('Spec')
|
|
91814
93022
|
if m.get('Status') is not None:
|
|
91815
93023
|
self.status = m.get('Status')
|
|
93024
|
+
self.tunnel_options_specification = []
|
|
93025
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
93026
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
93027
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification()
|
|
93028
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
91816
93029
|
if m.get('VcoHealthCheck') is not None:
|
|
91817
93030
|
temp_model = ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck()
|
|
91818
93031
|
self.vco_health_check = temp_model.from_map(m['VcoHealthCheck'])
|
|
@@ -91876,15 +93089,19 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelBgpConf
|
|
|
91876
93089
|
):
|
|
91877
93090
|
# The ASN of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
91878
93091
|
#
|
|
91879
|
-
# >
|
|
91880
|
-
#
|
|
91881
|
-
#
|
|
93092
|
+
# > You can specify this parameter only if **EnableTunnelsBgp** is set to **true**.
|
|
93093
|
+
#
|
|
93094
|
+
# * Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](https://help.aliyun.com/document_detail/2638220.html).
|
|
93095
|
+
#
|
|
93096
|
+
# * We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.
|
|
91882
93097
|
self.local_asn = local_asn
|
|
91883
|
-
# The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block
|
|
93098
|
+
# The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.
|
|
91884
93099
|
self.local_bgp_ip = local_bgp_ip
|
|
91885
|
-
# The BGP CIDR block of the tunnel.
|
|
93100
|
+
# The BGP CIDR block of the tunnel.
|
|
93101
|
+
#
|
|
93102
|
+
# The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.
|
|
91886
93103
|
#
|
|
91887
|
-
# > The BGP CIDR block of
|
|
93104
|
+
# > The BGP CIDR block of each tunnel must be unique on a VPN gateway.
|
|
91888
93105
|
self.tunnel_cidr = tunnel_cidr
|
|
91889
93106
|
|
|
91890
93107
|
def validate(self):
|
|
@@ -91936,33 +93153,33 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIkeConf
|
|
|
91936
93153
|
#
|
|
91937
93154
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.
|
|
91938
93155
|
self.ike_enc_alg = ike_enc_alg
|
|
91939
|
-
# The SA lifetime
|
|
93156
|
+
# The SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0** to **86400**.
|
|
91940
93157
|
self.ike_lifetime = ike_lifetime
|
|
91941
|
-
# The
|
|
93158
|
+
# The negotiation mode of IKE. Valid values:
|
|
91942
93159
|
#
|
|
91943
|
-
# * **main
|
|
91944
|
-
# * **aggressive
|
|
93160
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
93161
|
+
# * **aggressive:** This mode supports faster negotiations and a higher success rate.
|
|
91945
93162
|
self.ike_mode = ike_mode
|
|
91946
|
-
# The
|
|
93163
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
91947
93164
|
self.ike_pfs = ike_pfs
|
|
91948
93165
|
# The version of the IKE protocol. Valid values: **ikev1** and **ikev2**.
|
|
91949
93166
|
#
|
|
91950
|
-
# Compared with IKEv1, IKEv2 simplifies the
|
|
93167
|
+
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
91951
93168
|
self.ike_version = ike_version
|
|
91952
|
-
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length. The default
|
|
93169
|
+
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the tunnel.
|
|
91953
93170
|
#
|
|
91954
|
-
#
|
|
93171
|
+
# **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
91955
93172
|
self.local_id = local_id
|
|
91956
93173
|
# The pre-shared key, which is used for identity authentication between the tunnel and the tunnel peer.
|
|
91957
93174
|
#
|
|
91958
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
91959
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
93175
|
+
# * The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
93176
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
91960
93177
|
#
|
|
91961
|
-
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be
|
|
93178
|
+
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be built.
|
|
91962
93179
|
self.psk = psk
|
|
91963
|
-
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length. The default
|
|
93180
|
+
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway that is associated with the tunnel.
|
|
91964
93181
|
#
|
|
91965
|
-
#
|
|
93182
|
+
# **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
91966
93183
|
self.remote_id = remote_id
|
|
91967
93184
|
|
|
91968
93185
|
def validate(self):
|
|
@@ -92033,9 +93250,9 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecCo
|
|
|
92033
93250
|
#
|
|
92034
93251
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.
|
|
92035
93252
|
self.ipsec_enc_alg = ipsec_enc_alg
|
|
92036
|
-
# The SA lifetime
|
|
93253
|
+
# The SA lifetime as a result of Phase 2 negotiations. Unit: seconds Valid values: **0** to **86400**.
|
|
92037
93254
|
self.ipsec_lifetime = ipsec_lifetime
|
|
92038
|
-
# The
|
|
93255
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations.
|
|
92039
93256
|
#
|
|
92040
93257
|
# Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
|
|
92041
93258
|
self.ipsec_pfs = ipsec_pfs
|
|
@@ -92075,6 +93292,7 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecCo
|
|
|
92075
93292
|
class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
92076
93293
|
def __init__(
|
|
92077
93294
|
self,
|
|
93295
|
+
customer_gateway_id: str = None,
|
|
92078
93296
|
enable_dpd: bool = None,
|
|
92079
93297
|
enable_nat_traversal: bool = None,
|
|
92080
93298
|
remote_ca_certificate: str = None,
|
|
@@ -92084,15 +93302,17 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92084
93302
|
tunnel_ike_config: ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
92085
93303
|
tunnel_ipsec_config: ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
92086
93304
|
):
|
|
93305
|
+
# The ID of the customer gateway associated with the tunnel.
|
|
93306
|
+
self.customer_gateway_id = customer_gateway_id
|
|
92087
93307
|
# Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
|
|
92088
93308
|
#
|
|
92089
|
-
# * **true
|
|
92090
|
-
# * **false
|
|
93309
|
+
# * **true**: enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted. The security tunnel is also deleted.
|
|
93310
|
+
# * **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
|
|
92091
93311
|
self.enable_dpd = enable_dpd
|
|
92092
93312
|
# Specifies whether to enable NAT traversal for the tunnel. Valid values:
|
|
92093
93313
|
#
|
|
92094
|
-
# * **true
|
|
92095
|
-
# * **false
|
|
93314
|
+
# * **true**: enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.
|
|
93315
|
+
# * **false**: disables NAT traversal.
|
|
92096
93316
|
self.enable_nat_traversal = enable_nat_traversal
|
|
92097
93317
|
# If the VPN gateway uses an SM certificate, you can modify the CA certificate used by the IPsec peer.
|
|
92098
93318
|
#
|
|
@@ -92105,8 +93325,6 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92105
93325
|
self.role = role
|
|
92106
93326
|
# The Border Gateway Protocol (BGP) configurations of the tunnel.
|
|
92107
93327
|
self.tunnel_bgp_config = tunnel_bgp_config
|
|
92108
|
-
# **TunnelOptionsSpecification** parameters are supported by dual-tunnel IPsec-VPN gateways. You can modify both the active and standby tunnels of the IPsec-VPN connection.
|
|
92109
|
-
#
|
|
92110
93328
|
# The tunnel ID.
|
|
92111
93329
|
self.tunnel_id = tunnel_id
|
|
92112
93330
|
# The configurations of Phase 1 negotiations.
|
|
@@ -92128,6 +93346,8 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92128
93346
|
return _map
|
|
92129
93347
|
|
|
92130
93348
|
result = dict()
|
|
93349
|
+
if self.customer_gateway_id is not None:
|
|
93350
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
92131
93351
|
if self.enable_dpd is not None:
|
|
92132
93352
|
result['EnableDpd'] = self.enable_dpd
|
|
92133
93353
|
if self.enable_nat_traversal is not None:
|
|
@@ -92148,6 +93368,8 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92148
93368
|
|
|
92149
93369
|
def from_map(self, m: dict = None):
|
|
92150
93370
|
m = m or dict()
|
|
93371
|
+
if m.get('CustomerGatewayId') is not None:
|
|
93372
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
92151
93373
|
if m.get('EnableDpd') is not None:
|
|
92152
93374
|
self.enable_dpd = m.get('EnableDpd')
|
|
92153
93375
|
if m.get('EnableNatTraversal') is not None:
|
|
@@ -92200,27 +93422,27 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92200
93422
|
# * **true**\
|
|
92201
93423
|
# * **false**\
|
|
92202
93424
|
self.auto_config_route = auto_config_route
|
|
92203
|
-
# This parameter is supported
|
|
93425
|
+
# This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.
|
|
92204
93426
|
#
|
|
92205
|
-
#
|
|
93427
|
+
# BGP configuration:
|
|
92206
93428
|
#
|
|
92207
|
-
# * **BgpConfig.EnableBgp
|
|
93429
|
+
# * **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false**.
|
|
92208
93430
|
#
|
|
92209
93431
|
# * **BgpConfig.LocalAsn:** the autonomous system number (ASN) on the Alibaba Cloud side. Valid values: **1** to **4294967295**.
|
|
92210
93432
|
#
|
|
92211
|
-
# You can enter
|
|
93433
|
+
# You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.
|
|
92212
93434
|
#
|
|
92213
|
-
# For example, if you enter 123.456, the ASN is: 123 × 65536 + 456 = 8061384.
|
|
93435
|
+
# For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.
|
|
92214
93436
|
#
|
|
92215
|
-
# * **BgpConfig.TunnelCidr**:
|
|
93437
|
+
# * **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.
|
|
92216
93438
|
#
|
|
92217
|
-
# > The CIDR block of the IPsec tunnel
|
|
93439
|
+
# > The CIDR block of the IPsec tunnel for each IPsec-VPN connection on a VPN gateway must be unique.
|
|
92218
93440
|
#
|
|
92219
|
-
# * **LocalBgpIp**: the BGP
|
|
93441
|
+
# * **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.
|
|
92220
93442
|
#
|
|
92221
93443
|
# > - This parameter is required when the VPN gateway has dynamic BGP enabled.
|
|
92222
|
-
# > - Before you
|
|
92223
|
-
# > - We recommend that you use a private ASN to establish
|
|
93444
|
+
# > - Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](https://help.aliyun.com/document_detail/2638220.html).
|
|
93445
|
+
# > - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.
|
|
92224
93446
|
self.bgp_config = bgp_config
|
|
92225
93447
|
# The client token that is used to ensure the idempotence of the request.
|
|
92226
93448
|
#
|
|
@@ -92261,25 +93483,27 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92261
93483
|
# * **HealthCheckConfig.interval**: the interval between two consecutive health checks. Unit: seconds.
|
|
92262
93484
|
# * **HealthCheckConfig.retry**: the maximum number of health check retries.
|
|
92263
93485
|
self.health_check_config = health_check_config
|
|
92264
|
-
# This parameter is supported
|
|
93486
|
+
# This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.
|
|
92265
93487
|
#
|
|
92266
93488
|
# The configurations of Phase 1 negotiations:
|
|
92267
93489
|
#
|
|
92268
|
-
# * **IkeConfig.Psk**:
|
|
93490
|
+
# * **IkeConfig.Psk**: The pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
92269
93491
|
#
|
|
92270
|
-
# *
|
|
92271
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
93492
|
+
# * The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
93493
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
92272
93494
|
#
|
|
92273
|
-
#
|
|
93495
|
+
# **\
|
|
93496
|
+
#
|
|
93497
|
+
# **Description** The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
|
|
92274
93498
|
#
|
|
92275
93499
|
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**.
|
|
92276
93500
|
#
|
|
92277
|
-
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and
|
|
93501
|
+
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
92278
93502
|
#
|
|
92279
93503
|
# * **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**.
|
|
92280
93504
|
#
|
|
92281
|
-
# * **main
|
|
92282
|
-
# * **aggressive
|
|
93505
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
93506
|
+
# * **aggressive:** This mode supports faster negotiations and a higher success rate.
|
|
92283
93507
|
#
|
|
92284
93508
|
# * **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.
|
|
92285
93509
|
#
|
|
@@ -92289,13 +93513,13 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92289
93513
|
#
|
|
92290
93514
|
# Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.
|
|
92291
93515
|
#
|
|
92292
|
-
# * **IkeConfig.IkePfs**: the Diffie-Hellman
|
|
93516
|
+
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
92293
93517
|
#
|
|
92294
|
-
# * **IkeConfig.IkeLifetime**: the
|
|
93518
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0 to 86400**.
|
|
92295
93519
|
#
|
|
92296
|
-
# * **IkeConfig.LocalId**: the identifier of the VPN gateway. The identifier cannot exceed 100 characters in length. The default value is the IP address of the VPN gateway.
|
|
93520
|
+
# * **IkeConfig.LocalId**: the identifier of the VPN gateway. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the VPN gateway.
|
|
92297
93521
|
#
|
|
92298
|
-
# * **IkeConfig.RemoteId**: the identifier of the customer gateway. The identifier cannot exceed 100 characters in length. The default value is the IP address of the customer gateway.
|
|
93522
|
+
# * **IkeConfig.RemoteId**: the identifier of the customer gateway. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway.
|
|
92299
93523
|
self.ike_config = ike_config
|
|
92300
93524
|
# You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.
|
|
92301
93525
|
#
|
|
@@ -92353,7 +93577,7 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92353
93577
|
self.resource_owner_id = resource_owner_id
|
|
92354
93578
|
# The tunnel configurations.
|
|
92355
93579
|
#
|
|
92356
|
-
# You can specify
|
|
93580
|
+
# You can specify parameters in the **TunnelOptionsSpecification** array when you modify the configurations of an IPsec-VPN connection in dual-tunnel mode. You can modify the configurations of both the active and standby tunnels of the IPsec-VPN connection.
|
|
92357
93581
|
self.tunnel_options_specification = tunnel_options_specification
|
|
92358
93582
|
# The ID of the IPsec-VPN connection.
|
|
92359
93583
|
#
|