alibabacloud-vpc20160428 6.9.3__py3-none-any.whl → 6.9.5__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 +138 -42
- alibabacloud_vpc20160428/models.py +1625 -162
- {alibabacloud_vpc20160428-6.9.3.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/METADATA +4 -4
- alibabacloud_vpc20160428-6.9.5.dist-info/RECORD +8 -0
- alibabacloud_vpc20160428-6.9.3.dist-info/RECORD +0 -8
- {alibabacloud_vpc20160428-6.9.3.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/LICENSE +0 -0
- {alibabacloud_vpc20160428-6.9.3.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/WHEEL +0 -0
- {alibabacloud_vpc20160428-6.9.3.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/top_level.txt +0 -0
|
@@ -7289,17 +7289,15 @@ class CreateCommonBandwidthPackageRequest(TeaModel):
|
|
|
7289
7289
|
#
|
|
7290
7290
|
# You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.
|
|
7291
7291
|
#
|
|
7292
|
-
# >
|
|
7293
|
-
#
|
|
7294
|
-
# 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.
|
|
7292
|
+
# > 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.
|
|
7295
7293
|
self.client_token = client_token
|
|
7296
7294
|
# The description of the Internet Shared Bandwidth instance.
|
|
7297
7295
|
#
|
|
7298
|
-
# The description must be
|
|
7296
|
+
# The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.
|
|
7299
7297
|
self.description = description
|
|
7300
7298
|
# The line type. Valid values:
|
|
7301
7299
|
#
|
|
7302
|
-
# * **BGP** All regions support BGP (Multi-ISP).
|
|
7300
|
+
# * **BGP** (default) All regions support BGP (Multi-ISP).
|
|
7303
7301
|
# * **BGP_PRO** BGP (Multi-ISP) Pro lines are available in the China (Hong Kong), Singapore, Japan (Tokyo), Philippines (Manila), Malaysia (Kuala Lumpur), Indonesia (Jakarta), and Thailand (Bangkok) regions.
|
|
7304
7302
|
#
|
|
7305
7303
|
# If you are allowed to use single-ISP bandwidth, you can also use one of the following values:
|
|
@@ -7317,15 +7315,13 @@ class CreateCommonBandwidthPackageRequest(TeaModel):
|
|
|
7317
7315
|
self.internet_charge_type = internet_charge_type
|
|
7318
7316
|
# The name of the Internet Shared Bandwidth instance.
|
|
7319
7317
|
#
|
|
7320
|
-
# The name must be
|
|
7318
|
+
# The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.
|
|
7321
7319
|
self.name = name
|
|
7322
7320
|
self.owner_account = owner_account
|
|
7323
7321
|
self.owner_id = owner_id
|
|
7324
7322
|
# The percentage of the minimum bandwidth commitment. Set the parameter to **20**.
|
|
7325
7323
|
#
|
|
7326
|
-
# >
|
|
7327
|
-
#
|
|
7328
|
-
# This parameter is available only on the Alibaba Cloud China site.
|
|
7324
|
+
# > This parameter is available only on the Alibaba Cloud China site.
|
|
7329
7325
|
self.ratio = ratio
|
|
7330
7326
|
# The region ID of the Internet Shared Bandwidth instance.
|
|
7331
7327
|
#
|
|
@@ -9544,6 +9540,7 @@ class CreateFlowLogRequest(TeaModel):
|
|
|
9544
9540
|
aggregation_interval: int = None,
|
|
9545
9541
|
description: str = None,
|
|
9546
9542
|
flow_log_name: str = None,
|
|
9543
|
+
ip_version: str = None,
|
|
9547
9544
|
log_store_name: str = None,
|
|
9548
9545
|
owner_account: str = None,
|
|
9549
9546
|
owner_id: int = None,
|
|
@@ -9568,6 +9565,7 @@ class CreateFlowLogRequest(TeaModel):
|
|
|
9568
9565
|
#
|
|
9569
9566
|
# The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.
|
|
9570
9567
|
self.flow_log_name = flow_log_name
|
|
9568
|
+
self.ip_version = ip_version
|
|
9571
9569
|
# The name of the Logstore that stores the captured traffic data.
|
|
9572
9570
|
#
|
|
9573
9571
|
# * The name can contain only lowercase letters, digits, hyphens (-), and underscores (_).
|
|
@@ -9640,6 +9638,8 @@ class CreateFlowLogRequest(TeaModel):
|
|
|
9640
9638
|
result['Description'] = self.description
|
|
9641
9639
|
if self.flow_log_name is not None:
|
|
9642
9640
|
result['FlowLogName'] = self.flow_log_name
|
|
9641
|
+
if self.ip_version is not None:
|
|
9642
|
+
result['IpVersion'] = self.ip_version
|
|
9643
9643
|
if self.log_store_name is not None:
|
|
9644
9644
|
result['LogStoreName'] = self.log_store_name
|
|
9645
9645
|
if self.owner_account is not None:
|
|
@@ -9678,6 +9678,8 @@ class CreateFlowLogRequest(TeaModel):
|
|
|
9678
9678
|
self.description = m.get('Description')
|
|
9679
9679
|
if m.get('FlowLogName') is not None:
|
|
9680
9680
|
self.flow_log_name = m.get('FlowLogName')
|
|
9681
|
+
if m.get('IpVersion') is not None:
|
|
9682
|
+
self.ip_version = m.get('IpVersion')
|
|
9681
9683
|
if m.get('LogStoreName') is not None:
|
|
9682
9684
|
self.log_store_name = m.get('LogStoreName')
|
|
9683
9685
|
if m.get('OwnerAccount') is not None:
|
|
@@ -12711,15 +12713,60 @@ class CreateIpv6GatewayResponse(TeaModel):
|
|
|
12711
12713
|
return self
|
|
12712
12714
|
|
|
12713
12715
|
|
|
12716
|
+
class CreateNatGatewayRequestAccessMode(TeaModel):
|
|
12717
|
+
def __init__(
|
|
12718
|
+
self,
|
|
12719
|
+
mode_value: str = None,
|
|
12720
|
+
tunnel_type: str = None,
|
|
12721
|
+
):
|
|
12722
|
+
# Access mode. Valid values:
|
|
12723
|
+
#
|
|
12724
|
+
# - **route**: route mode
|
|
12725
|
+
#
|
|
12726
|
+
# - **tunnel**: tunnel mode
|
|
12727
|
+
#
|
|
12728
|
+
# > If this parameter is specified, you must set **PrivateLinkEnabled** to **true**.
|
|
12729
|
+
self.mode_value = mode_value
|
|
12730
|
+
# Tunnel mode type:
|
|
12731
|
+
#
|
|
12732
|
+
# - **geneve**: Geneve type
|
|
12733
|
+
#
|
|
12734
|
+
# > This value takes effect if the access mode is the tunnel mode.
|
|
12735
|
+
self.tunnel_type = tunnel_type
|
|
12736
|
+
|
|
12737
|
+
def validate(self):
|
|
12738
|
+
pass
|
|
12739
|
+
|
|
12740
|
+
def to_map(self):
|
|
12741
|
+
_map = super().to_map()
|
|
12742
|
+
if _map is not None:
|
|
12743
|
+
return _map
|
|
12744
|
+
|
|
12745
|
+
result = dict()
|
|
12746
|
+
if self.mode_value is not None:
|
|
12747
|
+
result['ModeValue'] = self.mode_value
|
|
12748
|
+
if self.tunnel_type is not None:
|
|
12749
|
+
result['TunnelType'] = self.tunnel_type
|
|
12750
|
+
return result
|
|
12751
|
+
|
|
12752
|
+
def from_map(self, m: dict = None):
|
|
12753
|
+
m = m or dict()
|
|
12754
|
+
if m.get('ModeValue') is not None:
|
|
12755
|
+
self.mode_value = m.get('ModeValue')
|
|
12756
|
+
if m.get('TunnelType') is not None:
|
|
12757
|
+
self.tunnel_type = m.get('TunnelType')
|
|
12758
|
+
return self
|
|
12759
|
+
|
|
12760
|
+
|
|
12714
12761
|
class CreateNatGatewayRequestTag(TeaModel):
|
|
12715
12762
|
def __init__(
|
|
12716
12763
|
self,
|
|
12717
12764
|
key: str = None,
|
|
12718
12765
|
value: str = None,
|
|
12719
12766
|
):
|
|
12720
|
-
# 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
|
|
12767
|
+
# 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.
|
|
12721
12768
|
self.key = key
|
|
12722
|
-
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag
|
|
12769
|
+
# 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.
|
|
12723
12770
|
self.value = value
|
|
12724
12771
|
|
|
12725
12772
|
def validate(self):
|
|
@@ -12749,6 +12796,7 @@ class CreateNatGatewayRequestTag(TeaModel):
|
|
|
12749
12796
|
class CreateNatGatewayRequest(TeaModel):
|
|
12750
12797
|
def __init__(
|
|
12751
12798
|
self,
|
|
12799
|
+
access_mode: CreateNatGatewayRequestAccessMode = None,
|
|
12752
12800
|
auto_pay: bool = None,
|
|
12753
12801
|
client_token: str = None,
|
|
12754
12802
|
description: str = None,
|
|
@@ -12763,6 +12811,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12763
12811
|
owner_account: str = None,
|
|
12764
12812
|
owner_id: int = None,
|
|
12765
12813
|
pricing_cycle: str = None,
|
|
12814
|
+
private_link_enabled: bool = None,
|
|
12766
12815
|
region_id: str = None,
|
|
12767
12816
|
resource_owner_account: str = None,
|
|
12768
12817
|
resource_owner_id: int = None,
|
|
@@ -12772,6 +12821,8 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12772
12821
|
v_switch_id: str = None,
|
|
12773
12822
|
vpc_id: str = None,
|
|
12774
12823
|
):
|
|
12824
|
+
# The access mode for reverse access to the VPC NAT gateway.
|
|
12825
|
+
self.access_mode = access_mode
|
|
12775
12826
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12776
12827
|
self.auto_pay = auto_pay
|
|
12777
12828
|
# The client token that is used to ensure the idempotence of the request.
|
|
@@ -12788,13 +12839,283 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12788
12839
|
self.duration = duration
|
|
12789
12840
|
# The mode in which the EIP is associated with the NAT gateway. Valid values:
|
|
12790
12841
|
#
|
|
12791
|
-
#
|
|
12842
|
+
# - **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.
|
|
12792
12843
|
#
|
|
12793
|
-
#
|
|
12844
|
+
# - **NAT**: NAT mode, which is compatible with IPv4 addresses.
|
|
12794
12845
|
#
|
|
12795
|
-
#
|
|
12846
|
+
# > 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.
|
|
12847
|
+
self.eip_bind_mode = eip_bind_mode
|
|
12848
|
+
# Specifies whether to enable ICMP retrieval. Valid values:
|
|
12849
|
+
#
|
|
12850
|
+
# * **true** (default)
|
|
12851
|
+
# * **false**\
|
|
12852
|
+
self.icmp_reply_enabled = icmp_reply_enabled
|
|
12853
|
+
# The billing method of the NAT gateway.
|
|
12854
|
+
#
|
|
12855
|
+
# Set the value to **PostPaid** (pay-as-you-go), which is the default value.
|
|
12856
|
+
#
|
|
12857
|
+
# For more information, see [Internet NAT gateway billing](https://help.aliyun.com/document_detail/48126.html) and [VPC NAT gateway billing](https://help.aliyun.com/document_detail/270913.html).
|
|
12858
|
+
self.instance_charge_type = instance_charge_type
|
|
12859
|
+
# The metering method of the NAT gateway. Set the value to **PayByLcu**, which specifies the pay-by-CU metering method.
|
|
12860
|
+
self.internet_charge_type = internet_charge_type
|
|
12861
|
+
# The name of the NAT gateway.
|
|
12862
|
+
#
|
|
12863
|
+
# 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.
|
|
12864
|
+
#
|
|
12865
|
+
# If this parameter is not set, the system assigns a default name to the NAT gateway.
|
|
12866
|
+
self.name = name
|
|
12867
|
+
# The type of NAT gateway. Set the value to **Enhanced**, which specifies enhanced NAT gateway.
|
|
12868
|
+
self.nat_type = nat_type
|
|
12869
|
+
# The network type of the NAT gateway. Valid values:
|
|
12870
|
+
#
|
|
12871
|
+
# * **internet**: Internet
|
|
12872
|
+
# * **intranet**: VPC
|
|
12873
|
+
self.network_type = network_type
|
|
12874
|
+
self.owner_account = owner_account
|
|
12875
|
+
self.owner_id = owner_id
|
|
12876
|
+
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12877
|
+
self.pricing_cycle = pricing_cycle
|
|
12878
|
+
# PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.
|
|
12879
|
+
self.private_link_enabled = private_link_enabled
|
|
12880
|
+
# The region ID of the NAT gateway.
|
|
12881
|
+
#
|
|
12882
|
+
# You can call the [DescribeRegions](https://help.aliyun.com/document_detail/36063.html) operation to obtain the region ID.
|
|
12883
|
+
#
|
|
12884
|
+
# This parameter is required.
|
|
12885
|
+
self.region_id = region_id
|
|
12886
|
+
self.resource_owner_account = resource_owner_account
|
|
12887
|
+
self.resource_owner_id = resource_owner_id
|
|
12888
|
+
# Specifies whether to enable the firewall feature. Valid values:
|
|
12889
|
+
#
|
|
12890
|
+
# * **false** (default)>Notice: This parameter is deprecated.
|
|
12891
|
+
self.security_protection_enabled = security_protection_enabled
|
|
12892
|
+
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12893
|
+
self.spec = spec
|
|
12894
|
+
# The tags.
|
|
12895
|
+
self.tag = tag
|
|
12896
|
+
# The ID of the vSwitch to which the NAT gateway is attached.
|
|
12897
|
+
#
|
|
12898
|
+
# When you create a NAT gateway, you must specify a vSwitch for the NAT gateway. Then, the system assigns an idle private IP address from the vSwitch to the NAT gateway.
|
|
12899
|
+
#
|
|
12900
|
+
# * To attach the NAT gateway to an existing vSwitch, make sure that the zone to which the vSwitch belongs supports NAT gateways. In addition, the vSwitch must have idle IP addresses.
|
|
12901
|
+
# * If no vSwitch exists in the VPC, create a vSwitch in a zone that supports NAT gateways. Then, specify the vSwitch for the NAT gateway.
|
|
12902
|
+
#
|
|
12903
|
+
# > You can call the [ListEnhanhcedNatGatewayAvailableZones](https://help.aliyun.com/document_detail/182292.html) operation to query zones that support NAT gateways. You can call the [DescribeVSwitches](https://help.aliyun.com/document_detail/35748.html) operation to query idle IP addresses in a vSwitch.
|
|
12904
|
+
self.v_switch_id = v_switch_id
|
|
12905
|
+
# The ID of the VPC where you want to create the NAT gateway.
|
|
12906
|
+
#
|
|
12907
|
+
# This parameter is required.
|
|
12908
|
+
self.vpc_id = vpc_id
|
|
12909
|
+
|
|
12910
|
+
def validate(self):
|
|
12911
|
+
if self.access_mode:
|
|
12912
|
+
self.access_mode.validate()
|
|
12913
|
+
if self.tag:
|
|
12914
|
+
for k in self.tag:
|
|
12915
|
+
if k:
|
|
12916
|
+
k.validate()
|
|
12917
|
+
|
|
12918
|
+
def to_map(self):
|
|
12919
|
+
_map = super().to_map()
|
|
12920
|
+
if _map is not None:
|
|
12921
|
+
return _map
|
|
12922
|
+
|
|
12923
|
+
result = dict()
|
|
12924
|
+
if self.access_mode is not None:
|
|
12925
|
+
result['AccessMode'] = self.access_mode.to_map()
|
|
12926
|
+
if self.auto_pay is not None:
|
|
12927
|
+
result['AutoPay'] = self.auto_pay
|
|
12928
|
+
if self.client_token is not None:
|
|
12929
|
+
result['ClientToken'] = self.client_token
|
|
12930
|
+
if self.description is not None:
|
|
12931
|
+
result['Description'] = self.description
|
|
12932
|
+
if self.duration is not None:
|
|
12933
|
+
result['Duration'] = self.duration
|
|
12934
|
+
if self.eip_bind_mode is not None:
|
|
12935
|
+
result['EipBindMode'] = self.eip_bind_mode
|
|
12936
|
+
if self.icmp_reply_enabled is not None:
|
|
12937
|
+
result['IcmpReplyEnabled'] = self.icmp_reply_enabled
|
|
12938
|
+
if self.instance_charge_type is not None:
|
|
12939
|
+
result['InstanceChargeType'] = self.instance_charge_type
|
|
12940
|
+
if self.internet_charge_type is not None:
|
|
12941
|
+
result['InternetChargeType'] = self.internet_charge_type
|
|
12942
|
+
if self.name is not None:
|
|
12943
|
+
result['Name'] = self.name
|
|
12944
|
+
if self.nat_type is not None:
|
|
12945
|
+
result['NatType'] = self.nat_type
|
|
12946
|
+
if self.network_type is not None:
|
|
12947
|
+
result['NetworkType'] = self.network_type
|
|
12948
|
+
if self.owner_account is not None:
|
|
12949
|
+
result['OwnerAccount'] = self.owner_account
|
|
12950
|
+
if self.owner_id is not None:
|
|
12951
|
+
result['OwnerId'] = self.owner_id
|
|
12952
|
+
if self.pricing_cycle is not None:
|
|
12953
|
+
result['PricingCycle'] = self.pricing_cycle
|
|
12954
|
+
if self.private_link_enabled is not None:
|
|
12955
|
+
result['PrivateLinkEnabled'] = self.private_link_enabled
|
|
12956
|
+
if self.region_id is not None:
|
|
12957
|
+
result['RegionId'] = self.region_id
|
|
12958
|
+
if self.resource_owner_account is not None:
|
|
12959
|
+
result['ResourceOwnerAccount'] = self.resource_owner_account
|
|
12960
|
+
if self.resource_owner_id is not None:
|
|
12961
|
+
result['ResourceOwnerId'] = self.resource_owner_id
|
|
12962
|
+
if self.security_protection_enabled is not None:
|
|
12963
|
+
result['SecurityProtectionEnabled'] = self.security_protection_enabled
|
|
12964
|
+
if self.spec is not None:
|
|
12965
|
+
result['Spec'] = self.spec
|
|
12966
|
+
result['Tag'] = []
|
|
12967
|
+
if self.tag is not None:
|
|
12968
|
+
for k in self.tag:
|
|
12969
|
+
result['Tag'].append(k.to_map() if k else None)
|
|
12970
|
+
if self.v_switch_id is not None:
|
|
12971
|
+
result['VSwitchId'] = self.v_switch_id
|
|
12972
|
+
if self.vpc_id is not None:
|
|
12973
|
+
result['VpcId'] = self.vpc_id
|
|
12974
|
+
return result
|
|
12975
|
+
|
|
12976
|
+
def from_map(self, m: dict = None):
|
|
12977
|
+
m = m or dict()
|
|
12978
|
+
if m.get('AccessMode') is not None:
|
|
12979
|
+
temp_model = CreateNatGatewayRequestAccessMode()
|
|
12980
|
+
self.access_mode = temp_model.from_map(m['AccessMode'])
|
|
12981
|
+
if m.get('AutoPay') is not None:
|
|
12982
|
+
self.auto_pay = m.get('AutoPay')
|
|
12983
|
+
if m.get('ClientToken') is not None:
|
|
12984
|
+
self.client_token = m.get('ClientToken')
|
|
12985
|
+
if m.get('Description') is not None:
|
|
12986
|
+
self.description = m.get('Description')
|
|
12987
|
+
if m.get('Duration') is not None:
|
|
12988
|
+
self.duration = m.get('Duration')
|
|
12989
|
+
if m.get('EipBindMode') is not None:
|
|
12990
|
+
self.eip_bind_mode = m.get('EipBindMode')
|
|
12991
|
+
if m.get('IcmpReplyEnabled') is not None:
|
|
12992
|
+
self.icmp_reply_enabled = m.get('IcmpReplyEnabled')
|
|
12993
|
+
if m.get('InstanceChargeType') is not None:
|
|
12994
|
+
self.instance_charge_type = m.get('InstanceChargeType')
|
|
12995
|
+
if m.get('InternetChargeType') is not None:
|
|
12996
|
+
self.internet_charge_type = m.get('InternetChargeType')
|
|
12997
|
+
if m.get('Name') is not None:
|
|
12998
|
+
self.name = m.get('Name')
|
|
12999
|
+
if m.get('NatType') is not None:
|
|
13000
|
+
self.nat_type = m.get('NatType')
|
|
13001
|
+
if m.get('NetworkType') is not None:
|
|
13002
|
+
self.network_type = m.get('NetworkType')
|
|
13003
|
+
if m.get('OwnerAccount') is not None:
|
|
13004
|
+
self.owner_account = m.get('OwnerAccount')
|
|
13005
|
+
if m.get('OwnerId') is not None:
|
|
13006
|
+
self.owner_id = m.get('OwnerId')
|
|
13007
|
+
if m.get('PricingCycle') is not None:
|
|
13008
|
+
self.pricing_cycle = m.get('PricingCycle')
|
|
13009
|
+
if m.get('PrivateLinkEnabled') is not None:
|
|
13010
|
+
self.private_link_enabled = m.get('PrivateLinkEnabled')
|
|
13011
|
+
if m.get('RegionId') is not None:
|
|
13012
|
+
self.region_id = m.get('RegionId')
|
|
13013
|
+
if m.get('ResourceOwnerAccount') is not None:
|
|
13014
|
+
self.resource_owner_account = m.get('ResourceOwnerAccount')
|
|
13015
|
+
if m.get('ResourceOwnerId') is not None:
|
|
13016
|
+
self.resource_owner_id = m.get('ResourceOwnerId')
|
|
13017
|
+
if m.get('SecurityProtectionEnabled') is not None:
|
|
13018
|
+
self.security_protection_enabled = m.get('SecurityProtectionEnabled')
|
|
13019
|
+
if m.get('Spec') is not None:
|
|
13020
|
+
self.spec = m.get('Spec')
|
|
13021
|
+
self.tag = []
|
|
13022
|
+
if m.get('Tag') is not None:
|
|
13023
|
+
for k in m.get('Tag'):
|
|
13024
|
+
temp_model = CreateNatGatewayRequestTag()
|
|
13025
|
+
self.tag.append(temp_model.from_map(k))
|
|
13026
|
+
if m.get('VSwitchId') is not None:
|
|
13027
|
+
self.v_switch_id = m.get('VSwitchId')
|
|
13028
|
+
if m.get('VpcId') is not None:
|
|
13029
|
+
self.vpc_id = m.get('VpcId')
|
|
13030
|
+
return self
|
|
13031
|
+
|
|
13032
|
+
|
|
13033
|
+
class CreateNatGatewayShrinkRequestTag(TeaModel):
|
|
13034
|
+
def __init__(
|
|
13035
|
+
self,
|
|
13036
|
+
key: str = None,
|
|
13037
|
+
value: str = None,
|
|
13038
|
+
):
|
|
13039
|
+
# 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.
|
|
13040
|
+
self.key = key
|
|
13041
|
+
# 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.
|
|
13042
|
+
self.value = value
|
|
13043
|
+
|
|
13044
|
+
def validate(self):
|
|
13045
|
+
pass
|
|
13046
|
+
|
|
13047
|
+
def to_map(self):
|
|
13048
|
+
_map = super().to_map()
|
|
13049
|
+
if _map is not None:
|
|
13050
|
+
return _map
|
|
13051
|
+
|
|
13052
|
+
result = dict()
|
|
13053
|
+
if self.key is not None:
|
|
13054
|
+
result['Key'] = self.key
|
|
13055
|
+
if self.value is not None:
|
|
13056
|
+
result['Value'] = self.value
|
|
13057
|
+
return result
|
|
13058
|
+
|
|
13059
|
+
def from_map(self, m: dict = None):
|
|
13060
|
+
m = m or dict()
|
|
13061
|
+
if m.get('Key') is not None:
|
|
13062
|
+
self.key = m.get('Key')
|
|
13063
|
+
if m.get('Value') is not None:
|
|
13064
|
+
self.value = m.get('Value')
|
|
13065
|
+
return self
|
|
13066
|
+
|
|
13067
|
+
|
|
13068
|
+
class CreateNatGatewayShrinkRequest(TeaModel):
|
|
13069
|
+
def __init__(
|
|
13070
|
+
self,
|
|
13071
|
+
access_mode_shrink: str = None,
|
|
13072
|
+
auto_pay: bool = None,
|
|
13073
|
+
client_token: str = None,
|
|
13074
|
+
description: str = None,
|
|
13075
|
+
duration: str = None,
|
|
13076
|
+
eip_bind_mode: str = None,
|
|
13077
|
+
icmp_reply_enabled: bool = None,
|
|
13078
|
+
instance_charge_type: str = None,
|
|
13079
|
+
internet_charge_type: str = None,
|
|
13080
|
+
name: str = None,
|
|
13081
|
+
nat_type: str = None,
|
|
13082
|
+
network_type: str = None,
|
|
13083
|
+
owner_account: str = None,
|
|
13084
|
+
owner_id: int = None,
|
|
13085
|
+
pricing_cycle: str = None,
|
|
13086
|
+
private_link_enabled: bool = None,
|
|
13087
|
+
region_id: str = None,
|
|
13088
|
+
resource_owner_account: str = None,
|
|
13089
|
+
resource_owner_id: int = None,
|
|
13090
|
+
security_protection_enabled: bool = None,
|
|
13091
|
+
spec: str = None,
|
|
13092
|
+
tag: List[CreateNatGatewayShrinkRequestTag] = None,
|
|
13093
|
+
v_switch_id: str = None,
|
|
13094
|
+
vpc_id: str = None,
|
|
13095
|
+
):
|
|
13096
|
+
# The access mode for reverse access to the VPC NAT gateway.
|
|
13097
|
+
self.access_mode_shrink = access_mode_shrink
|
|
13098
|
+
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
13099
|
+
self.auto_pay = auto_pay
|
|
13100
|
+
# The client token that is used to ensure the idempotence of the request.
|
|
13101
|
+
#
|
|
13102
|
+
# You can use the client to generate the token, but you must make sure that the token is unique among different requests.
|
|
13103
|
+
#
|
|
13104
|
+
# > 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.
|
|
13105
|
+
self.client_token = client_token
|
|
13106
|
+
# The description of the NAT gateway.
|
|
13107
|
+
#
|
|
13108
|
+
# You can leave this parameter empty or enter a description. If you enter a description, the description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.
|
|
13109
|
+
self.description = description
|
|
13110
|
+
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
13111
|
+
self.duration = duration
|
|
13112
|
+
# The mode in which the EIP is associated with the NAT gateway. Valid values:
|
|
12796
13113
|
#
|
|
12797
|
-
#
|
|
13114
|
+
# - **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.
|
|
13115
|
+
#
|
|
13116
|
+
# - **NAT**: NAT mode, which is compatible with IPv4 addresses.
|
|
13117
|
+
#
|
|
13118
|
+
# > 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.
|
|
12798
13119
|
self.eip_bind_mode = eip_bind_mode
|
|
12799
13120
|
# Specifies whether to enable ICMP retrieval. Valid values:
|
|
12800
13121
|
#
|
|
@@ -12811,7 +13132,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12811
13132
|
self.internet_charge_type = internet_charge_type
|
|
12812
13133
|
# The name of the NAT gateway.
|
|
12813
13134
|
#
|
|
12814
|
-
# The name must be 2 to 128 characters in length
|
|
13135
|
+
# 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.
|
|
12815
13136
|
#
|
|
12816
13137
|
# If this parameter is not set, the system assigns a default name to the NAT gateway.
|
|
12817
13138
|
self.name = name
|
|
@@ -12826,6 +13147,8 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12826
13147
|
self.owner_id = owner_id
|
|
12827
13148
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12828
13149
|
self.pricing_cycle = pricing_cycle
|
|
13150
|
+
# PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.
|
|
13151
|
+
self.private_link_enabled = private_link_enabled
|
|
12829
13152
|
# The region ID of the NAT gateway.
|
|
12830
13153
|
#
|
|
12831
13154
|
# You can call the [DescribeRegions](https://help.aliyun.com/document_detail/36063.html) operation to obtain the region ID.
|
|
@@ -12868,6 +13191,8 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12868
13191
|
return _map
|
|
12869
13192
|
|
|
12870
13193
|
result = dict()
|
|
13194
|
+
if self.access_mode_shrink is not None:
|
|
13195
|
+
result['AccessMode'] = self.access_mode_shrink
|
|
12871
13196
|
if self.auto_pay is not None:
|
|
12872
13197
|
result['AutoPay'] = self.auto_pay
|
|
12873
13198
|
if self.client_token is not None:
|
|
@@ -12896,6 +13221,8 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12896
13221
|
result['OwnerId'] = self.owner_id
|
|
12897
13222
|
if self.pricing_cycle is not None:
|
|
12898
13223
|
result['PricingCycle'] = self.pricing_cycle
|
|
13224
|
+
if self.private_link_enabled is not None:
|
|
13225
|
+
result['PrivateLinkEnabled'] = self.private_link_enabled
|
|
12899
13226
|
if self.region_id is not None:
|
|
12900
13227
|
result['RegionId'] = self.region_id
|
|
12901
13228
|
if self.resource_owner_account is not None:
|
|
@@ -12918,6 +13245,8 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12918
13245
|
|
|
12919
13246
|
def from_map(self, m: dict = None):
|
|
12920
13247
|
m = m or dict()
|
|
13248
|
+
if m.get('AccessMode') is not None:
|
|
13249
|
+
self.access_mode_shrink = m.get('AccessMode')
|
|
12921
13250
|
if m.get('AutoPay') is not None:
|
|
12922
13251
|
self.auto_pay = m.get('AutoPay')
|
|
12923
13252
|
if m.get('ClientToken') is not None:
|
|
@@ -12946,6 +13275,8 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12946
13275
|
self.owner_id = m.get('OwnerId')
|
|
12947
13276
|
if m.get('PricingCycle') is not None:
|
|
12948
13277
|
self.pricing_cycle = m.get('PricingCycle')
|
|
13278
|
+
if m.get('PrivateLinkEnabled') is not None:
|
|
13279
|
+
self.private_link_enabled = m.get('PrivateLinkEnabled')
|
|
12949
13280
|
if m.get('RegionId') is not None:
|
|
12950
13281
|
self.region_id = m.get('RegionId')
|
|
12951
13282
|
if m.get('ResourceOwnerAccount') is not None:
|
|
@@ -12959,7 +13290,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12959
13290
|
self.tag = []
|
|
12960
13291
|
if m.get('Tag') is not None:
|
|
12961
13292
|
for k in m.get('Tag'):
|
|
12962
|
-
temp_model =
|
|
13293
|
+
temp_model = CreateNatGatewayShrinkRequestTag()
|
|
12963
13294
|
self.tag.append(temp_model.from_map(k))
|
|
12964
13295
|
if m.get('VSwitchId') is not None:
|
|
12965
13296
|
self.v_switch_id = m.get('VSwitchId')
|
|
@@ -17022,18 +17353,25 @@ class CreateSslVpnServerRequest(TeaModel):
|
|
|
17022
17353
|
# * **true**\
|
|
17023
17354
|
# * **false** (default)
|
|
17024
17355
|
self.compress = compress
|
|
17025
|
-
# Specifies whether to enable two-factor authentication.
|
|
17356
|
+
# Specifies whether to enable two-factor authentication. To enable two-factor authentication, you need to specify `IDaaSInstanceId`, `IDaaSRegionId`, and `IDaaSApplicationId`. Valid values:
|
|
17026
17357
|
#
|
|
17027
|
-
# * **true
|
|
17028
|
-
# * **false** (default)
|
|
17358
|
+
# * **true**\
|
|
17359
|
+
# * **false** (default)
|
|
17360
|
+
#
|
|
17361
|
+
# >
|
|
17029
17362
|
#
|
|
17030
|
-
#
|
|
17031
|
-
#
|
|
17363
|
+
# * 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.
|
|
17364
|
+
#
|
|
17365
|
+
# * 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.
|
|
17032
17366
|
self.enable_multi_factor_auth = enable_multi_factor_auth
|
|
17367
|
+
# The ID of the IDaaS application.
|
|
17368
|
+
#
|
|
17369
|
+
# * If an IDaaS EIAM 2.0 instance is associated, you need to specify an IDaaS application ID.
|
|
17370
|
+
# * If an IDaaS EIAM 1.0 instance is associated, you do not need to specify an IDaaS application ID.
|
|
17033
17371
|
self.idaa_sapplication_id = idaa_sapplication_id
|
|
17034
|
-
# The
|
|
17372
|
+
# The ID of the IDaaS EIAM instance.
|
|
17035
17373
|
self.idaa_sinstance_id = idaa_sinstance_id
|
|
17036
|
-
# The ID of the
|
|
17374
|
+
# The region ID of the IDaaS EIAM instance.
|
|
17037
17375
|
self.idaa_sregion_id = idaa_sregion_id
|
|
17038
17376
|
# The local CIDR block.
|
|
17039
17377
|
#
|
|
@@ -21127,6 +21465,236 @@ class CreateVpnAttachmentRequestTags(TeaModel):
|
|
|
21127
21465
|
return self
|
|
21128
21466
|
|
|
21129
21467
|
|
|
21468
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
21469
|
+
def __init__(
|
|
21470
|
+
self,
|
|
21471
|
+
local_asn: int = None,
|
|
21472
|
+
local_bgp_ip: str = None,
|
|
21473
|
+
tunnel_cidr: str = None,
|
|
21474
|
+
):
|
|
21475
|
+
self.local_asn = local_asn
|
|
21476
|
+
self.local_bgp_ip = local_bgp_ip
|
|
21477
|
+
self.tunnel_cidr = tunnel_cidr
|
|
21478
|
+
|
|
21479
|
+
def validate(self):
|
|
21480
|
+
pass
|
|
21481
|
+
|
|
21482
|
+
def to_map(self):
|
|
21483
|
+
_map = super().to_map()
|
|
21484
|
+
if _map is not None:
|
|
21485
|
+
return _map
|
|
21486
|
+
|
|
21487
|
+
result = dict()
|
|
21488
|
+
if self.local_asn is not None:
|
|
21489
|
+
result['LocalAsn'] = self.local_asn
|
|
21490
|
+
if self.local_bgp_ip is not None:
|
|
21491
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
21492
|
+
if self.tunnel_cidr is not None:
|
|
21493
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
21494
|
+
return result
|
|
21495
|
+
|
|
21496
|
+
def from_map(self, m: dict = None):
|
|
21497
|
+
m = m or dict()
|
|
21498
|
+
if m.get('LocalAsn') is not None:
|
|
21499
|
+
self.local_asn = m.get('LocalAsn')
|
|
21500
|
+
if m.get('LocalBgpIp') is not None:
|
|
21501
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
21502
|
+
if m.get('TunnelCidr') is not None:
|
|
21503
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
21504
|
+
return self
|
|
21505
|
+
|
|
21506
|
+
|
|
21507
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
21508
|
+
def __init__(
|
|
21509
|
+
self,
|
|
21510
|
+
ike_auth_alg: str = None,
|
|
21511
|
+
ike_enc_alg: str = None,
|
|
21512
|
+
ike_lifetime: int = None,
|
|
21513
|
+
ike_mode: str = None,
|
|
21514
|
+
ike_pfs: str = None,
|
|
21515
|
+
ike_version: str = None,
|
|
21516
|
+
local_id: str = None,
|
|
21517
|
+
psk: str = None,
|
|
21518
|
+
remote_id: str = None,
|
|
21519
|
+
):
|
|
21520
|
+
self.ike_auth_alg = ike_auth_alg
|
|
21521
|
+
self.ike_enc_alg = ike_enc_alg
|
|
21522
|
+
self.ike_lifetime = ike_lifetime
|
|
21523
|
+
self.ike_mode = ike_mode
|
|
21524
|
+
self.ike_pfs = ike_pfs
|
|
21525
|
+
self.ike_version = ike_version
|
|
21526
|
+
self.local_id = local_id
|
|
21527
|
+
self.psk = psk
|
|
21528
|
+
self.remote_id = remote_id
|
|
21529
|
+
|
|
21530
|
+
def validate(self):
|
|
21531
|
+
pass
|
|
21532
|
+
|
|
21533
|
+
def to_map(self):
|
|
21534
|
+
_map = super().to_map()
|
|
21535
|
+
if _map is not None:
|
|
21536
|
+
return _map
|
|
21537
|
+
|
|
21538
|
+
result = dict()
|
|
21539
|
+
if self.ike_auth_alg is not None:
|
|
21540
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
21541
|
+
if self.ike_enc_alg is not None:
|
|
21542
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
21543
|
+
if self.ike_lifetime is not None:
|
|
21544
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
21545
|
+
if self.ike_mode is not None:
|
|
21546
|
+
result['IkeMode'] = self.ike_mode
|
|
21547
|
+
if self.ike_pfs is not None:
|
|
21548
|
+
result['IkePfs'] = self.ike_pfs
|
|
21549
|
+
if self.ike_version is not None:
|
|
21550
|
+
result['IkeVersion'] = self.ike_version
|
|
21551
|
+
if self.local_id is not None:
|
|
21552
|
+
result['LocalId'] = self.local_id
|
|
21553
|
+
if self.psk is not None:
|
|
21554
|
+
result['Psk'] = self.psk
|
|
21555
|
+
if self.remote_id is not None:
|
|
21556
|
+
result['RemoteId'] = self.remote_id
|
|
21557
|
+
return result
|
|
21558
|
+
|
|
21559
|
+
def from_map(self, m: dict = None):
|
|
21560
|
+
m = m or dict()
|
|
21561
|
+
if m.get('IkeAuthAlg') is not None:
|
|
21562
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
21563
|
+
if m.get('IkeEncAlg') is not None:
|
|
21564
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
21565
|
+
if m.get('IkeLifetime') is not None:
|
|
21566
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
21567
|
+
if m.get('IkeMode') is not None:
|
|
21568
|
+
self.ike_mode = m.get('IkeMode')
|
|
21569
|
+
if m.get('IkePfs') is not None:
|
|
21570
|
+
self.ike_pfs = m.get('IkePfs')
|
|
21571
|
+
if m.get('IkeVersion') is not None:
|
|
21572
|
+
self.ike_version = m.get('IkeVersion')
|
|
21573
|
+
if m.get('LocalId') is not None:
|
|
21574
|
+
self.local_id = m.get('LocalId')
|
|
21575
|
+
if m.get('Psk') is not None:
|
|
21576
|
+
self.psk = m.get('Psk')
|
|
21577
|
+
if m.get('RemoteId') is not None:
|
|
21578
|
+
self.remote_id = m.get('RemoteId')
|
|
21579
|
+
return self
|
|
21580
|
+
|
|
21581
|
+
|
|
21582
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
21583
|
+
def __init__(
|
|
21584
|
+
self,
|
|
21585
|
+
ipsec_auth_alg: str = None,
|
|
21586
|
+
ipsec_enc_alg: str = None,
|
|
21587
|
+
ipsec_lifetime: int = None,
|
|
21588
|
+
ipsec_pfs: str = None,
|
|
21589
|
+
):
|
|
21590
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
21591
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
21592
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
21593
|
+
self.ipsec_pfs = ipsec_pfs
|
|
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.ipsec_auth_alg is not None:
|
|
21605
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
21606
|
+
if self.ipsec_enc_alg is not None:
|
|
21607
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
21608
|
+
if self.ipsec_lifetime is not None:
|
|
21609
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
21610
|
+
if self.ipsec_pfs is not None:
|
|
21611
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
21612
|
+
return result
|
|
21613
|
+
|
|
21614
|
+
def from_map(self, m: dict = None):
|
|
21615
|
+
m = m or dict()
|
|
21616
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
21617
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
21618
|
+
if m.get('IpsecEncAlg') is not None:
|
|
21619
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
21620
|
+
if m.get('IpsecLifetime') is not None:
|
|
21621
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
21622
|
+
if m.get('IpsecPfs') is not None:
|
|
21623
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
21624
|
+
return self
|
|
21625
|
+
|
|
21626
|
+
|
|
21627
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecification(TeaModel):
|
|
21628
|
+
def __init__(
|
|
21629
|
+
self,
|
|
21630
|
+
customer_gateway_id: str = None,
|
|
21631
|
+
enable_dpd: bool = None,
|
|
21632
|
+
enable_nat_traversal: bool = None,
|
|
21633
|
+
tunnel_bgp_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
21634
|
+
tunnel_ike_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
21635
|
+
tunnel_index: int = None,
|
|
21636
|
+
tunnel_ipsec_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
21637
|
+
):
|
|
21638
|
+
self.customer_gateway_id = customer_gateway_id
|
|
21639
|
+
self.enable_dpd = enable_dpd
|
|
21640
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
21641
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
21642
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
21643
|
+
self.tunnel_index = tunnel_index
|
|
21644
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
21645
|
+
|
|
21646
|
+
def validate(self):
|
|
21647
|
+
if self.tunnel_bgp_config:
|
|
21648
|
+
self.tunnel_bgp_config.validate()
|
|
21649
|
+
if self.tunnel_ike_config:
|
|
21650
|
+
self.tunnel_ike_config.validate()
|
|
21651
|
+
if self.tunnel_ipsec_config:
|
|
21652
|
+
self.tunnel_ipsec_config.validate()
|
|
21653
|
+
|
|
21654
|
+
def to_map(self):
|
|
21655
|
+
_map = super().to_map()
|
|
21656
|
+
if _map is not None:
|
|
21657
|
+
return _map
|
|
21658
|
+
|
|
21659
|
+
result = dict()
|
|
21660
|
+
if self.customer_gateway_id is not None:
|
|
21661
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
21662
|
+
if self.enable_dpd is not None:
|
|
21663
|
+
result['EnableDpd'] = self.enable_dpd
|
|
21664
|
+
if self.enable_nat_traversal is not None:
|
|
21665
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
21666
|
+
if self.tunnel_bgp_config is not None:
|
|
21667
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
21668
|
+
if self.tunnel_ike_config is not None:
|
|
21669
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
21670
|
+
if self.tunnel_index is not None:
|
|
21671
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
21672
|
+
if self.tunnel_ipsec_config is not None:
|
|
21673
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
21674
|
+
return result
|
|
21675
|
+
|
|
21676
|
+
def from_map(self, m: dict = None):
|
|
21677
|
+
m = m or dict()
|
|
21678
|
+
if m.get('CustomerGatewayId') is not None:
|
|
21679
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
21680
|
+
if m.get('EnableDpd') is not None:
|
|
21681
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
21682
|
+
if m.get('EnableNatTraversal') is not None:
|
|
21683
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
21684
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
21685
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig()
|
|
21686
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
21687
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
21688
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig()
|
|
21689
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
21690
|
+
if m.get('TunnelIndex') is not None:
|
|
21691
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
21692
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
21693
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
21694
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
21695
|
+
return self
|
|
21696
|
+
|
|
21697
|
+
|
|
21130
21698
|
class CreateVpnAttachmentRequest(TeaModel):
|
|
21131
21699
|
def __init__(
|
|
21132
21700
|
self,
|
|
@@ -21137,6 +21705,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21137
21705
|
effect_immediately: bool = None,
|
|
21138
21706
|
enable_dpd: bool = None,
|
|
21139
21707
|
enable_nat_traversal: bool = None,
|
|
21708
|
+
enable_tunnels_bgp: bool = None,
|
|
21140
21709
|
health_check_config: str = None,
|
|
21141
21710
|
ike_config: str = None,
|
|
21142
21711
|
ipsec_config: str = None,
|
|
@@ -21151,6 +21720,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21151
21720
|
resource_owner_account: str = None,
|
|
21152
21721
|
resource_owner_id: int = None,
|
|
21153
21722
|
tags: List[CreateVpnAttachmentRequestTags] = None,
|
|
21723
|
+
tunnel_options_specification: List[CreateVpnAttachmentRequestTunnelOptionsSpecification] = None,
|
|
21154
21724
|
):
|
|
21155
21725
|
# Specifies whether to automatically configure routes. Valid values:
|
|
21156
21726
|
#
|
|
@@ -21180,9 +21750,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21180
21750
|
#
|
|
21181
21751
|
# > 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.
|
|
21182
21752
|
self.client_token = client_token
|
|
21183
|
-
# The
|
|
21184
|
-
#
|
|
21185
|
-
# This parameter is required.
|
|
21753
|
+
# The customer gateway ID.
|
|
21186
21754
|
self.customer_gateway_id = customer_gateway_id
|
|
21187
21755
|
# Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:
|
|
21188
21756
|
#
|
|
@@ -21199,6 +21767,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21199
21767
|
# * **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.
|
|
21200
21768
|
# * **false**\
|
|
21201
21769
|
self.enable_nat_traversal = enable_nat_traversal
|
|
21770
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
21202
21771
|
# The health check configuration:
|
|
21203
21772
|
#
|
|
21204
21773
|
# * **HealthCheckConfig.enable**: specifies whether to enable health checks. Valid values: **true** and **false**. Default value: false.
|
|
@@ -21218,14 +21787,14 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21218
21787
|
self.health_check_config = health_check_config
|
|
21219
21788
|
# The configurations of Phase 1 negotiations:
|
|
21220
21789
|
#
|
|
21221
|
-
# * **IkeConfig.Psk**:
|
|
21790
|
+
# * **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
21222
21791
|
#
|
|
21223
|
-
# *
|
|
21224
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
21792
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21793
|
+
# * 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.
|
|
21225
21794
|
#
|
|
21226
|
-
# > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the data center. Otherwise,
|
|
21795
|
+
# > 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.
|
|
21227
21796
|
#
|
|
21228
|
-
# * **IkeConfig.IkeVersion**: the IKE
|
|
21797
|
+
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21229
21798
|
#
|
|
21230
21799
|
# * **IkeConfig.IkeMode**: the negotiation mode. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21231
21800
|
#
|
|
@@ -21235,9 +21804,9 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21235
21804
|
#
|
|
21236
21805
|
# * **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**.
|
|
21237
21806
|
#
|
|
21238
|
-
# * **IkeConfig.IkeLifetime**: the SA lifetime
|
|
21807
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
|
|
21239
21808
|
#
|
|
21240
|
-
# * **IkeConfig.
|
|
21809
|
+
# * **IkeConfig.LocalIdIPsec**: the identifier on the Alibaba Cloud side. The identifier cannot exceed 100 characters in length. This parameter is left empty by default.
|
|
21241
21810
|
#
|
|
21242
21811
|
# * **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.
|
|
21243
21812
|
self.ike_config = ike_config
|
|
@@ -21301,12 +21870,17 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21301
21870
|
#
|
|
21302
21871
|
# Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.
|
|
21303
21872
|
self.tags = tags
|
|
21873
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
21304
21874
|
|
|
21305
21875
|
def validate(self):
|
|
21306
21876
|
if self.tags:
|
|
21307
21877
|
for k in self.tags:
|
|
21308
21878
|
if k:
|
|
21309
21879
|
k.validate()
|
|
21880
|
+
if self.tunnel_options_specification:
|
|
21881
|
+
for k in self.tunnel_options_specification:
|
|
21882
|
+
if k:
|
|
21883
|
+
k.validate()
|
|
21310
21884
|
|
|
21311
21885
|
def to_map(self):
|
|
21312
21886
|
_map = super().to_map()
|
|
@@ -21328,6 +21902,8 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21328
21902
|
result['EnableDpd'] = self.enable_dpd
|
|
21329
21903
|
if self.enable_nat_traversal is not None:
|
|
21330
21904
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
21905
|
+
if self.enable_tunnels_bgp is not None:
|
|
21906
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
21331
21907
|
if self.health_check_config is not None:
|
|
21332
21908
|
result['HealthCheckConfig'] = self.health_check_config
|
|
21333
21909
|
if self.ike_config is not None:
|
|
@@ -21358,6 +21934,10 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21358
21934
|
if self.tags is not None:
|
|
21359
21935
|
for k in self.tags:
|
|
21360
21936
|
result['Tags'].append(k.to_map() if k else None)
|
|
21937
|
+
result['TunnelOptionsSpecification'] = []
|
|
21938
|
+
if self.tunnel_options_specification is not None:
|
|
21939
|
+
for k in self.tunnel_options_specification:
|
|
21940
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
21361
21941
|
return result
|
|
21362
21942
|
|
|
21363
21943
|
def from_map(self, m: dict = None):
|
|
@@ -21376,6 +21956,8 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21376
21956
|
self.enable_dpd = m.get('EnableDpd')
|
|
21377
21957
|
if m.get('EnableNatTraversal') is not None:
|
|
21378
21958
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
21959
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
21960
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
21379
21961
|
if m.get('HealthCheckConfig') is not None:
|
|
21380
21962
|
self.health_check_config = m.get('HealthCheckConfig')
|
|
21381
21963
|
if m.get('IkeConfig') is not None:
|
|
@@ -21407,6 +21989,11 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21407
21989
|
for k in m.get('Tags'):
|
|
21408
21990
|
temp_model = CreateVpnAttachmentRequestTags()
|
|
21409
21991
|
self.tags.append(temp_model.from_map(k))
|
|
21992
|
+
self.tunnel_options_specification = []
|
|
21993
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
21994
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
21995
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecification()
|
|
21996
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
21410
21997
|
return self
|
|
21411
21998
|
|
|
21412
21999
|
|
|
@@ -21576,17 +22163,19 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaMod
|
|
|
21576
22163
|
local_bgp_ip: str = None,
|
|
21577
22164
|
tunnel_cidr: str = None,
|
|
21578
22165
|
):
|
|
21579
|
-
# The ASN on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
22166
|
+
# The autonomous system number (ASN) of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
21580
22167
|
#
|
|
21581
|
-
#
|
|
21582
|
-
#
|
|
21583
|
-
#
|
|
22168
|
+
#
|
|
22169
|
+
#
|
|
22170
|
+
# > - If you set **EnableTunnelsBgp** to **true**, you must set this parameter.
|
|
22171
|
+
# > - 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).
|
|
22172
|
+
# > - 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.
|
|
21584
22173
|
self.local_asn = local_asn
|
|
21585
|
-
# The BGP address on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block
|
|
22174
|
+
# 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.
|
|
21586
22175
|
self.local_bgp_ip = local_bgp_ip
|
|
21587
|
-
# The BGP CIDR block of the tunnel. The CIDR block must
|
|
22176
|
+
# 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.
|
|
21588
22177
|
#
|
|
21589
|
-
# > The BGP CIDR block of
|
|
22178
|
+
# > The BGP CIDR block of each tunnel must be unique on a VPN gateway.
|
|
21590
22179
|
self.tunnel_cidr = tunnel_cidr
|
|
21591
22180
|
|
|
21592
22181
|
def validate(self):
|
|
@@ -21638,36 +22227,36 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaMod
|
|
|
21638
22227
|
#
|
|
21639
22228
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
|
|
21640
22229
|
self.ike_enc_alg = ike_enc_alg
|
|
21641
|
-
# The SA lifetime
|
|
22230
|
+
# The SA lifetime as a result of Phase 1 negotiations. Unit: seconds.
|
|
21642
22231
|
#
|
|
21643
22232
|
# Valid values: **0** to **86400**. Default value: **86400**.
|
|
21644
22233
|
self.ike_lifetime = ike_lifetime
|
|
21645
22234
|
# The negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21646
22235
|
#
|
|
21647
|
-
# * **main
|
|
21648
|
-
# * **aggressive**: This mode
|
|
22236
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
22237
|
+
# * **aggressive**: This mode supports faster negotiations and a higher success rate.
|
|
21649
22238
|
self.ike_mode = ike_mode
|
|
21650
|
-
# The
|
|
22239
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.\\
|
|
21651
22240
|
# Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
21652
22241
|
self.ike_pfs = ike_pfs
|
|
21653
22242
|
# The version of the IKE protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21654
22243
|
#
|
|
21655
|
-
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and
|
|
22244
|
+
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
21656
22245
|
self.ike_version = ike_version
|
|
21657
|
-
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations.
|
|
22246
|
+
# 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.
|
|
21658
22247
|
#
|
|
21659
|
-
#
|
|
22248
|
+
# **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
21660
22249
|
self.local_id = local_id
|
|
21661
|
-
# The pre-shared key
|
|
22250
|
+
# The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.
|
|
21662
22251
|
#
|
|
21663
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21664
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
22252
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22253
|
+
# * 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.
|
|
21665
22254
|
#
|
|
21666
22255
|
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.
|
|
21667
22256
|
self.psk = psk
|
|
21668
|
-
# The identifier of the tunnel peer, which is used in Phase 1 negotiations.
|
|
22257
|
+
# 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.
|
|
21669
22258
|
#
|
|
21670
|
-
#
|
|
22259
|
+
# **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
21671
22260
|
self.remote_id = remote_id
|
|
21672
22261
|
|
|
21673
22262
|
def validate(self):
|
|
@@ -21738,11 +22327,11 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaM
|
|
|
21738
22327
|
#
|
|
21739
22328
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
|
|
21740
22329
|
self.ipsec_enc_alg = ipsec_enc_alg
|
|
21741
|
-
# The SA lifetime
|
|
22330
|
+
# The SA lifetime as a result of Phase 2 negotiations. Unit: seconds.
|
|
21742
22331
|
#
|
|
21743
22332
|
# Valid values: **0** to **86400**. Default value: **86400**.
|
|
21744
22333
|
self.ipsec_lifetime = ipsec_lifetime
|
|
21745
|
-
# The
|
|
22334
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: **group2**.
|
|
21746
22335
|
#
|
|
21747
22336
|
# Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
|
|
21748
22337
|
self.ipsec_pfs = ipsec_pfs
|
|
@@ -21791,33 +22380,33 @@ class CreateVpnConnectionRequestTunnelOptionsSpecification(TeaModel):
|
|
|
21791
22380
|
tunnel_ike_config: CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
21792
22381
|
tunnel_ipsec_config: CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
21793
22382
|
):
|
|
21794
|
-
# The ID of the customer gateway associated with the tunnel.
|
|
22383
|
+
# The ID of the customer gateway that is associated with the tunnel.
|
|
21795
22384
|
#
|
|
21796
|
-
# >
|
|
21797
|
-
#
|
|
21798
|
-
#
|
|
22385
|
+
# > - This parameter is required when you create an IPsec-VPN connection in dual-tunnel mode.
|
|
22386
|
+
# > - You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
|
|
22387
|
+
# > - 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.
|
|
21799
22388
|
self.customer_gateway_id = customer_gateway_id
|
|
21800
|
-
# Specifies whether to enable DPD for the tunnel. Valid values:
|
|
22389
|
+
# Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
|
|
21801
22390
|
#
|
|
21802
|
-
# * **true** (default) The initiator of the IPsec-VPN connection sends DPD packets to
|
|
21803
|
-
# * **false
|
|
22391
|
+
# * **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.
|
|
22392
|
+
# * **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
|
|
21804
22393
|
self.enable_dpd = enable_dpd
|
|
21805
22394
|
# Specifies whether to enable NAT traversal for the tunnel. Valid values:
|
|
21806
22395
|
#
|
|
21807
|
-
# * **true** (default) After NAT traversal is enabled, the
|
|
21808
|
-
# * **false
|
|
22396
|
+
# * **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.
|
|
22397
|
+
# * **false**: disables NAT traversal.
|
|
21809
22398
|
self.enable_nat_traversal = enable_nat_traversal
|
|
21810
|
-
#
|
|
22399
|
+
# If the VPN gateway uses an SM certificate, you need to configure the CA certificate used by the IPsec peer.
|
|
21811
22400
|
#
|
|
21812
|
-
# * If
|
|
21813
|
-
# * If
|
|
22401
|
+
# * If the VPN gateway uses an SM certificate, this parameter is required.
|
|
22402
|
+
# * If the VPN gateway does not use an SM certificate, leave this parameter empty.
|
|
21814
22403
|
self.remote_ca_certificate = remote_ca_certificate
|
|
21815
|
-
# The role of the tunnel. Valid values:
|
|
22404
|
+
# The role of the tunnel. Valid values: Valid values:
|
|
21816
22405
|
#
|
|
21817
|
-
# * **master**: The tunnel is
|
|
21818
|
-
# * **slave**: The tunnel is
|
|
22406
|
+
# * **master**: The tunnel is an active tunnel.
|
|
22407
|
+
# * **slave**: The tunnel is a standby tunnel.
|
|
21819
22408
|
self.role = role
|
|
21820
|
-
# The BGP configurations
|
|
22409
|
+
# The Border Gateway Protocol (BGP) configurations of the tunnel.
|
|
21821
22410
|
self.tunnel_bgp_config = tunnel_bgp_config
|
|
21822
22411
|
# The configurations of Phase 1 negotiations.
|
|
21823
22412
|
self.tunnel_ike_config = tunnel_ike_config
|
|
@@ -21976,26 +22565,28 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
21976
22565
|
# * **HealthCheckConfig.interval**: the time interval of health check retries. Unit: seconds. Default value: **3**.
|
|
21977
22566
|
# * **HealthCheckConfig.retry**: the maximum number of health check retries. Default value: **3**.
|
|
21978
22567
|
self.health_check_config = health_check_config
|
|
21979
|
-
# This parameter is
|
|
22568
|
+
# This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
|
|
21980
22569
|
#
|
|
21981
22570
|
# The configurations of Phase 1 negotiations:
|
|
21982
22571
|
#
|
|
21983
|
-
# * **IkeConfig.Psk**:
|
|
22572
|
+
# * **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
21984
22573
|
#
|
|
21985
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22574
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21986
22575
|
#
|
|
21987
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
22576
|
+
# * 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.
|
|
21988
22577
|
#
|
|
21989
|
-
#
|
|
22578
|
+
# **\
|
|
22579
|
+
#
|
|
22580
|
+
# **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.
|
|
21990
22581
|
#
|
|
21991
22582
|
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21992
22583
|
#
|
|
21993
|
-
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and
|
|
22584
|
+
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
21994
22585
|
#
|
|
21995
22586
|
# * **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21996
22587
|
#
|
|
21997
22588
|
# * **main:** This mode offers higher security during negotiations.
|
|
21998
|
-
# * **aggressive
|
|
22589
|
+
# * **aggressive**: This mode supports faster negotiations and a higher success rate.
|
|
21999
22590
|
#
|
|
22000
22591
|
# * **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.
|
|
22001
22592
|
#
|
|
@@ -22005,13 +22596,13 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22005
22596
|
#
|
|
22006
22597
|
# Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.
|
|
22007
22598
|
#
|
|
22008
|
-
# * **IkeConfig.IkePfs**: the Diffie-Hellman
|
|
22599
|
+
# * **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**.
|
|
22009
22600
|
#
|
|
22010
|
-
# * **IkeConfig.IkeLifetime**: the SA lifetime
|
|
22601
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
|
|
22011
22602
|
#
|
|
22012
|
-
# * **IkeConfig.LocalId**: the identifier of the VPN gateway.
|
|
22603
|
+
# * **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.
|
|
22013
22604
|
#
|
|
22014
|
-
# * **IkeConfig.RemoteId**: the identifier of the customer gateway.
|
|
22605
|
+
# * **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.
|
|
22015
22606
|
self.ike_config = ike_config
|
|
22016
22607
|
# This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.
|
|
22017
22608
|
#
|
|
@@ -22078,8 +22669,8 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22078
22669
|
self.tags = tags
|
|
22079
22670
|
# The tunnel configurations.
|
|
22080
22671
|
#
|
|
22081
|
-
# * You can specify
|
|
22082
|
-
# *
|
|
22672
|
+
# * You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
|
|
22673
|
+
# * 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.
|
|
22083
22674
|
self.tunnel_options_specification = tunnel_options_specification
|
|
22084
22675
|
# The ID of the VPN gateway.
|
|
22085
22676
|
#
|
|
@@ -39057,6 +39648,7 @@ class DescribeFlowLogsResponseBodyFlowLogsFlowLog(TeaModel):
|
|
|
39057
39648
|
flow_log_deliver_status: str = None,
|
|
39058
39649
|
flow_log_id: str = None,
|
|
39059
39650
|
flow_log_name: str = None,
|
|
39651
|
+
ip_version: str = None,
|
|
39060
39652
|
log_store_name: str = None,
|
|
39061
39653
|
project_name: str = None,
|
|
39062
39654
|
region_id: str = None,
|
|
@@ -39094,6 +39686,7 @@ class DescribeFlowLogsResponseBodyFlowLogsFlowLog(TeaModel):
|
|
|
39094
39686
|
self.flow_log_id = flow_log_id
|
|
39095
39687
|
# The name of the flow log.
|
|
39096
39688
|
self.flow_log_name = flow_log_name
|
|
39689
|
+
self.ip_version = ip_version
|
|
39097
39690
|
# The Logstore that stores the captured traffic data.
|
|
39098
39691
|
self.log_store_name = log_store_name
|
|
39099
39692
|
# The project that manages the captured traffic data.
|
|
@@ -39167,6 +39760,8 @@ class DescribeFlowLogsResponseBodyFlowLogsFlowLog(TeaModel):
|
|
|
39167
39760
|
result['FlowLogId'] = self.flow_log_id
|
|
39168
39761
|
if self.flow_log_name is not None:
|
|
39169
39762
|
result['FlowLogName'] = self.flow_log_name
|
|
39763
|
+
if self.ip_version is not None:
|
|
39764
|
+
result['IpVersion'] = self.ip_version
|
|
39170
39765
|
if self.log_store_name is not None:
|
|
39171
39766
|
result['LogStoreName'] = self.log_store_name
|
|
39172
39767
|
if self.project_name is not None:
|
|
@@ -39209,6 +39804,8 @@ class DescribeFlowLogsResponseBodyFlowLogsFlowLog(TeaModel):
|
|
|
39209
39804
|
self.flow_log_id = m.get('FlowLogId')
|
|
39210
39805
|
if m.get('FlowLogName') is not None:
|
|
39211
39806
|
self.flow_log_name = m.get('FlowLogName')
|
|
39807
|
+
if m.get('IpVersion') is not None:
|
|
39808
|
+
self.ip_version = m.get('IpVersion')
|
|
39212
39809
|
if m.get('LogStoreName') is not None:
|
|
39213
39810
|
self.log_store_name = m.get('LogStoreName')
|
|
39214
39811
|
if m.get('ProjectName') is not None:
|
|
@@ -44847,12 +45444,14 @@ class DescribeNatGatewayAssociateNetworkInterfacesResponseBodyAssociateNetworkIn
|
|
|
44847
45444
|
resource_id: str = None,
|
|
44848
45445
|
resource_owner_id: str = None,
|
|
44849
45446
|
resource_type: str = None,
|
|
45447
|
+
tunnel_index: str = None,
|
|
44850
45448
|
):
|
|
44851
45449
|
self.ipv_4sets = ipv_4sets
|
|
44852
45450
|
self.network_interface_id = network_interface_id
|
|
44853
45451
|
self.resource_id = resource_id
|
|
44854
45452
|
self.resource_owner_id = resource_owner_id
|
|
44855
45453
|
self.resource_type = resource_type
|
|
45454
|
+
self.tunnel_index = tunnel_index
|
|
44856
45455
|
|
|
44857
45456
|
def validate(self):
|
|
44858
45457
|
if self.ipv_4sets:
|
|
@@ -44874,6 +45473,8 @@ class DescribeNatGatewayAssociateNetworkInterfacesResponseBodyAssociateNetworkIn
|
|
|
44874
45473
|
result['ResourceOwnerId'] = self.resource_owner_id
|
|
44875
45474
|
if self.resource_type is not None:
|
|
44876
45475
|
result['ResourceType'] = self.resource_type
|
|
45476
|
+
if self.tunnel_index is not None:
|
|
45477
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
44877
45478
|
return result
|
|
44878
45479
|
|
|
44879
45480
|
def from_map(self, m: dict = None):
|
|
@@ -44889,6 +45490,8 @@ class DescribeNatGatewayAssociateNetworkInterfacesResponseBodyAssociateNetworkIn
|
|
|
44889
45490
|
self.resource_owner_id = m.get('ResourceOwnerId')
|
|
44890
45491
|
if m.get('ResourceType') is not None:
|
|
44891
45492
|
self.resource_type = m.get('ResourceType')
|
|
45493
|
+
if m.get('TunnelIndex') is not None:
|
|
45494
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
44892
45495
|
return self
|
|
44893
45496
|
|
|
44894
45497
|
|
|
@@ -45244,6 +45847,39 @@ class DescribeNatGatewaysRequest(TeaModel):
|
|
|
45244
45847
|
return self
|
|
45245
45848
|
|
|
45246
45849
|
|
|
45850
|
+
class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayAccessMode(TeaModel):
|
|
45851
|
+
def __init__(
|
|
45852
|
+
self,
|
|
45853
|
+
mode_value: str = None,
|
|
45854
|
+
tunnel_type: str = None,
|
|
45855
|
+
):
|
|
45856
|
+
self.mode_value = mode_value
|
|
45857
|
+
self.tunnel_type = tunnel_type
|
|
45858
|
+
|
|
45859
|
+
def validate(self):
|
|
45860
|
+
pass
|
|
45861
|
+
|
|
45862
|
+
def to_map(self):
|
|
45863
|
+
_map = super().to_map()
|
|
45864
|
+
if _map is not None:
|
|
45865
|
+
return _map
|
|
45866
|
+
|
|
45867
|
+
result = dict()
|
|
45868
|
+
if self.mode_value is not None:
|
|
45869
|
+
result['ModeValue'] = self.mode_value
|
|
45870
|
+
if self.tunnel_type is not None:
|
|
45871
|
+
result['TunnelType'] = self.tunnel_type
|
|
45872
|
+
return result
|
|
45873
|
+
|
|
45874
|
+
def from_map(self, m: dict = None):
|
|
45875
|
+
m = m or dict()
|
|
45876
|
+
if m.get('ModeValue') is not None:
|
|
45877
|
+
self.mode_value = m.get('ModeValue')
|
|
45878
|
+
if m.get('TunnelType') is not None:
|
|
45879
|
+
self.tunnel_type = m.get('TunnelType')
|
|
45880
|
+
return self
|
|
45881
|
+
|
|
45882
|
+
|
|
45247
45883
|
class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayForwardTableIds(TeaModel):
|
|
45248
45884
|
def __init__(
|
|
45249
45885
|
self,
|
|
@@ -45577,6 +46213,7 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayTags(TeaModel):
|
|
|
45577
46213
|
class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
|
|
45578
46214
|
def __init__(
|
|
45579
46215
|
self,
|
|
46216
|
+
access_mode: DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayAccessMode = None,
|
|
45580
46217
|
auto_pay: bool = None,
|
|
45581
46218
|
business_status: str = None,
|
|
45582
46219
|
creation_time: str = None,
|
|
@@ -45608,6 +46245,7 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
|
|
|
45608
46245
|
tags: DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayTags = None,
|
|
45609
46246
|
vpc_id: str = None,
|
|
45610
46247
|
):
|
|
46248
|
+
self.access_mode = access_mode
|
|
45611
46249
|
# Indicates whether automatic payment is enabled. Valid values:
|
|
45612
46250
|
#
|
|
45613
46251
|
# * **false**: no
|
|
@@ -45714,6 +46352,8 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
|
|
|
45714
46352
|
self.vpc_id = vpc_id
|
|
45715
46353
|
|
|
45716
46354
|
def validate(self):
|
|
46355
|
+
if self.access_mode:
|
|
46356
|
+
self.access_mode.validate()
|
|
45717
46357
|
if self.forward_table_ids:
|
|
45718
46358
|
self.forward_table_ids.validate()
|
|
45719
46359
|
if self.full_nat_table_ids:
|
|
@@ -45733,6 +46373,8 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
|
|
|
45733
46373
|
return _map
|
|
45734
46374
|
|
|
45735
46375
|
result = dict()
|
|
46376
|
+
if self.access_mode is not None:
|
|
46377
|
+
result['AccessMode'] = self.access_mode.to_map()
|
|
45736
46378
|
if self.auto_pay is not None:
|
|
45737
46379
|
result['AutoPay'] = self.auto_pay
|
|
45738
46380
|
if self.business_status is not None:
|
|
@@ -45797,6 +46439,9 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
|
|
|
45797
46439
|
|
|
45798
46440
|
def from_map(self, m: dict = None):
|
|
45799
46441
|
m = m or dict()
|
|
46442
|
+
if m.get('AccessMode') is not None:
|
|
46443
|
+
temp_model = DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayAccessMode()
|
|
46444
|
+
self.access_mode = temp_model.from_map(m['AccessMode'])
|
|
45800
46445
|
if m.get('AutoPay') is not None:
|
|
45801
46446
|
self.auto_pay = m.get('AutoPay')
|
|
45802
46447
|
if m.get('BusinessStatus') is not None:
|
|
@@ -56616,6 +57261,7 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56616
57261
|
community: str = None,
|
|
56617
57262
|
create_time: int = None,
|
|
56618
57263
|
next_hop: str = None,
|
|
57264
|
+
next_hop_tunnel_id_list: List[str] = None,
|
|
56619
57265
|
route_dest: str = None,
|
|
56620
57266
|
route_entry_type: str = None,
|
|
56621
57267
|
source: str = None,
|
|
@@ -56633,6 +57279,7 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56633
57279
|
self.create_time = create_time
|
|
56634
57280
|
# The next hop of the route.
|
|
56635
57281
|
self.next_hop = next_hop
|
|
57282
|
+
self.next_hop_tunnel_id_list = next_hop_tunnel_id_list
|
|
56636
57283
|
# The destination CIDR block of the route.
|
|
56637
57284
|
self.route_dest = route_dest
|
|
56638
57285
|
# The route type. Valid values:
|
|
@@ -56675,6 +57322,8 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56675
57322
|
result['CreateTime'] = self.create_time
|
|
56676
57323
|
if self.next_hop is not None:
|
|
56677
57324
|
result['NextHop'] = self.next_hop
|
|
57325
|
+
if self.next_hop_tunnel_id_list is not None:
|
|
57326
|
+
result['NextHopTunnelIdList'] = self.next_hop_tunnel_id_list
|
|
56678
57327
|
if self.route_dest is not None:
|
|
56679
57328
|
result['RouteDest'] = self.route_dest
|
|
56680
57329
|
if self.route_entry_type is not None:
|
|
@@ -56699,6 +57348,8 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56699
57348
|
self.create_time = m.get('CreateTime')
|
|
56700
57349
|
if m.get('NextHop') is not None:
|
|
56701
57350
|
self.next_hop = m.get('NextHop')
|
|
57351
|
+
if m.get('NextHopTunnelIdList') is not None:
|
|
57352
|
+
self.next_hop_tunnel_id_list = m.get('NextHopTunnelIdList')
|
|
56702
57353
|
if m.get('RouteDest') is not None:
|
|
56703
57354
|
self.route_dest = m.get('RouteDest')
|
|
56704
57355
|
if m.get('RouteEntryType') is not None:
|
|
@@ -56714,6 +57365,45 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56714
57365
|
return self
|
|
56715
57366
|
|
|
56716
57367
|
|
|
57368
|
+
class DescribeVcoRouteEntriesResponseBodyVpnRouteCounts(TeaModel):
|
|
57369
|
+
def __init__(
|
|
57370
|
+
self,
|
|
57371
|
+
route_count: int = None,
|
|
57372
|
+
route_entry_type: str = None,
|
|
57373
|
+
source: str = None,
|
|
57374
|
+
):
|
|
57375
|
+
self.route_count = route_count
|
|
57376
|
+
self.route_entry_type = route_entry_type
|
|
57377
|
+
self.source = source
|
|
57378
|
+
|
|
57379
|
+
def validate(self):
|
|
57380
|
+
pass
|
|
57381
|
+
|
|
57382
|
+
def to_map(self):
|
|
57383
|
+
_map = super().to_map()
|
|
57384
|
+
if _map is not None:
|
|
57385
|
+
return _map
|
|
57386
|
+
|
|
57387
|
+
result = dict()
|
|
57388
|
+
if self.route_count is not None:
|
|
57389
|
+
result['RouteCount'] = self.route_count
|
|
57390
|
+
if self.route_entry_type is not None:
|
|
57391
|
+
result['RouteEntryType'] = self.route_entry_type
|
|
57392
|
+
if self.source is not None:
|
|
57393
|
+
result['Source'] = self.source
|
|
57394
|
+
return result
|
|
57395
|
+
|
|
57396
|
+
def from_map(self, m: dict = None):
|
|
57397
|
+
m = m or dict()
|
|
57398
|
+
if m.get('RouteCount') is not None:
|
|
57399
|
+
self.route_count = m.get('RouteCount')
|
|
57400
|
+
if m.get('RouteEntryType') is not None:
|
|
57401
|
+
self.route_entry_type = m.get('RouteEntryType')
|
|
57402
|
+
if m.get('Source') is not None:
|
|
57403
|
+
self.source = m.get('Source')
|
|
57404
|
+
return self
|
|
57405
|
+
|
|
57406
|
+
|
|
56717
57407
|
class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
56718
57408
|
def __init__(
|
|
56719
57409
|
self,
|
|
@@ -56722,6 +57412,7 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
56722
57412
|
request_id: str = None,
|
|
56723
57413
|
total_count: int = None,
|
|
56724
57414
|
vco_route_entries: List[DescribeVcoRouteEntriesResponseBodyVcoRouteEntries] = None,
|
|
57415
|
+
vpn_route_counts: List[DescribeVcoRouteEntriesResponseBodyVpnRouteCounts] = None,
|
|
56725
57416
|
):
|
|
56726
57417
|
# The number of the returned page.
|
|
56727
57418
|
self.page_number = page_number
|
|
@@ -56733,12 +57424,17 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
56733
57424
|
self.total_count = total_count
|
|
56734
57425
|
# The list of routes.
|
|
56735
57426
|
self.vco_route_entries = vco_route_entries
|
|
57427
|
+
self.vpn_route_counts = vpn_route_counts
|
|
56736
57428
|
|
|
56737
57429
|
def validate(self):
|
|
56738
57430
|
if self.vco_route_entries:
|
|
56739
57431
|
for k in self.vco_route_entries:
|
|
56740
57432
|
if k:
|
|
56741
57433
|
k.validate()
|
|
57434
|
+
if self.vpn_route_counts:
|
|
57435
|
+
for k in self.vpn_route_counts:
|
|
57436
|
+
if k:
|
|
57437
|
+
k.validate()
|
|
56742
57438
|
|
|
56743
57439
|
def to_map(self):
|
|
56744
57440
|
_map = super().to_map()
|
|
@@ -56758,6 +57454,10 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
56758
57454
|
if self.vco_route_entries is not None:
|
|
56759
57455
|
for k in self.vco_route_entries:
|
|
56760
57456
|
result['VcoRouteEntries'].append(k.to_map() if k else None)
|
|
57457
|
+
result['VpnRouteCounts'] = []
|
|
57458
|
+
if self.vpn_route_counts is not None:
|
|
57459
|
+
for k in self.vpn_route_counts:
|
|
57460
|
+
result['VpnRouteCounts'].append(k.to_map() if k else None)
|
|
56761
57461
|
return result
|
|
56762
57462
|
|
|
56763
57463
|
def from_map(self, m: dict = None):
|
|
@@ -56775,6 +57475,11 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
56775
57475
|
for k in m.get('VcoRouteEntries'):
|
|
56776
57476
|
temp_model = DescribeVcoRouteEntriesResponseBodyVcoRouteEntries()
|
|
56777
57477
|
self.vco_route_entries.append(temp_model.from_map(k))
|
|
57478
|
+
self.vpn_route_counts = []
|
|
57479
|
+
if m.get('VpnRouteCounts') is not None:
|
|
57480
|
+
for k in m.get('VpnRouteCounts'):
|
|
57481
|
+
temp_model = DescribeVcoRouteEntriesResponseBodyVpnRouteCounts()
|
|
57482
|
+
self.vpn_route_counts.append(temp_model.from_map(k))
|
|
56778
57483
|
return self
|
|
56779
57484
|
|
|
56780
57485
|
|
|
@@ -60098,6 +60803,39 @@ class DescribeVpnAttachmentsRequest(TeaModel):
|
|
|
60098
60803
|
return self
|
|
60099
60804
|
|
|
60100
60805
|
|
|
60806
|
+
class DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags(TeaModel):
|
|
60807
|
+
def __init__(
|
|
60808
|
+
self,
|
|
60809
|
+
key: str = None,
|
|
60810
|
+
value: str = None,
|
|
60811
|
+
):
|
|
60812
|
+
self.key = key
|
|
60813
|
+
self.value = value
|
|
60814
|
+
|
|
60815
|
+
def validate(self):
|
|
60816
|
+
pass
|
|
60817
|
+
|
|
60818
|
+
def to_map(self):
|
|
60819
|
+
_map = super().to_map()
|
|
60820
|
+
if _map is not None:
|
|
60821
|
+
return _map
|
|
60822
|
+
|
|
60823
|
+
result = dict()
|
|
60824
|
+
if self.key is not None:
|
|
60825
|
+
result['Key'] = self.key
|
|
60826
|
+
if self.value is not None:
|
|
60827
|
+
result['Value'] = self.value
|
|
60828
|
+
return result
|
|
60829
|
+
|
|
60830
|
+
def from_map(self, m: dict = None):
|
|
60831
|
+
m = m or dict()
|
|
60832
|
+
if m.get('Key') is not None:
|
|
60833
|
+
self.key = m.get('Key')
|
|
60834
|
+
if m.get('Value') is not None:
|
|
60835
|
+
self.value = m.get('Value')
|
|
60836
|
+
return self
|
|
60837
|
+
|
|
60838
|
+
|
|
60101
60839
|
class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
60102
60840
|
def __init__(
|
|
60103
60841
|
self,
|
|
@@ -60106,6 +60844,8 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60106
60844
|
description: str = None,
|
|
60107
60845
|
instance_id: str = None,
|
|
60108
60846
|
name: str = None,
|
|
60847
|
+
tag: str = None,
|
|
60848
|
+
tags: List[DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags] = None,
|
|
60109
60849
|
transit_router_id: str = None,
|
|
60110
60850
|
transit_router_name: str = None,
|
|
60111
60851
|
):
|
|
@@ -60122,13 +60862,18 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60122
60862
|
self.instance_id = instance_id
|
|
60123
60863
|
# The name of the IPsec-VPN connection.
|
|
60124
60864
|
self.name = name
|
|
60865
|
+
self.tag = tag
|
|
60866
|
+
self.tags = tags
|
|
60125
60867
|
# The ID of the transit router with which the IPsec-VPN connection is associated.
|
|
60126
60868
|
self.transit_router_id = transit_router_id
|
|
60127
60869
|
# The name of the transit router.
|
|
60128
60870
|
self.transit_router_name = transit_router_name
|
|
60129
60871
|
|
|
60130
60872
|
def validate(self):
|
|
60131
|
-
|
|
60873
|
+
if self.tags:
|
|
60874
|
+
for k in self.tags:
|
|
60875
|
+
if k:
|
|
60876
|
+
k.validate()
|
|
60132
60877
|
|
|
60133
60878
|
def to_map(self):
|
|
60134
60879
|
_map = super().to_map()
|
|
@@ -60146,6 +60891,12 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60146
60891
|
result['InstanceId'] = self.instance_id
|
|
60147
60892
|
if self.name is not None:
|
|
60148
60893
|
result['Name'] = self.name
|
|
60894
|
+
if self.tag is not None:
|
|
60895
|
+
result['Tag'] = self.tag
|
|
60896
|
+
result['Tags'] = []
|
|
60897
|
+
if self.tags is not None:
|
|
60898
|
+
for k in self.tags:
|
|
60899
|
+
result['Tags'].append(k.to_map() if k else None)
|
|
60149
60900
|
if self.transit_router_id is not None:
|
|
60150
60901
|
result['TransitRouterId'] = self.transit_router_id
|
|
60151
60902
|
if self.transit_router_name is not None:
|
|
@@ -60164,6 +60915,13 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60164
60915
|
self.instance_id = m.get('InstanceId')
|
|
60165
60916
|
if m.get('Name') is not None:
|
|
60166
60917
|
self.name = m.get('Name')
|
|
60918
|
+
if m.get('Tag') is not None:
|
|
60919
|
+
self.tag = m.get('Tag')
|
|
60920
|
+
self.tags = []
|
|
60921
|
+
if m.get('Tags') is not None:
|
|
60922
|
+
for k in m.get('Tags'):
|
|
60923
|
+
temp_model = DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags()
|
|
60924
|
+
self.tags.append(temp_model.from_map(k))
|
|
60167
60925
|
if m.get('TransitRouterId') is not None:
|
|
60168
60926
|
self.transit_router_id = m.get('TransitRouterId')
|
|
60169
60927
|
if m.get('TransitRouterName') is not None:
|
|
@@ -60768,6 +61526,7 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
60768
61526
|
tunnel_bgp_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelBgpConfig = None,
|
|
60769
61527
|
tunnel_id: str = None,
|
|
60770
61528
|
tunnel_ike_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig = None,
|
|
61529
|
+
tunnel_index: int = None,
|
|
60771
61530
|
tunnel_ipsec_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig = None,
|
|
60772
61531
|
zone_no: str = None,
|
|
60773
61532
|
):
|
|
@@ -60813,6 +61572,7 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
60813
61572
|
self.tunnel_id = tunnel_id
|
|
60814
61573
|
# The configuration of Phase 1 negotiations.
|
|
60815
61574
|
self.tunnel_ike_config = tunnel_ike_config
|
|
61575
|
+
self.tunnel_index = tunnel_index
|
|
60816
61576
|
# The configurations of Phase 2 negotiations.
|
|
60817
61577
|
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
60818
61578
|
# The zone where the tunnel is deployed.
|
|
@@ -60856,6 +61616,8 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
60856
61616
|
result['TunnelId'] = self.tunnel_id
|
|
60857
61617
|
if self.tunnel_ike_config is not None:
|
|
60858
61618
|
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
61619
|
+
if self.tunnel_index is not None:
|
|
61620
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
60859
61621
|
if self.tunnel_ipsec_config is not None:
|
|
60860
61622
|
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
60861
61623
|
if self.zone_no is not None:
|
|
@@ -60888,6 +61650,8 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
60888
61650
|
if m.get('TunnelIkeConfig') is not None:
|
|
60889
61651
|
temp_model = DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig()
|
|
60890
61652
|
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
61653
|
+
if m.get('TunnelIndex') is not None:
|
|
61654
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
60891
61655
|
if m.get('TunnelIpsecConfig') is not None:
|
|
60892
61656
|
temp_model = DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig()
|
|
60893
61657
|
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
@@ -62283,6 +63047,7 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62283
63047
|
tunnel_bgp_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelBgpConfig = None,
|
|
62284
63048
|
tunnel_id: str = None,
|
|
62285
63049
|
tunnel_ike_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig = None,
|
|
63050
|
+
tunnel_index: int = None,
|
|
62286
63051
|
tunnel_ipsec_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig = None,
|
|
62287
63052
|
zone_no: str = None,
|
|
62288
63053
|
):
|
|
@@ -62328,6 +63093,7 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62328
63093
|
self.tunnel_id = tunnel_id
|
|
62329
63094
|
# The configuration of Phase 1 negotiations.
|
|
62330
63095
|
self.tunnel_ike_config = tunnel_ike_config
|
|
63096
|
+
self.tunnel_index = tunnel_index
|
|
62331
63097
|
# The configurations of Phase 2 negotiations.
|
|
62332
63098
|
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
62333
63099
|
# The zone of the tunnel.
|
|
@@ -62369,6 +63135,8 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62369
63135
|
result['TunnelId'] = self.tunnel_id
|
|
62370
63136
|
if self.tunnel_ike_config is not None:
|
|
62371
63137
|
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
63138
|
+
if self.tunnel_index is not None:
|
|
63139
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
62372
63140
|
if self.tunnel_ipsec_config is not None:
|
|
62373
63141
|
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
62374
63142
|
if self.zone_no is not None:
|
|
@@ -62401,6 +63169,8 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62401
63169
|
if m.get('TunnelIkeConfig') is not None:
|
|
62402
63170
|
temp_model = DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig()
|
|
62403
63171
|
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
63172
|
+
if m.get('TunnelIndex') is not None:
|
|
63173
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
62404
63174
|
if m.get('TunnelIpsecConfig') is not None:
|
|
62405
63175
|
temp_model = DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig()
|
|
62406
63176
|
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
@@ -63660,33 +64430,38 @@ class DescribeVpnGatewayResponseBody(TeaModel):
|
|
|
63660
64430
|
# * **updating**\
|
|
63661
64431
|
# * **deleting**\
|
|
63662
64432
|
self.status = status
|
|
63663
|
-
# The automatically generated tag of the
|
|
64433
|
+
# The tag that is automatically generated for the VPN gateway. The tag consists of the following parameters:
|
|
63664
64434
|
#
|
|
63665
64435
|
# * **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:
|
|
63666
64436
|
#
|
|
63667
64437
|
# * **true**\
|
|
63668
64438
|
# * **false**\
|
|
63669
64439
|
#
|
|
63670
|
-
# * **VisuallySsl**: indicates whether the VPN gateway allows you to view information
|
|
64440
|
+
# * **VisuallySsl**: indicates whether the VPN gateway allows you to view the connection information of SSL clients. Valid values:
|
|
63671
64441
|
#
|
|
63672
64442
|
# * **true**\
|
|
63673
64443
|
# * **false**\
|
|
63674
64444
|
#
|
|
63675
|
-
# * **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes.
|
|
64445
|
+
# * **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes. Valid values:
|
|
63676
64446
|
#
|
|
63677
64447
|
# * **true**\
|
|
63678
64448
|
# * **false**\
|
|
63679
64449
|
#
|
|
63680
|
-
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded.
|
|
64450
|
+
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:
|
|
63681
64451
|
#
|
|
63682
64452
|
# * **true**\
|
|
63683
64453
|
# * **false**\
|
|
63684
64454
|
#
|
|
63685
|
-
# * **description
|
|
64455
|
+
# * **description**: the description of the VPN gateway. This parameter is only for internal use.
|
|
64456
|
+
#
|
|
64457
|
+
# * **VpnVersion**: the version of the VPN gateway.
|
|
64458
|
+
#
|
|
64459
|
+
# * **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.
|
|
63686
64460
|
#
|
|
63687
|
-
#
|
|
64461
|
+
# * **true**\
|
|
64462
|
+
# * **false**\
|
|
63688
64463
|
self.tag = tag
|
|
63689
|
-
# The
|
|
64464
|
+
# The tags that are added to the VPN gateway.
|
|
63690
64465
|
self.tags = tags
|
|
63691
64466
|
# The ID of the vSwitch to which the VPN gateway belongs.
|
|
63692
64467
|
self.v_switch_id = v_switch_id
|
|
@@ -63694,9 +64469,7 @@ class DescribeVpnGatewayResponseBody(TeaModel):
|
|
|
63694
64469
|
self.vpc_id = vpc_id
|
|
63695
64470
|
# The ID of the VPN gateway.
|
|
63696
64471
|
self.vpn_gateway_id = vpn_gateway_id
|
|
63697
|
-
# The type of
|
|
63698
|
-
#
|
|
63699
|
-
# Only **Normal** may be returned, which indicates a standard VPN gateway.
|
|
64472
|
+
# The type of VPN gateway. Only **Normal** may be returned, which indicates a standard VPN gateway.
|
|
63700
64473
|
self.vpn_type = vpn_type
|
|
63701
64474
|
|
|
63702
64475
|
def validate(self):
|
|
@@ -64068,17 +64841,13 @@ class DescribeVpnGatewaysRequestTag(TeaModel):
|
|
|
64068
64841
|
key: str = None,
|
|
64069
64842
|
value: str = None,
|
|
64070
64843
|
):
|
|
64071
|
-
# The tag key.
|
|
64072
|
-
#
|
|
64073
|
-
# It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.
|
|
64844
|
+
# The tag key.
|
|
64074
64845
|
#
|
|
64075
|
-
# You can specify at most 20 tag keys
|
|
64846
|
+
# You can specify at most 20 tag keys at a time.
|
|
64076
64847
|
self.key = key
|
|
64077
64848
|
# The tag value.
|
|
64078
64849
|
#
|
|
64079
|
-
#
|
|
64080
|
-
#
|
|
64081
|
-
# Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
|
|
64850
|
+
# Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.
|
|
64082
64851
|
self.value = value
|
|
64083
64852
|
|
|
64084
64853
|
def validate(self):
|
|
@@ -64159,11 +64928,7 @@ class DescribeVpnGatewaysRequest(TeaModel):
|
|
|
64159
64928
|
# * **updating**\
|
|
64160
64929
|
# * **deleting**\
|
|
64161
64930
|
self.status = status
|
|
64162
|
-
# The
|
|
64163
|
-
#
|
|
64164
|
-
# 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://`.
|
|
64165
|
-
#
|
|
64166
|
-
# Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
|
|
64931
|
+
# The tags that are added to the VPN gateway.
|
|
64167
64932
|
self.tag = tag
|
|
64168
64933
|
# The ID of the virtual private cloud (VPC) to which the VPN gateway belongs.
|
|
64169
64934
|
self.vpc_id = vpc_id
|
|
@@ -64549,7 +65314,7 @@ class DescribeVpnGatewaysResponseBodyVpnGatewaysVpnGateway(TeaModel):
|
|
|
64549
65314
|
# * **updating**\
|
|
64550
65315
|
# * **deleting**\
|
|
64551
65316
|
self.status = status
|
|
64552
|
-
# The tag that is automatically generated for the VPN gateway.
|
|
65317
|
+
# The tag that is automatically generated for the VPN gateway.
|
|
64553
65318
|
#
|
|
64554
65319
|
# * **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:
|
|
64555
65320
|
#
|
|
@@ -64568,12 +65333,17 @@ class DescribeVpnGatewaysResponseBodyVpnGatewaysVpnGateway(TeaModel):
|
|
|
64568
65333
|
#
|
|
64569
65334
|
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:
|
|
64570
65335
|
#
|
|
64571
|
-
# * **true
|
|
65336
|
+
# * **true**: queries only SQL templates that need to be optimized.
|
|
64572
65337
|
# * **false**: does not query only SQL statements that need to be optimized.
|
|
64573
65338
|
#
|
|
64574
65339
|
# * **description**: the description of the VPN gateway. This parameter is only for internal use.
|
|
64575
65340
|
#
|
|
64576
65341
|
# * **VpnVersion**: the version of the VPN gateway.
|
|
65342
|
+
#
|
|
65343
|
+
# * **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.
|
|
65344
|
+
#
|
|
65345
|
+
# * **true**\
|
|
65346
|
+
# * **false**\
|
|
64577
65347
|
self.tag = tag
|
|
64578
65348
|
# The tags that are added to the VPN gateway.
|
|
64579
65349
|
self.tags = tags
|
|
@@ -64772,7 +65542,7 @@ class DescribeVpnGatewaysResponseBody(TeaModel):
|
|
|
64772
65542
|
self.request_id = request_id
|
|
64773
65543
|
# The number of entries returned.
|
|
64774
65544
|
self.total_count = total_count
|
|
64775
|
-
# The VPN gateways.
|
|
65545
|
+
# The information about the VPN gateways.
|
|
64776
65546
|
self.vpn_gateways = vpn_gateways
|
|
64777
65547
|
|
|
64778
65548
|
def validate(self):
|
|
@@ -65256,6 +66026,80 @@ class DescribeVpnRouteEntriesRequest(TeaModel):
|
|
|
65256
66026
|
return self
|
|
65257
66027
|
|
|
65258
66028
|
|
|
66029
|
+
class DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount(TeaModel):
|
|
66030
|
+
def __init__(
|
|
66031
|
+
self,
|
|
66032
|
+
route_count: int = None,
|
|
66033
|
+
route_entry_type: str = None,
|
|
66034
|
+
source: str = None,
|
|
66035
|
+
):
|
|
66036
|
+
self.route_count = route_count
|
|
66037
|
+
self.route_entry_type = route_entry_type
|
|
66038
|
+
self.source = source
|
|
66039
|
+
|
|
66040
|
+
def validate(self):
|
|
66041
|
+
pass
|
|
66042
|
+
|
|
66043
|
+
def to_map(self):
|
|
66044
|
+
_map = super().to_map()
|
|
66045
|
+
if _map is not None:
|
|
66046
|
+
return _map
|
|
66047
|
+
|
|
66048
|
+
result = dict()
|
|
66049
|
+
if self.route_count is not None:
|
|
66050
|
+
result['RouteCount'] = self.route_count
|
|
66051
|
+
if self.route_entry_type is not None:
|
|
66052
|
+
result['RouteEntryType'] = self.route_entry_type
|
|
66053
|
+
if self.source is not None:
|
|
66054
|
+
result['Source'] = self.source
|
|
66055
|
+
return result
|
|
66056
|
+
|
|
66057
|
+
def from_map(self, m: dict = None):
|
|
66058
|
+
m = m or dict()
|
|
66059
|
+
if m.get('RouteCount') is not None:
|
|
66060
|
+
self.route_count = m.get('RouteCount')
|
|
66061
|
+
if m.get('RouteEntryType') is not None:
|
|
66062
|
+
self.route_entry_type = m.get('RouteEntryType')
|
|
66063
|
+
if m.get('Source') is not None:
|
|
66064
|
+
self.source = m.get('Source')
|
|
66065
|
+
return self
|
|
66066
|
+
|
|
66067
|
+
|
|
66068
|
+
class DescribeVpnRouteEntriesResponseBodyVpnRouteCounts(TeaModel):
|
|
66069
|
+
def __init__(
|
|
66070
|
+
self,
|
|
66071
|
+
vpn_route_count: List[DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount] = None,
|
|
66072
|
+
):
|
|
66073
|
+
self.vpn_route_count = vpn_route_count
|
|
66074
|
+
|
|
66075
|
+
def validate(self):
|
|
66076
|
+
if self.vpn_route_count:
|
|
66077
|
+
for k in self.vpn_route_count:
|
|
66078
|
+
if k:
|
|
66079
|
+
k.validate()
|
|
66080
|
+
|
|
66081
|
+
def to_map(self):
|
|
66082
|
+
_map = super().to_map()
|
|
66083
|
+
if _map is not None:
|
|
66084
|
+
return _map
|
|
66085
|
+
|
|
66086
|
+
result = dict()
|
|
66087
|
+
result['VpnRouteCount'] = []
|
|
66088
|
+
if self.vpn_route_count is not None:
|
|
66089
|
+
for k in self.vpn_route_count:
|
|
66090
|
+
result['VpnRouteCount'].append(k.to_map() if k else None)
|
|
66091
|
+
return result
|
|
66092
|
+
|
|
66093
|
+
def from_map(self, m: dict = None):
|
|
66094
|
+
m = m or dict()
|
|
66095
|
+
self.vpn_route_count = []
|
|
66096
|
+
if m.get('VpnRouteCount') is not None:
|
|
66097
|
+
for k in m.get('VpnRouteCount'):
|
|
66098
|
+
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount()
|
|
66099
|
+
self.vpn_route_count.append(temp_model.from_map(k))
|
|
66100
|
+
return self
|
|
66101
|
+
|
|
66102
|
+
|
|
65259
66103
|
class DescribeVpnRouteEntriesResponseBodyVpnRouteEntriesVpnRouteEntry(TeaModel):
|
|
65260
66104
|
def __init__(
|
|
65261
66105
|
self,
|
|
@@ -65408,6 +66252,7 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65408
66252
|
page_size: int = None,
|
|
65409
66253
|
request_id: str = None,
|
|
65410
66254
|
total_count: int = None,
|
|
66255
|
+
vpn_route_counts: DescribeVpnRouteEntriesResponseBodyVpnRouteCounts = None,
|
|
65411
66256
|
vpn_route_entries: DescribeVpnRouteEntriesResponseBodyVpnRouteEntries = None,
|
|
65412
66257
|
):
|
|
65413
66258
|
# The page number of the returned page.
|
|
@@ -65418,10 +66263,13 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65418
66263
|
self.request_id = request_id
|
|
65419
66264
|
# The total number of entries returned.
|
|
65420
66265
|
self.total_count = total_count
|
|
66266
|
+
self.vpn_route_counts = vpn_route_counts
|
|
65421
66267
|
# The list of route entries.
|
|
65422
66268
|
self.vpn_route_entries = vpn_route_entries
|
|
65423
66269
|
|
|
65424
66270
|
def validate(self):
|
|
66271
|
+
if self.vpn_route_counts:
|
|
66272
|
+
self.vpn_route_counts.validate()
|
|
65425
66273
|
if self.vpn_route_entries:
|
|
65426
66274
|
self.vpn_route_entries.validate()
|
|
65427
66275
|
|
|
@@ -65439,6 +66287,8 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65439
66287
|
result['RequestId'] = self.request_id
|
|
65440
66288
|
if self.total_count is not None:
|
|
65441
66289
|
result['TotalCount'] = self.total_count
|
|
66290
|
+
if self.vpn_route_counts is not None:
|
|
66291
|
+
result['VpnRouteCounts'] = self.vpn_route_counts.to_map()
|
|
65442
66292
|
if self.vpn_route_entries is not None:
|
|
65443
66293
|
result['VpnRouteEntries'] = self.vpn_route_entries.to_map()
|
|
65444
66294
|
return result
|
|
@@ -65453,6 +66303,9 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65453
66303
|
self.request_id = m.get('RequestId')
|
|
65454
66304
|
if m.get('TotalCount') is not None:
|
|
65455
66305
|
self.total_count = m.get('TotalCount')
|
|
66306
|
+
if m.get('VpnRouteCounts') is not None:
|
|
66307
|
+
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteCounts()
|
|
66308
|
+
self.vpn_route_counts = temp_model.from_map(m['VpnRouteCounts'])
|
|
65456
66309
|
if m.get('VpnRouteEntries') is not None:
|
|
65457
66310
|
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteEntries()
|
|
65458
66311
|
self.vpn_route_entries = temp_model.from_map(m['VpnRouteEntries'])
|
|
@@ -67174,7 +68027,7 @@ class DissociateVpnGatewayWithCertificateRequest(TeaModel):
|
|
|
67174
68027
|
):
|
|
67175
68028
|
# The certificate ID.
|
|
67176
68029
|
#
|
|
67177
|
-
# >
|
|
68030
|
+
# > 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.
|
|
67178
68031
|
#
|
|
67179
68032
|
# This parameter is required.
|
|
67180
68033
|
self.certificate_id = certificate_id
|
|
@@ -69306,6 +70159,39 @@ class GetNatGatewayAttributeRequest(TeaModel):
|
|
|
69306
70159
|
return self
|
|
69307
70160
|
|
|
69308
70161
|
|
|
70162
|
+
class GetNatGatewayAttributeResponseBodyAccessMode(TeaModel):
|
|
70163
|
+
def __init__(
|
|
70164
|
+
self,
|
|
70165
|
+
mode_value: str = None,
|
|
70166
|
+
tunnel_type: str = None,
|
|
70167
|
+
):
|
|
70168
|
+
self.mode_value = mode_value
|
|
70169
|
+
self.tunnel_type = tunnel_type
|
|
70170
|
+
|
|
70171
|
+
def validate(self):
|
|
70172
|
+
pass
|
|
70173
|
+
|
|
70174
|
+
def to_map(self):
|
|
70175
|
+
_map = super().to_map()
|
|
70176
|
+
if _map is not None:
|
|
70177
|
+
return _map
|
|
70178
|
+
|
|
70179
|
+
result = dict()
|
|
70180
|
+
if self.mode_value is not None:
|
|
70181
|
+
result['ModeValue'] = self.mode_value
|
|
70182
|
+
if self.tunnel_type is not None:
|
|
70183
|
+
result['TunnelType'] = self.tunnel_type
|
|
70184
|
+
return result
|
|
70185
|
+
|
|
70186
|
+
def from_map(self, m: dict = None):
|
|
70187
|
+
m = m or dict()
|
|
70188
|
+
if m.get('ModeValue') is not None:
|
|
70189
|
+
self.mode_value = m.get('ModeValue')
|
|
70190
|
+
if m.get('TunnelType') is not None:
|
|
70191
|
+
self.tunnel_type = m.get('TunnelType')
|
|
70192
|
+
return self
|
|
70193
|
+
|
|
70194
|
+
|
|
69309
70195
|
class GetNatGatewayAttributeResponseBodyBillingConfig(TeaModel):
|
|
69310
70196
|
def __init__(
|
|
69311
70197
|
self,
|
|
@@ -69657,6 +70543,7 @@ class GetNatGatewayAttributeResponseBodySnatTable(TeaModel):
|
|
|
69657
70543
|
class GetNatGatewayAttributeResponseBody(TeaModel):
|
|
69658
70544
|
def __init__(
|
|
69659
70545
|
self,
|
|
70546
|
+
access_mode: GetNatGatewayAttributeResponseBodyAccessMode = None,
|
|
69660
70547
|
billing_config: GetNatGatewayAttributeResponseBodyBillingConfig = None,
|
|
69661
70548
|
business_status: str = None,
|
|
69662
70549
|
creation_time: str = None,
|
|
@@ -69683,6 +70570,7 @@ class GetNatGatewayAttributeResponseBody(TeaModel):
|
|
|
69683
70570
|
status: str = None,
|
|
69684
70571
|
vpc_id: str = None,
|
|
69685
70572
|
):
|
|
70573
|
+
self.access_mode = access_mode
|
|
69686
70574
|
# The billing information.
|
|
69687
70575
|
self.billing_config = billing_config
|
|
69688
70576
|
# The service status of the NAT gateway. Valid values:
|
|
@@ -69754,6 +70642,8 @@ class GetNatGatewayAttributeResponseBody(TeaModel):
|
|
|
69754
70642
|
self.vpc_id = vpc_id
|
|
69755
70643
|
|
|
69756
70644
|
def validate(self):
|
|
70645
|
+
if self.access_mode:
|
|
70646
|
+
self.access_mode.validate()
|
|
69757
70647
|
if self.billing_config:
|
|
69758
70648
|
self.billing_config.validate()
|
|
69759
70649
|
if self.deletion_protection_info:
|
|
@@ -69779,6 +70669,8 @@ class GetNatGatewayAttributeResponseBody(TeaModel):
|
|
|
69779
70669
|
return _map
|
|
69780
70670
|
|
|
69781
70671
|
result = dict()
|
|
70672
|
+
if self.access_mode is not None:
|
|
70673
|
+
result['AccessMode'] = self.access_mode.to_map()
|
|
69782
70674
|
if self.billing_config is not None:
|
|
69783
70675
|
result['BillingConfig'] = self.billing_config.to_map()
|
|
69784
70676
|
if self.business_status is not None:
|
|
@@ -69835,6 +70727,9 @@ class GetNatGatewayAttributeResponseBody(TeaModel):
|
|
|
69835
70727
|
|
|
69836
70728
|
def from_map(self, m: dict = None):
|
|
69837
70729
|
m = m or dict()
|
|
70730
|
+
if m.get('AccessMode') is not None:
|
|
70731
|
+
temp_model = GetNatGatewayAttributeResponseBodyAccessMode()
|
|
70732
|
+
self.access_mode = temp_model.from_map(m['AccessMode'])
|
|
69838
70733
|
if m.get('BillingConfig') is not None:
|
|
69839
70734
|
temp_model = GetNatGatewayAttributeResponseBodyBillingConfig()
|
|
69840
70735
|
self.billing_config = temp_model.from_map(m['BillingConfig'])
|
|
@@ -83303,6 +84198,7 @@ class ModifyFlowLogAttributeRequest(TeaModel):
|
|
|
83303
84198
|
description: str = None,
|
|
83304
84199
|
flow_log_id: str = None,
|
|
83305
84200
|
flow_log_name: str = None,
|
|
84201
|
+
ip_version: str = None,
|
|
83306
84202
|
owner_account: str = None,
|
|
83307
84203
|
owner_id: int = None,
|
|
83308
84204
|
region_id: str = None,
|
|
@@ -83323,6 +84219,7 @@ class ModifyFlowLogAttributeRequest(TeaModel):
|
|
|
83323
84219
|
#
|
|
83324
84220
|
# The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.
|
|
83325
84221
|
self.flow_log_name = flow_log_name
|
|
84222
|
+
self.ip_version = ip_version
|
|
83326
84223
|
self.owner_account = owner_account
|
|
83327
84224
|
self.owner_id = owner_id
|
|
83328
84225
|
# The ID of the region where the flow log is created.
|
|
@@ -83351,6 +84248,8 @@ class ModifyFlowLogAttributeRequest(TeaModel):
|
|
|
83351
84248
|
result['FlowLogId'] = self.flow_log_id
|
|
83352
84249
|
if self.flow_log_name is not None:
|
|
83353
84250
|
result['FlowLogName'] = self.flow_log_name
|
|
84251
|
+
if self.ip_version is not None:
|
|
84252
|
+
result['IpVersion'] = self.ip_version
|
|
83354
84253
|
if self.owner_account is not None:
|
|
83355
84254
|
result['OwnerAccount'] = self.owner_account
|
|
83356
84255
|
if self.owner_id is not None:
|
|
@@ -83373,6 +84272,8 @@ class ModifyFlowLogAttributeRequest(TeaModel):
|
|
|
83373
84272
|
self.flow_log_id = m.get('FlowLogId')
|
|
83374
84273
|
if m.get('FlowLogName') is not None:
|
|
83375
84274
|
self.flow_log_name = m.get('FlowLogName')
|
|
84275
|
+
if m.get('IpVersion') is not None:
|
|
84276
|
+
self.ip_version = m.get('IpVersion')
|
|
83376
84277
|
if m.get('OwnerAccount') is not None:
|
|
83377
84278
|
self.owner_account = m.get('OwnerAccount')
|
|
83378
84279
|
if m.get('OwnerId') is not None:
|
|
@@ -86983,6 +87884,7 @@ class ModifyRouteEntryRequest(TeaModel):
|
|
|
86983
87884
|
#
|
|
86984
87885
|
# The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.
|
|
86985
87886
|
self.description = description
|
|
87887
|
+
# The destination CIDR block of the route entry. Only IPv4 CIDR blocks, IPv6 CIDR blocks, and prefix lists are supported.
|
|
86986
87888
|
self.destination_cidr_block = destination_cidr_block
|
|
86987
87889
|
# The ID of the new next hop instance.
|
|
86988
87890
|
self.new_next_hop_id = new_next_hop_id
|
|
@@ -87004,6 +87906,7 @@ class ModifyRouteEntryRequest(TeaModel):
|
|
|
87004
87906
|
#
|
|
87005
87907
|
# The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.
|
|
87006
87908
|
self.route_entry_name = route_entry_name
|
|
87909
|
+
# The ID of the route table to which the route entry belongs.
|
|
87007
87910
|
self.route_table_id = route_table_id
|
|
87008
87911
|
|
|
87009
87912
|
def validate(self):
|
|
@@ -88639,6 +89542,7 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig(Te
|
|
|
88639
89542
|
class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
88640
89543
|
def __init__(
|
|
88641
89544
|
self,
|
|
89545
|
+
customer_gateway_id: str = None,
|
|
88642
89546
|
enable_dpd: bool = None,
|
|
88643
89547
|
enable_nat_traversal: bool = None,
|
|
88644
89548
|
remote_ca_certificate: str = None,
|
|
@@ -88646,6 +89550,7 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
88646
89550
|
tunnel_ike_config: ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
88647
89551
|
tunnel_ipsec_config: ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
88648
89552
|
):
|
|
89553
|
+
self.customer_gateway_id = customer_gateway_id
|
|
88649
89554
|
# Specifies whether to enable the dead peer detection (DPD) feature. Valid values:
|
|
88650
89555
|
#
|
|
88651
89556
|
# * **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.
|
|
@@ -88681,6 +89586,8 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
88681
89586
|
return _map
|
|
88682
89587
|
|
|
88683
89588
|
result = dict()
|
|
89589
|
+
if self.customer_gateway_id is not None:
|
|
89590
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
88684
89591
|
if self.enable_dpd is not None:
|
|
88685
89592
|
result['EnableDpd'] = self.enable_dpd
|
|
88686
89593
|
if self.enable_nat_traversal is not None:
|
|
@@ -88697,6 +89604,8 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
88697
89604
|
|
|
88698
89605
|
def from_map(self, m: dict = None):
|
|
88699
89606
|
m = m or dict()
|
|
89607
|
+
if m.get('CustomerGatewayId') is not None:
|
|
89608
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
88700
89609
|
if m.get('EnableDpd') is not None:
|
|
88701
89610
|
self.enable_dpd = m.get('EnableDpd')
|
|
88702
89611
|
if m.get('EnableNatTraversal') is not None:
|
|
@@ -90647,6 +91556,242 @@ class ModifyVpcPrefixListResponse(TeaModel):
|
|
|
90647
91556
|
return self
|
|
90648
91557
|
|
|
90649
91558
|
|
|
91559
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
91560
|
+
def __init__(
|
|
91561
|
+
self,
|
|
91562
|
+
local_asn: int = None,
|
|
91563
|
+
local_bgp_ip: str = None,
|
|
91564
|
+
tunnel_cidr: str = None,
|
|
91565
|
+
):
|
|
91566
|
+
self.local_asn = local_asn
|
|
91567
|
+
self.local_bgp_ip = local_bgp_ip
|
|
91568
|
+
self.tunnel_cidr = tunnel_cidr
|
|
91569
|
+
|
|
91570
|
+
def validate(self):
|
|
91571
|
+
pass
|
|
91572
|
+
|
|
91573
|
+
def to_map(self):
|
|
91574
|
+
_map = super().to_map()
|
|
91575
|
+
if _map is not None:
|
|
91576
|
+
return _map
|
|
91577
|
+
|
|
91578
|
+
result = dict()
|
|
91579
|
+
if self.local_asn is not None:
|
|
91580
|
+
result['LocalAsn'] = self.local_asn
|
|
91581
|
+
if self.local_bgp_ip is not None:
|
|
91582
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
91583
|
+
if self.tunnel_cidr is not None:
|
|
91584
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
91585
|
+
return result
|
|
91586
|
+
|
|
91587
|
+
def from_map(self, m: dict = None):
|
|
91588
|
+
m = m or dict()
|
|
91589
|
+
if m.get('LocalAsn') is not None:
|
|
91590
|
+
self.local_asn = m.get('LocalAsn')
|
|
91591
|
+
if m.get('LocalBgpIp') is not None:
|
|
91592
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
91593
|
+
if m.get('TunnelCidr') is not None:
|
|
91594
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
91595
|
+
return self
|
|
91596
|
+
|
|
91597
|
+
|
|
91598
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
91599
|
+
def __init__(
|
|
91600
|
+
self,
|
|
91601
|
+
ike_auth_alg: str = None,
|
|
91602
|
+
ike_enc_alg: str = None,
|
|
91603
|
+
ike_lifetime: int = None,
|
|
91604
|
+
ike_mode: str = None,
|
|
91605
|
+
ike_pfs: str = None,
|
|
91606
|
+
ike_version: str = None,
|
|
91607
|
+
local_id: str = None,
|
|
91608
|
+
psk: str = None,
|
|
91609
|
+
remote_id: str = None,
|
|
91610
|
+
):
|
|
91611
|
+
self.ike_auth_alg = ike_auth_alg
|
|
91612
|
+
self.ike_enc_alg = ike_enc_alg
|
|
91613
|
+
self.ike_lifetime = ike_lifetime
|
|
91614
|
+
self.ike_mode = ike_mode
|
|
91615
|
+
self.ike_pfs = ike_pfs
|
|
91616
|
+
self.ike_version = ike_version
|
|
91617
|
+
self.local_id = local_id
|
|
91618
|
+
self.psk = psk
|
|
91619
|
+
self.remote_id = remote_id
|
|
91620
|
+
|
|
91621
|
+
def validate(self):
|
|
91622
|
+
pass
|
|
91623
|
+
|
|
91624
|
+
def to_map(self):
|
|
91625
|
+
_map = super().to_map()
|
|
91626
|
+
if _map is not None:
|
|
91627
|
+
return _map
|
|
91628
|
+
|
|
91629
|
+
result = dict()
|
|
91630
|
+
if self.ike_auth_alg is not None:
|
|
91631
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
91632
|
+
if self.ike_enc_alg is not None:
|
|
91633
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
91634
|
+
if self.ike_lifetime is not None:
|
|
91635
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
91636
|
+
if self.ike_mode is not None:
|
|
91637
|
+
result['IkeMode'] = self.ike_mode
|
|
91638
|
+
if self.ike_pfs is not None:
|
|
91639
|
+
result['IkePfs'] = self.ike_pfs
|
|
91640
|
+
if self.ike_version is not None:
|
|
91641
|
+
result['IkeVersion'] = self.ike_version
|
|
91642
|
+
if self.local_id is not None:
|
|
91643
|
+
result['LocalId'] = self.local_id
|
|
91644
|
+
if self.psk is not None:
|
|
91645
|
+
result['Psk'] = self.psk
|
|
91646
|
+
if self.remote_id is not None:
|
|
91647
|
+
result['RemoteId'] = self.remote_id
|
|
91648
|
+
return result
|
|
91649
|
+
|
|
91650
|
+
def from_map(self, m: dict = None):
|
|
91651
|
+
m = m or dict()
|
|
91652
|
+
if m.get('IkeAuthAlg') is not None:
|
|
91653
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
91654
|
+
if m.get('IkeEncAlg') is not None:
|
|
91655
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
91656
|
+
if m.get('IkeLifetime') is not None:
|
|
91657
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
91658
|
+
if m.get('IkeMode') is not None:
|
|
91659
|
+
self.ike_mode = m.get('IkeMode')
|
|
91660
|
+
if m.get('IkePfs') is not None:
|
|
91661
|
+
self.ike_pfs = m.get('IkePfs')
|
|
91662
|
+
if m.get('IkeVersion') is not None:
|
|
91663
|
+
self.ike_version = m.get('IkeVersion')
|
|
91664
|
+
if m.get('LocalId') is not None:
|
|
91665
|
+
self.local_id = m.get('LocalId')
|
|
91666
|
+
if m.get('Psk') is not None:
|
|
91667
|
+
self.psk = m.get('Psk')
|
|
91668
|
+
if m.get('RemoteId') is not None:
|
|
91669
|
+
self.remote_id = m.get('RemoteId')
|
|
91670
|
+
return self
|
|
91671
|
+
|
|
91672
|
+
|
|
91673
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
91674
|
+
def __init__(
|
|
91675
|
+
self,
|
|
91676
|
+
ipsec_auth_alg: str = None,
|
|
91677
|
+
ipsec_enc_alg: str = None,
|
|
91678
|
+
ipsec_lifetime: int = None,
|
|
91679
|
+
ipsec_pfs: str = None,
|
|
91680
|
+
):
|
|
91681
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
91682
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
91683
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
91684
|
+
self.ipsec_pfs = ipsec_pfs
|
|
91685
|
+
|
|
91686
|
+
def validate(self):
|
|
91687
|
+
pass
|
|
91688
|
+
|
|
91689
|
+
def to_map(self):
|
|
91690
|
+
_map = super().to_map()
|
|
91691
|
+
if _map is not None:
|
|
91692
|
+
return _map
|
|
91693
|
+
|
|
91694
|
+
result = dict()
|
|
91695
|
+
if self.ipsec_auth_alg is not None:
|
|
91696
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
91697
|
+
if self.ipsec_enc_alg is not None:
|
|
91698
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
91699
|
+
if self.ipsec_lifetime is not None:
|
|
91700
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
91701
|
+
if self.ipsec_pfs is not None:
|
|
91702
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
91703
|
+
return result
|
|
91704
|
+
|
|
91705
|
+
def from_map(self, m: dict = None):
|
|
91706
|
+
m = m or dict()
|
|
91707
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
91708
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
91709
|
+
if m.get('IpsecEncAlg') is not None:
|
|
91710
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
91711
|
+
if m.get('IpsecLifetime') is not None:
|
|
91712
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
91713
|
+
if m.get('IpsecPfs') is not None:
|
|
91714
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
91715
|
+
return self
|
|
91716
|
+
|
|
91717
|
+
|
|
91718
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
91719
|
+
def __init__(
|
|
91720
|
+
self,
|
|
91721
|
+
customer_gateway_id: str = None,
|
|
91722
|
+
enable_dpd: bool = None,
|
|
91723
|
+
enable_nat_traversal: bool = None,
|
|
91724
|
+
tunnel_bgp_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
91725
|
+
tunnel_id: str = None,
|
|
91726
|
+
tunnel_ike_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
91727
|
+
tunnel_index: int = None,
|
|
91728
|
+
tunnel_ipsec_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
91729
|
+
):
|
|
91730
|
+
self.customer_gateway_id = customer_gateway_id
|
|
91731
|
+
self.enable_dpd = enable_dpd
|
|
91732
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
91733
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
91734
|
+
self.tunnel_id = tunnel_id
|
|
91735
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
91736
|
+
self.tunnel_index = tunnel_index
|
|
91737
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
91738
|
+
|
|
91739
|
+
def validate(self):
|
|
91740
|
+
if self.tunnel_bgp_config:
|
|
91741
|
+
self.tunnel_bgp_config.validate()
|
|
91742
|
+
if self.tunnel_ike_config:
|
|
91743
|
+
self.tunnel_ike_config.validate()
|
|
91744
|
+
if self.tunnel_ipsec_config:
|
|
91745
|
+
self.tunnel_ipsec_config.validate()
|
|
91746
|
+
|
|
91747
|
+
def to_map(self):
|
|
91748
|
+
_map = super().to_map()
|
|
91749
|
+
if _map is not None:
|
|
91750
|
+
return _map
|
|
91751
|
+
|
|
91752
|
+
result = dict()
|
|
91753
|
+
if self.customer_gateway_id is not None:
|
|
91754
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
91755
|
+
if self.enable_dpd is not None:
|
|
91756
|
+
result['EnableDpd'] = self.enable_dpd
|
|
91757
|
+
if self.enable_nat_traversal is not None:
|
|
91758
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
91759
|
+
if self.tunnel_bgp_config is not None:
|
|
91760
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
91761
|
+
if self.tunnel_id is not None:
|
|
91762
|
+
result['TunnelId'] = self.tunnel_id
|
|
91763
|
+
if self.tunnel_ike_config is not None:
|
|
91764
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
91765
|
+
if self.tunnel_index is not None:
|
|
91766
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
91767
|
+
if self.tunnel_ipsec_config is not None:
|
|
91768
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
91769
|
+
return result
|
|
91770
|
+
|
|
91771
|
+
def from_map(self, m: dict = None):
|
|
91772
|
+
m = m or dict()
|
|
91773
|
+
if m.get('CustomerGatewayId') is not None:
|
|
91774
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
91775
|
+
if m.get('EnableDpd') is not None:
|
|
91776
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
91777
|
+
if m.get('EnableNatTraversal') is not None:
|
|
91778
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
91779
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
91780
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig()
|
|
91781
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
91782
|
+
if m.get('TunnelId') is not None:
|
|
91783
|
+
self.tunnel_id = m.get('TunnelId')
|
|
91784
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
91785
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig()
|
|
91786
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
91787
|
+
if m.get('TunnelIndex') is not None:
|
|
91788
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
91789
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
91790
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
91791
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
91792
|
+
return self
|
|
91793
|
+
|
|
91794
|
+
|
|
90650
91795
|
class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
90651
91796
|
def __init__(
|
|
90652
91797
|
self,
|
|
@@ -90657,6 +91802,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90657
91802
|
effect_immediately: bool = None,
|
|
90658
91803
|
enable_dpd: bool = None,
|
|
90659
91804
|
enable_nat_traversal: bool = None,
|
|
91805
|
+
enable_tunnels_bgp: bool = None,
|
|
90660
91806
|
health_check_config: str = None,
|
|
90661
91807
|
ike_config: str = None,
|
|
90662
91808
|
ipsec_config: str = None,
|
|
@@ -90669,6 +91815,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90669
91815
|
remote_subnet: str = None,
|
|
90670
91816
|
resource_owner_account: str = None,
|
|
90671
91817
|
resource_owner_id: int = None,
|
|
91818
|
+
tunnel_options_specification: List[ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification] = None,
|
|
90672
91819
|
vpn_connection_id: str = None,
|
|
90673
91820
|
):
|
|
90674
91821
|
# Specifies whether to automatically configure routes. Valid values:
|
|
@@ -90719,6 +91866,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90719
91866
|
# * **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.
|
|
90720
91867
|
# * **false**\
|
|
90721
91868
|
self.enable_nat_traversal = enable_nat_traversal
|
|
91869
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
90722
91870
|
# The health check configurations:
|
|
90723
91871
|
#
|
|
90724
91872
|
# * **HealthCheckConfig.enable**: specifies whether to enable the health check feature. Valid values:
|
|
@@ -90809,13 +91957,17 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90809
91957
|
self.remote_subnet = remote_subnet
|
|
90810
91958
|
self.resource_owner_account = resource_owner_account
|
|
90811
91959
|
self.resource_owner_id = resource_owner_id
|
|
91960
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
90812
91961
|
# The ID of the IPsec-VPN connection.
|
|
90813
91962
|
#
|
|
90814
91963
|
# This parameter is required.
|
|
90815
91964
|
self.vpn_connection_id = vpn_connection_id
|
|
90816
91965
|
|
|
90817
91966
|
def validate(self):
|
|
90818
|
-
|
|
91967
|
+
if self.tunnel_options_specification:
|
|
91968
|
+
for k in self.tunnel_options_specification:
|
|
91969
|
+
if k:
|
|
91970
|
+
k.validate()
|
|
90819
91971
|
|
|
90820
91972
|
def to_map(self):
|
|
90821
91973
|
_map = super().to_map()
|
|
@@ -90837,6 +91989,8 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90837
91989
|
result['EnableDpd'] = self.enable_dpd
|
|
90838
91990
|
if self.enable_nat_traversal is not None:
|
|
90839
91991
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
91992
|
+
if self.enable_tunnels_bgp is not None:
|
|
91993
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
90840
91994
|
if self.health_check_config is not None:
|
|
90841
91995
|
result['HealthCheckConfig'] = self.health_check_config
|
|
90842
91996
|
if self.ike_config is not None:
|
|
@@ -90861,6 +92015,10 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90861
92015
|
result['ResourceOwnerAccount'] = self.resource_owner_account
|
|
90862
92016
|
if self.resource_owner_id is not None:
|
|
90863
92017
|
result['ResourceOwnerId'] = self.resource_owner_id
|
|
92018
|
+
result['TunnelOptionsSpecification'] = []
|
|
92019
|
+
if self.tunnel_options_specification is not None:
|
|
92020
|
+
for k in self.tunnel_options_specification:
|
|
92021
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
90864
92022
|
if self.vpn_connection_id is not None:
|
|
90865
92023
|
result['VpnConnectionId'] = self.vpn_connection_id
|
|
90866
92024
|
return result
|
|
@@ -90881,6 +92039,8 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90881
92039
|
self.enable_dpd = m.get('EnableDpd')
|
|
90882
92040
|
if m.get('EnableNatTraversal') is not None:
|
|
90883
92041
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92042
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
92043
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
90884
92044
|
if m.get('HealthCheckConfig') is not None:
|
|
90885
92045
|
self.health_check_config = m.get('HealthCheckConfig')
|
|
90886
92046
|
if m.get('IkeConfig') is not None:
|
|
@@ -90905,6 +92065,11 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
90905
92065
|
self.resource_owner_account = m.get('ResourceOwnerAccount')
|
|
90906
92066
|
if m.get('ResourceOwnerId') is not None:
|
|
90907
92067
|
self.resource_owner_id = m.get('ResourceOwnerId')
|
|
92068
|
+
self.tunnel_options_specification = []
|
|
92069
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
92070
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
92071
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification()
|
|
92072
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
90908
92073
|
if m.get('VpnConnectionId') is not None:
|
|
90909
92074
|
self.vpn_connection_id = m.get('VpnConnectionId')
|
|
90910
92075
|
return self
|
|
@@ -91045,6 +92210,272 @@ class ModifyVpnAttachmentAttributeResponseBodyIpsecConfig(TeaModel):
|
|
|
91045
92210
|
return self
|
|
91046
92211
|
|
|
91047
92212
|
|
|
92213
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
92214
|
+
def __init__(
|
|
92215
|
+
self,
|
|
92216
|
+
local_asn: int = None,
|
|
92217
|
+
local_bgp_ip: str = None,
|
|
92218
|
+
peer_asn: int = None,
|
|
92219
|
+
peer_bgp_ip: str = None,
|
|
92220
|
+
tunnel_cidr: str = None,
|
|
92221
|
+
):
|
|
92222
|
+
self.local_asn = local_asn
|
|
92223
|
+
self.local_bgp_ip = local_bgp_ip
|
|
92224
|
+
self.peer_asn = peer_asn
|
|
92225
|
+
self.peer_bgp_ip = peer_bgp_ip
|
|
92226
|
+
self.tunnel_cidr = tunnel_cidr
|
|
92227
|
+
|
|
92228
|
+
def validate(self):
|
|
92229
|
+
pass
|
|
92230
|
+
|
|
92231
|
+
def to_map(self):
|
|
92232
|
+
_map = super().to_map()
|
|
92233
|
+
if _map is not None:
|
|
92234
|
+
return _map
|
|
92235
|
+
|
|
92236
|
+
result = dict()
|
|
92237
|
+
if self.local_asn is not None:
|
|
92238
|
+
result['LocalAsn'] = self.local_asn
|
|
92239
|
+
if self.local_bgp_ip is not None:
|
|
92240
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
92241
|
+
if self.peer_asn is not None:
|
|
92242
|
+
result['PeerAsn'] = self.peer_asn
|
|
92243
|
+
if self.peer_bgp_ip is not None:
|
|
92244
|
+
result['PeerBgpIp'] = self.peer_bgp_ip
|
|
92245
|
+
if self.tunnel_cidr is not None:
|
|
92246
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
92247
|
+
return result
|
|
92248
|
+
|
|
92249
|
+
def from_map(self, m: dict = None):
|
|
92250
|
+
m = m or dict()
|
|
92251
|
+
if m.get('LocalAsn') is not None:
|
|
92252
|
+
self.local_asn = m.get('LocalAsn')
|
|
92253
|
+
if m.get('LocalBgpIp') is not None:
|
|
92254
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
92255
|
+
if m.get('PeerAsn') is not None:
|
|
92256
|
+
self.peer_asn = m.get('PeerAsn')
|
|
92257
|
+
if m.get('PeerBgpIp') is not None:
|
|
92258
|
+
self.peer_bgp_ip = m.get('PeerBgpIp')
|
|
92259
|
+
if m.get('TunnelCidr') is not None:
|
|
92260
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
92261
|
+
return self
|
|
92262
|
+
|
|
92263
|
+
|
|
92264
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
92265
|
+
def __init__(
|
|
92266
|
+
self,
|
|
92267
|
+
ike_auth_alg: str = None,
|
|
92268
|
+
ike_enc_alg: str = None,
|
|
92269
|
+
ike_lifetime: int = None,
|
|
92270
|
+
ike_mode: str = None,
|
|
92271
|
+
ike_pfs: str = None,
|
|
92272
|
+
ike_version: str = None,
|
|
92273
|
+
local_id: str = None,
|
|
92274
|
+
psk: str = None,
|
|
92275
|
+
remote_id: str = None,
|
|
92276
|
+
):
|
|
92277
|
+
self.ike_auth_alg = ike_auth_alg
|
|
92278
|
+
self.ike_enc_alg = ike_enc_alg
|
|
92279
|
+
self.ike_lifetime = ike_lifetime
|
|
92280
|
+
self.ike_mode = ike_mode
|
|
92281
|
+
self.ike_pfs = ike_pfs
|
|
92282
|
+
self.ike_version = ike_version
|
|
92283
|
+
self.local_id = local_id
|
|
92284
|
+
self.psk = psk
|
|
92285
|
+
self.remote_id = remote_id
|
|
92286
|
+
|
|
92287
|
+
def validate(self):
|
|
92288
|
+
pass
|
|
92289
|
+
|
|
92290
|
+
def to_map(self):
|
|
92291
|
+
_map = super().to_map()
|
|
92292
|
+
if _map is not None:
|
|
92293
|
+
return _map
|
|
92294
|
+
|
|
92295
|
+
result = dict()
|
|
92296
|
+
if self.ike_auth_alg is not None:
|
|
92297
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
92298
|
+
if self.ike_enc_alg is not None:
|
|
92299
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
92300
|
+
if self.ike_lifetime is not None:
|
|
92301
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
92302
|
+
if self.ike_mode is not None:
|
|
92303
|
+
result['IkeMode'] = self.ike_mode
|
|
92304
|
+
if self.ike_pfs is not None:
|
|
92305
|
+
result['IkePfs'] = self.ike_pfs
|
|
92306
|
+
if self.ike_version is not None:
|
|
92307
|
+
result['IkeVersion'] = self.ike_version
|
|
92308
|
+
if self.local_id is not None:
|
|
92309
|
+
result['LocalId'] = self.local_id
|
|
92310
|
+
if self.psk is not None:
|
|
92311
|
+
result['Psk'] = self.psk
|
|
92312
|
+
if self.remote_id is not None:
|
|
92313
|
+
result['RemoteId'] = self.remote_id
|
|
92314
|
+
return result
|
|
92315
|
+
|
|
92316
|
+
def from_map(self, m: dict = None):
|
|
92317
|
+
m = m or dict()
|
|
92318
|
+
if m.get('IkeAuthAlg') is not None:
|
|
92319
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
92320
|
+
if m.get('IkeEncAlg') is not None:
|
|
92321
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
92322
|
+
if m.get('IkeLifetime') is not None:
|
|
92323
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
92324
|
+
if m.get('IkeMode') is not None:
|
|
92325
|
+
self.ike_mode = m.get('IkeMode')
|
|
92326
|
+
if m.get('IkePfs') is not None:
|
|
92327
|
+
self.ike_pfs = m.get('IkePfs')
|
|
92328
|
+
if m.get('IkeVersion') is not None:
|
|
92329
|
+
self.ike_version = m.get('IkeVersion')
|
|
92330
|
+
if m.get('LocalId') is not None:
|
|
92331
|
+
self.local_id = m.get('LocalId')
|
|
92332
|
+
if m.get('Psk') is not None:
|
|
92333
|
+
self.psk = m.get('Psk')
|
|
92334
|
+
if m.get('RemoteId') is not None:
|
|
92335
|
+
self.remote_id = m.get('RemoteId')
|
|
92336
|
+
return self
|
|
92337
|
+
|
|
92338
|
+
|
|
92339
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
92340
|
+
def __init__(
|
|
92341
|
+
self,
|
|
92342
|
+
ipsec_auth_alg: str = None,
|
|
92343
|
+
ipsec_enc_alg: str = None,
|
|
92344
|
+
ipsec_lifetime: int = None,
|
|
92345
|
+
ipsec_pfs: str = None,
|
|
92346
|
+
):
|
|
92347
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
92348
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
92349
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
92350
|
+
self.ipsec_pfs = ipsec_pfs
|
|
92351
|
+
|
|
92352
|
+
def validate(self):
|
|
92353
|
+
pass
|
|
92354
|
+
|
|
92355
|
+
def to_map(self):
|
|
92356
|
+
_map = super().to_map()
|
|
92357
|
+
if _map is not None:
|
|
92358
|
+
return _map
|
|
92359
|
+
|
|
92360
|
+
result = dict()
|
|
92361
|
+
if self.ipsec_auth_alg is not None:
|
|
92362
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
92363
|
+
if self.ipsec_enc_alg is not None:
|
|
92364
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
92365
|
+
if self.ipsec_lifetime is not None:
|
|
92366
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
92367
|
+
if self.ipsec_pfs is not None:
|
|
92368
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
92369
|
+
return result
|
|
92370
|
+
|
|
92371
|
+
def from_map(self, m: dict = None):
|
|
92372
|
+
m = m or dict()
|
|
92373
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
92374
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
92375
|
+
if m.get('IpsecEncAlg') is not None:
|
|
92376
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
92377
|
+
if m.get('IpsecLifetime') is not None:
|
|
92378
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
92379
|
+
if m.get('IpsecPfs') is not None:
|
|
92380
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
92381
|
+
return self
|
|
92382
|
+
|
|
92383
|
+
|
|
92384
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification(TeaModel):
|
|
92385
|
+
def __init__(
|
|
92386
|
+
self,
|
|
92387
|
+
customer_gateway_id: str = None,
|
|
92388
|
+
enable_dpd: bool = None,
|
|
92389
|
+
enable_nat_traversal: bool = None,
|
|
92390
|
+
internet_ip: str = None,
|
|
92391
|
+
role: str = None,
|
|
92392
|
+
state: str = None,
|
|
92393
|
+
tunnel_bgp_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
92394
|
+
tunnel_id: str = None,
|
|
92395
|
+
tunnel_ike_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
92396
|
+
tunnel_index: int = None,
|
|
92397
|
+
tunnel_ipsec_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
92398
|
+
):
|
|
92399
|
+
self.customer_gateway_id = customer_gateway_id
|
|
92400
|
+
self.enable_dpd = enable_dpd
|
|
92401
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
92402
|
+
self.internet_ip = internet_ip
|
|
92403
|
+
self.role = role
|
|
92404
|
+
self.state = state
|
|
92405
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
92406
|
+
self.tunnel_id = tunnel_id
|
|
92407
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
92408
|
+
self.tunnel_index = tunnel_index
|
|
92409
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
92410
|
+
|
|
92411
|
+
def validate(self):
|
|
92412
|
+
if self.tunnel_bgp_config:
|
|
92413
|
+
self.tunnel_bgp_config.validate()
|
|
92414
|
+
if self.tunnel_ike_config:
|
|
92415
|
+
self.tunnel_ike_config.validate()
|
|
92416
|
+
if self.tunnel_ipsec_config:
|
|
92417
|
+
self.tunnel_ipsec_config.validate()
|
|
92418
|
+
|
|
92419
|
+
def to_map(self):
|
|
92420
|
+
_map = super().to_map()
|
|
92421
|
+
if _map is not None:
|
|
92422
|
+
return _map
|
|
92423
|
+
|
|
92424
|
+
result = dict()
|
|
92425
|
+
if self.customer_gateway_id is not None:
|
|
92426
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
92427
|
+
if self.enable_dpd is not None:
|
|
92428
|
+
result['EnableDpd'] = self.enable_dpd
|
|
92429
|
+
if self.enable_nat_traversal is not None:
|
|
92430
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92431
|
+
if self.internet_ip is not None:
|
|
92432
|
+
result['InternetIp'] = self.internet_ip
|
|
92433
|
+
if self.role is not None:
|
|
92434
|
+
result['Role'] = self.role
|
|
92435
|
+
if self.state is not None:
|
|
92436
|
+
result['State'] = self.state
|
|
92437
|
+
if self.tunnel_bgp_config is not None:
|
|
92438
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
92439
|
+
if self.tunnel_id is not None:
|
|
92440
|
+
result['TunnelId'] = self.tunnel_id
|
|
92441
|
+
if self.tunnel_ike_config is not None:
|
|
92442
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
92443
|
+
if self.tunnel_index is not None:
|
|
92444
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
92445
|
+
if self.tunnel_ipsec_config is not None:
|
|
92446
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
92447
|
+
return result
|
|
92448
|
+
|
|
92449
|
+
def from_map(self, m: dict = None):
|
|
92450
|
+
m = m or dict()
|
|
92451
|
+
if m.get('CustomerGatewayId') is not None:
|
|
92452
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
92453
|
+
if m.get('EnableDpd') is not None:
|
|
92454
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
92455
|
+
if m.get('EnableNatTraversal') is not None:
|
|
92456
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92457
|
+
if m.get('InternetIp') is not None:
|
|
92458
|
+
self.internet_ip = m.get('InternetIp')
|
|
92459
|
+
if m.get('Role') is not None:
|
|
92460
|
+
self.role = m.get('Role')
|
|
92461
|
+
if m.get('State') is not None:
|
|
92462
|
+
self.state = m.get('State')
|
|
92463
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
92464
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig()
|
|
92465
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
92466
|
+
if m.get('TunnelId') is not None:
|
|
92467
|
+
self.tunnel_id = m.get('TunnelId')
|
|
92468
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
92469
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig()
|
|
92470
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
92471
|
+
if m.get('TunnelIndex') is not None:
|
|
92472
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
92473
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
92474
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
92475
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
92476
|
+
return self
|
|
92477
|
+
|
|
92478
|
+
|
|
91048
92479
|
class ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck(TeaModel):
|
|
91049
92480
|
def __init__(
|
|
91050
92481
|
self,
|
|
@@ -91201,6 +92632,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91201
92632
|
effect_immediately: bool = None,
|
|
91202
92633
|
enable_dpd: bool = None,
|
|
91203
92634
|
enable_nat_traversal: bool = None,
|
|
92635
|
+
enable_tunnels_bgp: bool = None,
|
|
91204
92636
|
ike_config: ModifyVpnAttachmentAttributeResponseBodyIkeConfig = None,
|
|
91205
92637
|
ipsec_config: ModifyVpnAttachmentAttributeResponseBodyIpsecConfig = None,
|
|
91206
92638
|
local_subnet: str = None,
|
|
@@ -91211,6 +92643,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91211
92643
|
resource_group_id: str = None,
|
|
91212
92644
|
spec: str = None,
|
|
91213
92645
|
status: str = None,
|
|
92646
|
+
tunnel_options_specification: List[ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification] = None,
|
|
91214
92647
|
vco_health_check: ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck = None,
|
|
91215
92648
|
vpn_bgp_config: ModifyVpnAttachmentAttributeResponseBodyVpnBgpConfig = None,
|
|
91216
92649
|
vpn_connection_id: str = None,
|
|
@@ -91247,6 +92680,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91247
92680
|
# * **true**\
|
|
91248
92681
|
# * **false**\
|
|
91249
92682
|
self.enable_nat_traversal = enable_nat_traversal
|
|
92683
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
91250
92684
|
# The configuration of Phase 1 negotiations.
|
|
91251
92685
|
self.ike_config = ike_config
|
|
91252
92686
|
# The configuration of Phase 2 negotiations.
|
|
@@ -91279,6 +92713,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91279
92713
|
# * **ipsec_sa_not_established**: Phase 2 negotiations failed.
|
|
91280
92714
|
# * **ipsec_sa_established**: Phase 2 negotiations succeeded.
|
|
91281
92715
|
self.status = status
|
|
92716
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
91282
92717
|
# The health check configuration of the IPsec-VPN connection.
|
|
91283
92718
|
self.vco_health_check = vco_health_check
|
|
91284
92719
|
# The BGP configuration of the IPsec-VPN connection.
|
|
@@ -91293,6 +92728,10 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91293
92728
|
self.ike_config.validate()
|
|
91294
92729
|
if self.ipsec_config:
|
|
91295
92730
|
self.ipsec_config.validate()
|
|
92731
|
+
if self.tunnel_options_specification:
|
|
92732
|
+
for k in self.tunnel_options_specification:
|
|
92733
|
+
if k:
|
|
92734
|
+
k.validate()
|
|
91296
92735
|
if self.vco_health_check:
|
|
91297
92736
|
self.vco_health_check.validate()
|
|
91298
92737
|
if self.vpn_bgp_config:
|
|
@@ -91320,6 +92759,8 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91320
92759
|
result['EnableDpd'] = self.enable_dpd
|
|
91321
92760
|
if self.enable_nat_traversal is not None:
|
|
91322
92761
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92762
|
+
if self.enable_tunnels_bgp is not None:
|
|
92763
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
91323
92764
|
if self.ike_config is not None:
|
|
91324
92765
|
result['IkeConfig'] = self.ike_config.to_map()
|
|
91325
92766
|
if self.ipsec_config is not None:
|
|
@@ -91340,6 +92781,10 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91340
92781
|
result['Spec'] = self.spec
|
|
91341
92782
|
if self.status is not None:
|
|
91342
92783
|
result['Status'] = self.status
|
|
92784
|
+
result['TunnelOptionsSpecification'] = []
|
|
92785
|
+
if self.tunnel_options_specification is not None:
|
|
92786
|
+
for k in self.tunnel_options_specification:
|
|
92787
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
91343
92788
|
if self.vco_health_check is not None:
|
|
91344
92789
|
result['VcoHealthCheck'] = self.vco_health_check.to_map()
|
|
91345
92790
|
if self.vpn_bgp_config is not None:
|
|
@@ -91368,6 +92813,8 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91368
92813
|
self.enable_dpd = m.get('EnableDpd')
|
|
91369
92814
|
if m.get('EnableNatTraversal') is not None:
|
|
91370
92815
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92816
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
92817
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
91371
92818
|
if m.get('IkeConfig') is not None:
|
|
91372
92819
|
temp_model = ModifyVpnAttachmentAttributeResponseBodyIkeConfig()
|
|
91373
92820
|
self.ike_config = temp_model.from_map(m['IkeConfig'])
|
|
@@ -91390,6 +92837,11 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91390
92837
|
self.spec = m.get('Spec')
|
|
91391
92838
|
if m.get('Status') is not None:
|
|
91392
92839
|
self.status = m.get('Status')
|
|
92840
|
+
self.tunnel_options_specification = []
|
|
92841
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
92842
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
92843
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification()
|
|
92844
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
91393
92845
|
if m.get('VcoHealthCheck') is not None:
|
|
91394
92846
|
temp_model = ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck()
|
|
91395
92847
|
self.vco_health_check = temp_model.from_map(m['VcoHealthCheck'])
|
|
@@ -91453,15 +92905,19 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelBgpConf
|
|
|
91453
92905
|
):
|
|
91454
92906
|
# The ASN of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
91455
92907
|
#
|
|
91456
|
-
# >
|
|
91457
|
-
#
|
|
91458
|
-
#
|
|
92908
|
+
# > You can specify this parameter only if **EnableTunnelsBgp** is set to **true**.
|
|
92909
|
+
#
|
|
92910
|
+
# * 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).
|
|
92911
|
+
#
|
|
92912
|
+
# * 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.
|
|
91459
92913
|
self.local_asn = local_asn
|
|
91460
|
-
# 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
|
|
92914
|
+
# 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.
|
|
91461
92915
|
self.local_bgp_ip = local_bgp_ip
|
|
91462
|
-
# The BGP CIDR block of the tunnel.
|
|
92916
|
+
# The BGP CIDR block of the tunnel.
|
|
91463
92917
|
#
|
|
91464
|
-
#
|
|
92918
|
+
# 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.
|
|
92919
|
+
#
|
|
92920
|
+
# > The BGP CIDR block of each tunnel must be unique on a VPN gateway.
|
|
91465
92921
|
self.tunnel_cidr = tunnel_cidr
|
|
91466
92922
|
|
|
91467
92923
|
def validate(self):
|
|
@@ -91513,33 +92969,33 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIkeConf
|
|
|
91513
92969
|
#
|
|
91514
92970
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.
|
|
91515
92971
|
self.ike_enc_alg = ike_enc_alg
|
|
91516
|
-
# The SA lifetime
|
|
92972
|
+
# The SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0** to **86400**.
|
|
91517
92973
|
self.ike_lifetime = ike_lifetime
|
|
91518
|
-
# The
|
|
92974
|
+
# The negotiation mode of IKE. Valid values:
|
|
91519
92975
|
#
|
|
91520
|
-
# * **main
|
|
91521
|
-
# * **aggressive
|
|
92976
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
92977
|
+
# * **aggressive:** This mode supports faster negotiations and a higher success rate.
|
|
91522
92978
|
self.ike_mode = ike_mode
|
|
91523
|
-
# The
|
|
92979
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
91524
92980
|
self.ike_pfs = ike_pfs
|
|
91525
92981
|
# The version of the IKE protocol. Valid values: **ikev1** and **ikev2**.
|
|
91526
92982
|
#
|
|
91527
|
-
# Compared with IKEv1, IKEv2 simplifies the
|
|
92983
|
+
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
91528
92984
|
self.ike_version = ike_version
|
|
91529
|
-
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length. The default
|
|
92985
|
+
# 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.
|
|
91530
92986
|
#
|
|
91531
|
-
#
|
|
92987
|
+
# **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
91532
92988
|
self.local_id = local_id
|
|
91533
92989
|
# The pre-shared key, which is used for identity authentication between the tunnel and the tunnel peer.
|
|
91534
92990
|
#
|
|
91535
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
91536
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
92991
|
+
# * 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: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
92992
|
+
# * 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.
|
|
91537
92993
|
#
|
|
91538
|
-
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be
|
|
92994
|
+
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be built.
|
|
91539
92995
|
self.psk = psk
|
|
91540
|
-
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length. The default
|
|
92996
|
+
# 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.
|
|
91541
92997
|
#
|
|
91542
|
-
#
|
|
92998
|
+
# **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
91543
92999
|
self.remote_id = remote_id
|
|
91544
93000
|
|
|
91545
93001
|
def validate(self):
|
|
@@ -91610,9 +93066,9 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecCo
|
|
|
91610
93066
|
#
|
|
91611
93067
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.
|
|
91612
93068
|
self.ipsec_enc_alg = ipsec_enc_alg
|
|
91613
|
-
# The SA lifetime
|
|
93069
|
+
# The SA lifetime as a result of Phase 2 negotiations. Unit: seconds Valid values: **0** to **86400**.
|
|
91614
93070
|
self.ipsec_lifetime = ipsec_lifetime
|
|
91615
|
-
# The
|
|
93071
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations.
|
|
91616
93072
|
#
|
|
91617
93073
|
# Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
|
|
91618
93074
|
self.ipsec_pfs = ipsec_pfs
|
|
@@ -91652,6 +93108,7 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecCo
|
|
|
91652
93108
|
class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
91653
93109
|
def __init__(
|
|
91654
93110
|
self,
|
|
93111
|
+
customer_gateway_id: str = None,
|
|
91655
93112
|
enable_dpd: bool = None,
|
|
91656
93113
|
enable_nat_traversal: bool = None,
|
|
91657
93114
|
remote_ca_certificate: str = None,
|
|
@@ -91661,15 +93118,17 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
91661
93118
|
tunnel_ike_config: ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
91662
93119
|
tunnel_ipsec_config: ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
91663
93120
|
):
|
|
93121
|
+
# The ID of the customer gateway associated with the tunnel.
|
|
93122
|
+
self.customer_gateway_id = customer_gateway_id
|
|
91664
93123
|
# Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
|
|
91665
93124
|
#
|
|
91666
|
-
# * **true
|
|
91667
|
-
# * **false
|
|
93125
|
+
# * **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.
|
|
93126
|
+
# * **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
|
|
91668
93127
|
self.enable_dpd = enable_dpd
|
|
91669
93128
|
# Specifies whether to enable NAT traversal for the tunnel. Valid values:
|
|
91670
93129
|
#
|
|
91671
|
-
# * **true
|
|
91672
|
-
# * **false
|
|
93130
|
+
# * **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.
|
|
93131
|
+
# * **false**: disables NAT traversal.
|
|
91673
93132
|
self.enable_nat_traversal = enable_nat_traversal
|
|
91674
93133
|
# If the VPN gateway uses an SM certificate, you can modify the CA certificate used by the IPsec peer.
|
|
91675
93134
|
#
|
|
@@ -91682,8 +93141,6 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
91682
93141
|
self.role = role
|
|
91683
93142
|
# The Border Gateway Protocol (BGP) configurations of the tunnel.
|
|
91684
93143
|
self.tunnel_bgp_config = tunnel_bgp_config
|
|
91685
|
-
# **TunnelOptionsSpecification** parameters are supported by dual-tunnel IPsec-VPN gateways. You can modify both the active and standby tunnels of the IPsec-VPN connection.
|
|
91686
|
-
#
|
|
91687
93144
|
# The tunnel ID.
|
|
91688
93145
|
self.tunnel_id = tunnel_id
|
|
91689
93146
|
# The configurations of Phase 1 negotiations.
|
|
@@ -91705,6 +93162,8 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
91705
93162
|
return _map
|
|
91706
93163
|
|
|
91707
93164
|
result = dict()
|
|
93165
|
+
if self.customer_gateway_id is not None:
|
|
93166
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
91708
93167
|
if self.enable_dpd is not None:
|
|
91709
93168
|
result['EnableDpd'] = self.enable_dpd
|
|
91710
93169
|
if self.enable_nat_traversal is not None:
|
|
@@ -91725,6 +93184,8 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
91725
93184
|
|
|
91726
93185
|
def from_map(self, m: dict = None):
|
|
91727
93186
|
m = m or dict()
|
|
93187
|
+
if m.get('CustomerGatewayId') is not None:
|
|
93188
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
91728
93189
|
if m.get('EnableDpd') is not None:
|
|
91729
93190
|
self.enable_dpd = m.get('EnableDpd')
|
|
91730
93191
|
if m.get('EnableNatTraversal') is not None:
|
|
@@ -91777,27 +93238,27 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
91777
93238
|
# * **true**\
|
|
91778
93239
|
# * **false**\
|
|
91779
93240
|
self.auto_config_route = auto_config_route
|
|
91780
|
-
# This parameter is supported
|
|
93241
|
+
# This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.
|
|
91781
93242
|
#
|
|
91782
|
-
#
|
|
93243
|
+
# BGP configuration:
|
|
91783
93244
|
#
|
|
91784
|
-
# * **BgpConfig.EnableBgp
|
|
93245
|
+
# * **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false**.
|
|
91785
93246
|
#
|
|
91786
93247
|
# * **BgpConfig.LocalAsn:** the autonomous system number (ASN) on the Alibaba Cloud side. Valid values: **1** to **4294967295**.
|
|
91787
93248
|
#
|
|
91788
|
-
# You can enter
|
|
93249
|
+
# 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.
|
|
91789
93250
|
#
|
|
91790
|
-
# For example, if you enter 123.456, the ASN is: 123 × 65536 + 456 = 8061384.
|
|
93251
|
+
# For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.
|
|
91791
93252
|
#
|
|
91792
|
-
# * **BgpConfig.TunnelCidr**:
|
|
93253
|
+
# * **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.
|
|
91793
93254
|
#
|
|
91794
|
-
# > The CIDR block of the IPsec tunnel
|
|
93255
|
+
# > The CIDR block of the IPsec tunnel for each IPsec-VPN connection on a VPN gateway must be unique.
|
|
91795
93256
|
#
|
|
91796
|
-
# * **LocalBgpIp**: the BGP
|
|
93257
|
+
# * **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.
|
|
91797
93258
|
#
|
|
91798
93259
|
# > - This parameter is required when the VPN gateway has dynamic BGP enabled.
|
|
91799
|
-
# > - Before you
|
|
91800
|
-
# > - We recommend that you use a private ASN to establish
|
|
93260
|
+
# > - 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).
|
|
93261
|
+
# > - 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.
|
|
91801
93262
|
self.bgp_config = bgp_config
|
|
91802
93263
|
# The client token that is used to ensure the idempotence of the request.
|
|
91803
93264
|
#
|
|
@@ -91838,25 +93299,27 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
91838
93299
|
# * **HealthCheckConfig.interval**: the interval between two consecutive health checks. Unit: seconds.
|
|
91839
93300
|
# * **HealthCheckConfig.retry**: the maximum number of health check retries.
|
|
91840
93301
|
self.health_check_config = health_check_config
|
|
91841
|
-
# This parameter is supported
|
|
93302
|
+
# This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.
|
|
91842
93303
|
#
|
|
91843
93304
|
# The configurations of Phase 1 negotiations:
|
|
91844
93305
|
#
|
|
91845
|
-
# * **IkeConfig.Psk**:
|
|
93306
|
+
# * **IkeConfig.Psk**: The pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
91846
93307
|
#
|
|
91847
|
-
# *
|
|
91848
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
93308
|
+
# * 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: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
93309
|
+
# * 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.
|
|
91849
93310
|
#
|
|
91850
|
-
#
|
|
93311
|
+
# **\
|
|
93312
|
+
#
|
|
93313
|
+
# **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.
|
|
91851
93314
|
#
|
|
91852
93315
|
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**.
|
|
91853
93316
|
#
|
|
91854
|
-
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and
|
|
93317
|
+
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
91855
93318
|
#
|
|
91856
93319
|
# * **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**.
|
|
91857
93320
|
#
|
|
91858
|
-
# * **main
|
|
91859
|
-
# * **aggressive
|
|
93321
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
93322
|
+
# * **aggressive:** This mode supports faster negotiations and a higher success rate.
|
|
91860
93323
|
#
|
|
91861
93324
|
# * **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.
|
|
91862
93325
|
#
|
|
@@ -91866,13 +93329,13 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
91866
93329
|
#
|
|
91867
93330
|
# Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.
|
|
91868
93331
|
#
|
|
91869
|
-
# * **IkeConfig.IkePfs**: the Diffie-Hellman
|
|
93332
|
+
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
91870
93333
|
#
|
|
91871
|
-
# * **IkeConfig.IkeLifetime**: the
|
|
93334
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0 to 86400**.
|
|
91872
93335
|
#
|
|
91873
|
-
# * **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.
|
|
93336
|
+
# * **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.
|
|
91874
93337
|
#
|
|
91875
|
-
# * **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.
|
|
93338
|
+
# * **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.
|
|
91876
93339
|
self.ike_config = ike_config
|
|
91877
93340
|
# You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.
|
|
91878
93341
|
#
|
|
@@ -91930,7 +93393,7 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
91930
93393
|
self.resource_owner_id = resource_owner_id
|
|
91931
93394
|
# The tunnel configurations.
|
|
91932
93395
|
#
|
|
91933
|
-
# You can specify
|
|
93396
|
+
# 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.
|
|
91934
93397
|
self.tunnel_options_specification = tunnel_options_specification
|
|
91935
93398
|
# The ID of the IPsec-VPN connection.
|
|
91936
93399
|
#
|