alibabacloud-vpc20160428 6.11.9__py3-none-any.whl → 6.12.0__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.
@@ -4819,17 +4819,20 @@ class AssociateVpcCidrBlockRequest(TeaModel):
4819
4819
  secondary_cidr_mask: int = None,
4820
4820
  vpc_id: str = None,
4821
4821
  ):
4822
- # The IPv6 CIDR block to be added.
4822
+ # The IPv6 CIDR block that you want to add to the VPC.
4823
4823
  #
4824
- # > You must and can specify only one of **SecondaryCidrBlock** and **Ipv6CidrBlock**.
4824
+ # > You can specify only one of **SecondaryCidrBlock** and **Ipv6CidrBlock**.
4825
4825
  self.ipv_6cidr_block = ipv_6cidr_block
4826
4826
  # The version of the IP address. Valid values:
4827
4827
  #
4828
4828
  # * **IPV4**: the IPv4 address.
4829
4829
  # * **IPV6**: the IPv6 address. If you set **IpVersion** to **IPV6** and do not specify **SecondaryCidrBlock**, you can add a secondary IPv6 CIDR block to the VPC.
4830
4830
  self.ip_version = ip_version
4831
- # The ID of the IP Address Manager (IPAM) pool that contains IPv4 addresses.
4831
+ # The ID of the IPAM pool.
4832
4832
  self.ipam_pool_id = ipam_pool_id
4833
+ # Add an IPv6 CIDR block from the IPAM pool to the VPC by entering a mask.
4834
+ #
4835
+ # > To add an IPv6 CIDR block to a VPC, specify at least one of the IPv6CidrBlock and Ipv6CidrMask parameters.
4833
4836
  self.ipv_6cidr_mask = ipv_6cidr_mask
4834
4837
  # The type of the IPv6 CIDR block. Valid values:
4835
4838
  #
@@ -4860,10 +4863,9 @@ class AssociateVpcCidrBlockRequest(TeaModel):
4860
4863
  #
4861
4864
  # > You must and can specify only one of **SecondaryCidrBlock** and **Ipv6CidrBlock**.
4862
4865
  self.secondary_cidr_block = secondary_cidr_block
4863
- # Add secondary CIDR blocks to the VPC from the IPAM pool by entering a mask.
4866
+ # Add an IPv4 CIDR block from the IPAM pool to the VPC by specifying a mask.
4864
4867
  #
4865
- # >
4866
- # > To add a secondary CIDR block to the VPC using the specified IPAM pool, you must specify at least one of the parameters, SecondaryCidrBlock or SecondaryCidrMask.
4868
+ # > If you use an IPAM pool, you must specify at least one of SecondaryCidrBlock and SecondaryCidrMask.
4867
4869
  self.secondary_cidr_mask = secondary_cidr_mask
4868
4870
  # The ID of the VPC to which you want to add a secondary CIDR block.
4869
4871
  #
@@ -13146,7 +13148,9 @@ class CreateNatGatewayRequest(TeaModel):
13146
13148
  icmp_reply_enabled: bool = None,
13147
13149
  instance_charge_type: str = None,
13148
13150
  internet_charge_type: str = None,
13151
+ ipv_4prefix: str = None,
13149
13152
  name: str = None,
13153
+ nat_ip: str = None,
13150
13154
  nat_type: str = None,
13151
13155
  network_type: str = None,
13152
13156
  owner_account: str = None,
@@ -13199,12 +13203,14 @@ class CreateNatGatewayRequest(TeaModel):
13199
13203
  self.instance_charge_type = instance_charge_type
13200
13204
  # The metering method of the NAT gateway. Set the value to **PayByLcu**, which specifies the pay-by-CU metering method.
13201
13205
  self.internet_charge_type = internet_charge_type
13206
+ self.ipv_4prefix = ipv_4prefix
13202
13207
  # The name of the NAT gateway.
13203
13208
  #
13204
13209
  # 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.
13205
13210
  #
13206
13211
  # If this parameter is not set, the system assigns a default name to the NAT gateway.
13207
13212
  self.name = name
13213
+ self.nat_ip = nat_ip
13208
13214
  # The type of NAT gateway. Set the value to **Enhanced**, which specifies enhanced NAT gateway.
13209
13215
  self.nat_type = nat_type
13210
13216
  # The network type of the NAT gateway. Valid values:
@@ -13280,8 +13286,12 @@ class CreateNatGatewayRequest(TeaModel):
13280
13286
  result['InstanceChargeType'] = self.instance_charge_type
13281
13287
  if self.internet_charge_type is not None:
13282
13288
  result['InternetChargeType'] = self.internet_charge_type
13289
+ if self.ipv_4prefix is not None:
13290
+ result['Ipv4Prefix'] = self.ipv_4prefix
13283
13291
  if self.name is not None:
13284
13292
  result['Name'] = self.name
13293
+ if self.nat_ip is not None:
13294
+ result['NatIp'] = self.nat_ip
13285
13295
  if self.nat_type is not None:
13286
13296
  result['NatType'] = self.nat_type
13287
13297
  if self.network_type is not None:
@@ -13335,8 +13345,12 @@ class CreateNatGatewayRequest(TeaModel):
13335
13345
  self.instance_charge_type = m.get('InstanceChargeType')
13336
13346
  if m.get('InternetChargeType') is not None:
13337
13347
  self.internet_charge_type = m.get('InternetChargeType')
13348
+ if m.get('Ipv4Prefix') is not None:
13349
+ self.ipv_4prefix = m.get('Ipv4Prefix')
13338
13350
  if m.get('Name') is not None:
13339
13351
  self.name = m.get('Name')
13352
+ if m.get('NatIp') is not None:
13353
+ self.nat_ip = m.get('NatIp')
13340
13354
  if m.get('NatType') is not None:
13341
13355
  self.nat_type = m.get('NatType')
13342
13356
  if m.get('NetworkType') is not None:
@@ -13418,7 +13432,9 @@ class CreateNatGatewayShrinkRequest(TeaModel):
13418
13432
  icmp_reply_enabled: bool = None,
13419
13433
  instance_charge_type: str = None,
13420
13434
  internet_charge_type: str = None,
13435
+ ipv_4prefix: str = None,
13421
13436
  name: str = None,
13437
+ nat_ip: str = None,
13422
13438
  nat_type: str = None,
13423
13439
  network_type: str = None,
13424
13440
  owner_account: str = None,
@@ -13471,12 +13487,14 @@ class CreateNatGatewayShrinkRequest(TeaModel):
13471
13487
  self.instance_charge_type = instance_charge_type
13472
13488
  # The metering method of the NAT gateway. Set the value to **PayByLcu**, which specifies the pay-by-CU metering method.
13473
13489
  self.internet_charge_type = internet_charge_type
13490
+ self.ipv_4prefix = ipv_4prefix
13474
13491
  # The name of the NAT gateway.
13475
13492
  #
13476
13493
  # 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.
13477
13494
  #
13478
13495
  # If this parameter is not set, the system assigns a default name to the NAT gateway.
13479
13496
  self.name = name
13497
+ self.nat_ip = nat_ip
13480
13498
  # The type of NAT gateway. Set the value to **Enhanced**, which specifies enhanced NAT gateway.
13481
13499
  self.nat_type = nat_type
13482
13500
  # The network type of the NAT gateway. Valid values:
@@ -13550,8 +13568,12 @@ class CreateNatGatewayShrinkRequest(TeaModel):
13550
13568
  result['InstanceChargeType'] = self.instance_charge_type
13551
13569
  if self.internet_charge_type is not None:
13552
13570
  result['InternetChargeType'] = self.internet_charge_type
13571
+ if self.ipv_4prefix is not None:
13572
+ result['Ipv4Prefix'] = self.ipv_4prefix
13553
13573
  if self.name is not None:
13554
13574
  result['Name'] = self.name
13575
+ if self.nat_ip is not None:
13576
+ result['NatIp'] = self.nat_ip
13555
13577
  if self.nat_type is not None:
13556
13578
  result['NatType'] = self.nat_type
13557
13579
  if self.network_type is not None:
@@ -13604,8 +13626,12 @@ class CreateNatGatewayShrinkRequest(TeaModel):
13604
13626
  self.instance_charge_type = m.get('InstanceChargeType')
13605
13627
  if m.get('InternetChargeType') is not None:
13606
13628
  self.internet_charge_type = m.get('InternetChargeType')
13629
+ if m.get('Ipv4Prefix') is not None:
13630
+ self.ipv_4prefix = m.get('Ipv4Prefix')
13607
13631
  if m.get('Name') is not None:
13608
13632
  self.name = m.get('Name')
13633
+ if m.get('NatIp') is not None:
13634
+ self.nat_ip = m.get('NatIp')
13609
13635
  if m.get('NatType') is not None:
13610
13636
  self.nat_type = m.get('NatType')
13611
13637
  if m.get('NetworkType') is not None:
@@ -13831,6 +13857,8 @@ class CreateNatIpRequest(TeaModel):
13831
13857
  self,
13832
13858
  client_token: str = None,
13833
13859
  dry_run: bool = None,
13860
+ ipv_4prefix: str = None,
13861
+ ipv_4prefix_count: int = None,
13834
13862
  nat_gateway_id: str = None,
13835
13863
  nat_ip: str = None,
13836
13864
  nat_ip_cidr: str = None,
@@ -13853,6 +13881,8 @@ class CreateNatIpRequest(TeaModel):
13853
13881
  # * **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.
13854
13882
  # * **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.
13855
13883
  self.dry_run = dry_run
13884
+ self.ipv_4prefix = ipv_4prefix
13885
+ self.ipv_4prefix_count = ipv_4prefix_count
13856
13886
  # The ID of the Virtual Private Cloud (VPC) NAT gateway for which you want to create the NAT IP address.
13857
13887
  #
13858
13888
  # This parameter is required.
@@ -13897,6 +13927,10 @@ class CreateNatIpRequest(TeaModel):
13897
13927
  result['ClientToken'] = self.client_token
13898
13928
  if self.dry_run is not None:
13899
13929
  result['DryRun'] = self.dry_run
13930
+ if self.ipv_4prefix is not None:
13931
+ result['Ipv4Prefix'] = self.ipv_4prefix
13932
+ if self.ipv_4prefix_count is not None:
13933
+ result['Ipv4PrefixCount'] = self.ipv_4prefix_count
13900
13934
  if self.nat_gateway_id is not None:
13901
13935
  result['NatGatewayId'] = self.nat_gateway_id
13902
13936
  if self.nat_ip is not None:
@@ -13925,6 +13959,10 @@ class CreateNatIpRequest(TeaModel):
13925
13959
  self.client_token = m.get('ClientToken')
13926
13960
  if m.get('DryRun') is not None:
13927
13961
  self.dry_run = m.get('DryRun')
13962
+ if m.get('Ipv4Prefix') is not None:
13963
+ self.ipv_4prefix = m.get('Ipv4Prefix')
13964
+ if m.get('Ipv4PrefixCount') is not None:
13965
+ self.ipv_4prefix_count = m.get('Ipv4PrefixCount')
13928
13966
  if m.get('NatGatewayId') is not None:
13929
13967
  self.nat_gateway_id = m.get('NatGatewayId')
13930
13968
  if m.get('NatIp') is not None:
@@ -13951,10 +13989,12 @@ class CreateNatIpRequest(TeaModel):
13951
13989
  class CreateNatIpResponseBody(TeaModel):
13952
13990
  def __init__(
13953
13991
  self,
13992
+ ipv_4prefix: str = None,
13954
13993
  nat_ip: str = None,
13955
13994
  nat_ip_id: str = None,
13956
13995
  request_id: str = None,
13957
13996
  ):
13997
+ self.ipv_4prefix = ipv_4prefix
13958
13998
  # The NAT IP address.
13959
13999
  self.nat_ip = nat_ip
13960
14000
  # The ID of the NAT IP address.
@@ -13971,6 +14011,8 @@ class CreateNatIpResponseBody(TeaModel):
13971
14011
  return _map
13972
14012
 
13973
14013
  result = dict()
14014
+ if self.ipv_4prefix is not None:
14015
+ result['Ipv4Prefix'] = self.ipv_4prefix
13974
14016
  if self.nat_ip is not None:
13975
14017
  result['NatIp'] = self.nat_ip
13976
14018
  if self.nat_ip_id is not None:
@@ -13981,6 +14023,8 @@ class CreateNatIpResponseBody(TeaModel):
13981
14023
 
13982
14024
  def from_map(self, m: dict = None):
13983
14025
  m = m or dict()
14026
+ if m.get('Ipv4Prefix') is not None:
14027
+ self.ipv_4prefix = m.get('Ipv4Prefix')
13984
14028
  if m.get('NatIp') is not None:
13985
14029
  self.nat_ip = m.get('NatIp')
13986
14030
  if m.get('NatIpId') is not None:
@@ -20858,7 +20902,9 @@ class CreateVpcRequest(TeaModel):
20858
20902
  self.ipv_4ipam_pool_id = ipv_4ipam_pool_id
20859
20903
  # The IPv6 CIDR block of the VPC. If you enable IPv6 for a VPC, the system allocates an IPv6 CIDR block. To specify an IPv6 CIDR block, you must call the [AllocateVpcIpv6Cidr](https://help.aliyun.com/document_detail/448916.html) operation to reserve the specified IPv6 CIDR block.
20860
20904
  self.ipv_6cidr_block = ipv_6cidr_block
20905
+ # Add an IPv6 CIDR block from the IPAM pool to the VPC by entering a mask.
20861
20906
  self.ipv_6cidr_mask = ipv_6cidr_mask
20907
+ # The ID of the IP Address Manager (IPAM) pool of the IPv6 type.
20862
20908
  self.ipv_6ipam_pool_id = ipv_6ipam_pool_id
20863
20909
  # The type of the IPv6 CIDR block of the VPC. Valid values:
20864
20910
  #
@@ -27346,6 +27392,9 @@ class DeleteIpv4GatewayRequest(TeaModel):
27346
27392
  # * **true**: performs only a dry run, without performing the actual request. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.
27347
27393
  # * **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.
27348
27394
  self.dry_run = dry_run
27395
+ # Select the public network mode of the VPC after deleting the IPv4 gateway. The values are:
27396
+ # - **private**: Default value, after deleting the IPv4 gateway, the VPC will become a pure private VPC without public network access capability.
27397
+ # - **public**: After deleting the IPv4 gateway, the VPC\\"s public network access is no longer centrally controlled by the IPv4 gateway, and instances with public IPs bound can access the public network by default.
27349
27398
  self.internet_mode = internet_mode
27350
27399
  # The ID of the IPv4 gateway that you want to delete.
27351
27400
  #
@@ -28097,6 +28146,8 @@ class DeleteNatIpRequest(TeaModel):
28097
28146
  self,
28098
28147
  client_token: str = None,
28099
28148
  dry_run: bool = None,
28149
+ ipv_4prefix: str = None,
28150
+ nat_gateway_id: str = None,
28100
28151
  nat_ip_id: str = None,
28101
28152
  owner_account: str = None,
28102
28153
  owner_id: int = None,
@@ -28115,9 +28166,9 @@ class DeleteNatIpRequest(TeaModel):
28115
28166
  # * **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.
28116
28167
  # * **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.
28117
28168
  self.dry_run = dry_run
28169
+ self.ipv_4prefix = ipv_4prefix
28170
+ self.nat_gateway_id = nat_gateway_id
28118
28171
  # The ID of the NAT IP address that you want to delete.
28119
- #
28120
- # This parameter is required.
28121
28172
  self.nat_ip_id = nat_ip_id
28122
28173
  self.owner_account = owner_account
28123
28174
  self.owner_id = owner_id
@@ -28143,6 +28194,10 @@ class DeleteNatIpRequest(TeaModel):
28143
28194
  result['ClientToken'] = self.client_token
28144
28195
  if self.dry_run is not None:
28145
28196
  result['DryRun'] = self.dry_run
28197
+ if self.ipv_4prefix is not None:
28198
+ result['Ipv4Prefix'] = self.ipv_4prefix
28199
+ if self.nat_gateway_id is not None:
28200
+ result['NatGatewayId'] = self.nat_gateway_id
28146
28201
  if self.nat_ip_id is not None:
28147
28202
  result['NatIpId'] = self.nat_ip_id
28148
28203
  if self.owner_account is not None:
@@ -28163,6 +28218,10 @@ class DeleteNatIpRequest(TeaModel):
28163
28218
  self.client_token = m.get('ClientToken')
28164
28219
  if m.get('DryRun') is not None:
28165
28220
  self.dry_run = m.get('DryRun')
28221
+ if m.get('Ipv4Prefix') is not None:
28222
+ self.ipv_4prefix = m.get('Ipv4Prefix')
28223
+ if m.get('NatGatewayId') is not None:
28224
+ self.nat_gateway_id = m.get('NatGatewayId')
28166
28225
  if m.get('NatIpId') is not None:
28167
28226
  self.nat_ip_id = m.get('NatIpId')
28168
28227
  if m.get('OwnerAccount') is not None:
@@ -29092,6 +29151,10 @@ class DeleteRouteEntriesRequest(TeaModel):
29092
29151
  resource_owner_id: int = None,
29093
29152
  route_entries: List[DeleteRouteEntriesRequestRouteEntries] = None,
29094
29153
  ):
29154
+ # Specifies whether to perform a dry run, without performing the actual request. Valid values:
29155
+ #
29156
+ # * **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.
29157
+ # * **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.
29095
29158
  self.dry_run = dry_run
29096
29159
  self.owner_account = owner_account
29097
29160
  self.owner_id = owner_id
@@ -29364,6 +29427,11 @@ class DeleteRouteEntryRequest(TeaModel):
29364
29427
  ):
29365
29428
  # The destination CIDR block of the route. Only IPv4 CIDR blocks, IPv6 CIDR blocks, and prefix lists are supported.
29366
29429
  self.destination_cidr_block = destination_cidr_block
29430
+ # Specifies whether to perform only a dry run, without performing the actual request. Valid values:
29431
+ #
29432
+ # **true**: sends a request without deleting the route entry. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.
29433
+ #
29434
+ # **false** (default): performs a dry run and the actual request. If the request passes the check, a 2xx HTTP status code is returned and the route entry is deleted.
29367
29435
  self.dry_run = dry_run
29368
29436
  # The ID of the next hop.
29369
29437
  #
@@ -36766,7 +36834,8 @@ class DescribeEipAddressesResponseBodyEipAddressesEipAddressOperationLocksLockRe
36766
36834
  # The reason why the EIP is locked. Valid values:
36767
36835
  #
36768
36836
  # * **financial**: The EIP is locked due to overdue payments.
36769
- # * **security**: The EIP is locked for security reasons.
36837
+ # * **security**: The instance is locked for security purposes.
36838
+ # * **sharedPool**: The shared IP address pool is locked due to overdue payments.
36770
36839
  self.lock_reason = lock_reason
36771
36840
 
36772
36841
  def validate(self):
@@ -36984,10 +37053,11 @@ class DescribeEipAddressesResponseBodyEipAddressesEipAddress(TeaModel):
36984
37053
  # * **CloudBox** Only cloud box users can select this type.
36985
37054
  # * **Default** (default)
36986
37055
  self.biz_type = biz_type
36987
- # The service state of the EIP. Valid values:
37056
+ # The service status of the EIP. Valid values:
36988
37057
  #
36989
37058
  # * **Normal**\
36990
- # * **FinancialLocked**\
37059
+ # * **OperationLock**\
37060
+ # * **Unactivated**\
36991
37061
  self.business_status = business_status
36992
37062
  # The billing method of the EIP. Valid values:
36993
37063
  #
@@ -40256,13 +40326,13 @@ class DescribeFlowLogsRequestTags(TeaModel):
40256
40326
  key: str = None,
40257
40327
  value: str = None,
40258
40328
  ):
40259
- # The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.
40329
+ # The key of the tag. Up to 20 tag keys are supported. If you need to pass this value, it cannot be an empty string.
40260
40330
  #
40261
- # The tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.
40331
+ # A tag key can have up to 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.
40262
40332
  self.key = key
40263
- # The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.
40333
+ # The value of the tag. Up to 20 tag values are supported. If you need to pass this value, it can be an empty string.
40264
40334
  #
40265
- # The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. The tag value cannot contain `http://` or `https://`.
40335
+ # A tag value can have up to 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.
40266
40336
  self.value = value
40267
40337
 
40268
40338
  def validate(self):
@@ -40314,57 +40384,54 @@ class DescribeFlowLogsRequest(TeaModel):
40314
40384
  ):
40315
40385
  # The description of the flow log.
40316
40386
  #
40317
- # The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.
40387
+ # The description must be 1 to 256 characters long and cannot start with `http://` or `https://`.
40318
40388
  self.description = description
40319
40389
  # The ID of the flow log.
40320
40390
  self.flow_log_id = flow_log_id
40321
40391
  # The name of the flow log.
40322
40392
  #
40323
- # The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.
40393
+ # The name must be 1 to 128 characters long and cannot start with `http://` or `https://`.
40324
40394
  self.flow_log_name = flow_log_name
40325
- # The Logstore that stores the captured traffic data.
40395
+ # The Logstore that stores the captured traffic.
40326
40396
  self.log_store_name = log_store_name
40327
40397
  self.owner_account = owner_account
40328
40398
  self.owner_id = owner_id
40329
- # The number of the page to return. Default value: **1**.
40399
+ # The page number, with a default value of **1**.
40330
40400
  self.page_number = page_number
40331
- # The number of entries to return on each page. Maximum value: **50**. Default value: **20**.
40401
+ # The number of items per page in a paginated query, with a maximum value of **50** and a default value of **20**.
40332
40402
  self.page_size = page_size
40333
- # The project that manages the captured traffic data.
40403
+ # The Project that manages the captured traffic.
40334
40404
  self.project_name = project_name
40335
40405
  # The region ID of the flow log.
40336
40406
  #
40337
- # You can call the [DescribeRegions](https://help.aliyun.com/document_detail/36063.html) operation to query the most recent region list.
40407
+ # You can obtain the region ID by calling the [DescribeRegions](https://help.aliyun.com/document_detail/36063.html) interface.
40338
40408
  #
40339
40409
  # This parameter is required.
40340
40410
  self.region_id = region_id
40341
- # The ID of the resource group to which the flow log belongs.
40411
+ # The resource group ID of the flow log.
40342
40412
  self.resource_group_id = resource_group_id
40343
- # The ID of the resource from which traffic is captured.
40413
+ # The resource ID of the traffic to capture.
40344
40414
  self.resource_id = resource_id
40345
40415
  self.resource_owner_account = resource_owner_account
40346
40416
  self.resource_owner_id = resource_owner_id
40347
- # The type of resource from which traffic is captured. Valid values:
40348
- #
40349
- # * **NetworkInterface**: elastic network interface (ENI)
40350
- # * **VSwitch**: all ENIs in a vSwitch
40351
- # * **VPC**: all ENIs in a virtual private cloud (VPC)
40417
+ # The resource type of the traffic to capture. Values:
40418
+ # - **NetworkInterface**: Elastic Network Interface (ENI).
40419
+ # - **VSwitch**: All ENIs within a VSwitch.
40420
+ # - **VPC**: All ENIs within a VPC.
40352
40421
  self.resource_type = resource_type
40353
- # The status of the flow log. Valid values:
40354
- #
40355
- # * **Active**\
40356
- # * **Activating**\
40357
- # * **Inactive**\
40422
+ # The status of the flow log. Values:
40423
+ # - **Active**: The flow log is in an active state.
40424
+ # - **Activating**: The flow log is being created.
40425
+ # - **Inactive**: The flow log is in an inactive state.
40358
40426
  self.status = status
40359
40427
  # The list of tags.
40360
40428
  self.tags = tags
40361
- # The type of traffic that is captured. Valid values:
40362
- #
40363
- # * **All**: all traffic
40364
- # * **Allow**: traffic that is allowed by access control
40365
- # * **Drop**: traffic that is denied by access control
40429
+ # The type of traffic to collect. Values:
40430
+ # - **All**: All traffic.
40431
+ # - **Allow**: Traffic allowed by access control.
40432
+ # - **Drop**: Traffic denied by access control.
40366
40433
  self.traffic_type = traffic_type
40367
- # The ID of the VPC to which the flow log belongs.
40434
+ # The ID of the VPC for which you want to view the flow log.
40368
40435
  self.vpc_id = vpc_id
40369
40436
 
40370
40437
  def validate(self):
@@ -40473,9 +40540,9 @@ class DescribeFlowLogsResponseBodyFlowLogsFlowLogTagsTag(TeaModel):
40473
40540
  key: str = None,
40474
40541
  value: str = None,
40475
40542
  ):
40476
- # The key of tag N.
40543
+ # Tag key.
40477
40544
  self.key = key
40478
- # The value of tag N.
40545
+ # Tag value.
40479
40546
  self.value = value
40480
40547
 
40481
40548
  def validate(self):
@@ -40590,73 +40657,70 @@ class DescribeFlowLogsResponseBodyFlowLogsFlowLog(TeaModel):
40590
40657
  ):
40591
40658
  # The sampling interval of the flow log. Unit: minutes.
40592
40659
  self.aggregation_interval = aggregation_interval
40593
- # The business status of the flow log. Valid values:
40660
+ # The business status. Values:
40594
40661
  #
40595
- # * **Normal**\
40596
- # * **FinancialLocked**\
40662
+ # - **Normal**: Normal status.
40663
+ # - **FinancialLocked**: Locked due to unpaid bills.
40597
40664
  self.business_status = business_status
40598
- # The time when the flow log was created.
40665
+ # The creation time of the flow log.
40599
40666
  self.creation_time = creation_time
40600
40667
  # The description of the flow log.
40601
40668
  self.description = description
40602
- # If the flow log failed to be delivered, you can troubleshoot based on the following error messages that may be returned:
40603
- #
40604
- # * **UnavaliableTarget**: The Logstore of SLS is unavailable and cannot receive logs. Check whether the Logstore is available.
40605
- # * **ProjectNotExist**: The project of SLS does not exist. We recommend that you delete the project and create a new one.
40606
- # * **UnknownError**: An internal error occurred. Try again later.
40669
+ # When log delivery fails, you can troubleshoot based on the error messages. Possible error messages include:
40670
+ # - **UnavaliableTarget**: The Logstore of the Log Service SLS is unavailable and cannot receive logs. It is recommended to check if the corresponding Logstore actually exists and is accessible.
40671
+ # - **ProjectNotExist**: The Project of the Log Service SLS does not exist. It is suggested to delete the original flow log and create a new one pointing to an existing Project.
40672
+ # - **UnknownError**: An internal error has occurred. Please try again later.
40607
40673
  self.flow_log_deliver_error_message = flow_log_deliver_error_message
40608
- # Indicates whether the flow log is delivered. Valid values:
40609
- # - **SUCCESS**\
40610
- # - **FAILED**\
40674
+ # The delivery status of the flow log, with values:
40675
+ # - **SUCCESS**: Delivery succeeded.
40676
+ # - **FAILED**: Delivery failed.
40611
40677
  self.flow_log_deliver_status = flow_log_deliver_status
40612
40678
  # The ID of the flow log.
40613
40679
  self.flow_log_id = flow_log_id
40614
40680
  # The name of the flow log.
40615
40681
  self.flow_log_name = flow_log_name
40682
+ # The type of IP address for collecting flow log traffic.
40616
40683
  self.ip_version = ip_version
40617
- # The Logstore that stores the captured traffic data.
40684
+ # The Logstore where the captured traffic is stored.
40618
40685
  self.log_store_name = log_store_name
40619
- # The project that manages the captured traffic data.
40686
+ # The Project that manages the captured traffic.
40620
40687
  self.project_name = project_name
40621
- # The region ID of the flow log.
40688
+ # The region ID to which the flow log belongs.
40622
40689
  self.region_id = region_id
40623
40690
  # The ID of the resource group to which the flow log belongs.
40624
40691
  self.resource_group_id = resource_group_id
40625
- # The ID of the resource from which traffic is captured.
40692
+ # The resource ID of the traffic captured by the flow log.
40626
40693
  self.resource_id = resource_id
40627
- # The type of the resource from which traffic is captured. Valid values:
40694
+ # The resource type of the traffic captured by the flow log:
40628
40695
  #
40629
- # * **NetworkInterface**: ENI
40630
- # * **VSwitch**: all ENIs in a vSwitch
40631
- # * **VPC**: all ENIs in a VPC
40696
+ # - **NetworkInterface**: Elastic network interface.
40697
+ # - **VSwitch**: All elastic network interfaces within a VSwitch.
40698
+ # - **VPC**: All elastic network interfaces within a VPC.
40632
40699
  self.resource_type = resource_type
40633
40700
  # The hosting type of the cloud service.
40634
- #
40635
- # * This parameter can be empty, which indicates that the flow log is created by the user.
40636
- # * If this parameter is not empty, the value is set to **sls**. The value sls indicates that the flow log is created in the Simple Log Service (SLS) console.
40637
- #
40638
- # > A flow log that is created in the SLS console can be displayed in the VPC list. However, you cannot modify, start, stop, or delete the flow log in the VPC console. If you want to manage the flow log, you can log on to the [SLS console](https://sls.console.aliyun.com) and perform required operations.
40701
+ # - It can be empty, indicating that the flow log was created by the user.
40702
+ # - When not empty, the only supported value is: **sls**, indicating that the flow log was created through the Log Service console.
40703
+ # > Flow log instances created through the Log Service console can be displayed in the VPC list, but they cannot be modified, started, stopped, or deleted within the VPC. If you need to perform these operations on the flow log, you can log in to the [Log Service console](https://sls.console.aliyun.com) to modify, start, stop, or delete it.
40639
40704
  self.service_type = service_type
40640
- # The status of the flow log. Valid values:
40705
+ # The status of the flow log. Values:
40706
+ # - **Active**: The flow log is in an active state.
40641
40707
  #
40642
- # * **Active**\
40643
- # * **Activating**\
40644
- # * **Inactive**\
40708
+ # - **Activating**: The flow log is being created.
40709
+ #
40710
+ # - **Inactive**: The flow log is in an inactive state.
40645
40711
  self.status = status
40646
- # The list of tags.
40712
+ # List of tags
40647
40713
  self.tags = tags
40648
- # The sampling scope of the traffic that is collected. Valid values:
40649
- #
40650
- # * **all** (default value): all traffic
40651
- # * **internetGateway**: Internet traffic
40714
+ # The path of the captured traffic. Values:
40652
40715
  #
40653
- # > By default, the traffic path feature is unavailable. To use this feature, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.11182188.console-base-top.dworkorder.18ae4882n3v6ZW#/ticket/createIndex).
40716
+ # - **all**: Indicates full collection.
40717
+ # - **internetGateway**: Indicates public network traffic collection.
40654
40718
  self.traffic_path = traffic_path
40655
- # The type of traffic that is captured by the flow log. Valid values:
40719
+ # The type of traffic captured by the flow log. Values:
40656
40720
  #
40657
- # * **All**: all traffic
40658
- # * **Allow**: traffic that is allowed by access control
40659
- # * **Drop**: traffic that is denied by access control
40721
+ # - **All**: All traffic.
40722
+ # - **Allow**: Traffic allowed by access control.
40723
+ # - **Drop**: Traffic denied by access control.
40660
40724
  self.traffic_type = traffic_type
40661
40725
 
40662
40726
  def validate(self):
@@ -40805,20 +40869,19 @@ class DescribeFlowLogsResponseBody(TeaModel):
40805
40869
  success: str = None,
40806
40870
  total_count: str = None,
40807
40871
  ):
40808
- # The information about the flow logs.
40872
+ # List of flow logs.
40809
40873
  self.flow_logs = flow_logs
40810
- # The number of the returned page.
40874
+ # The page number.
40811
40875
  self.page_number = page_number
40812
- # The number of entries per page.
40876
+ # The number of items per page in a paginated query.
40813
40877
  self.page_size = page_size
40814
40878
  # The request ID.
40815
40879
  self.request_id = request_id
40816
- # Indicates whether the operation is successful. Valid values:
40817
- #
40818
- # * **true**\
40819
- # * **false**\
40880
+ # Indicates whether the call was successful. Values:
40881
+ # - **true**: The call was successful.
40882
+ # - **false**: The call failed.
40820
40883
  self.success = success
40821
- # The number of flow logs that are queried.
40884
+ # The number of entries in the queried flow log list.
40822
40885
  self.total_count = total_count
40823
40886
 
40824
40887
  def validate(self):
@@ -46997,6 +47060,68 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpLists(TeaModel):
46997
47060
  return self
46998
47061
 
46999
47062
 
47063
+ class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpPrefixListIpPrefixList(TeaModel):
47064
+ def __init__(
47065
+ self,
47066
+ ip_prefix: str = None,
47067
+ ):
47068
+ self.ip_prefix = ip_prefix
47069
+
47070
+ def validate(self):
47071
+ pass
47072
+
47073
+ def to_map(self):
47074
+ _map = super().to_map()
47075
+ if _map is not None:
47076
+ return _map
47077
+
47078
+ result = dict()
47079
+ if self.ip_prefix is not None:
47080
+ result['IpPrefix'] = self.ip_prefix
47081
+ return result
47082
+
47083
+ def from_map(self, m: dict = None):
47084
+ m = m or dict()
47085
+ if m.get('IpPrefix') is not None:
47086
+ self.ip_prefix = m.get('IpPrefix')
47087
+ return self
47088
+
47089
+
47090
+ class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpPrefixList(TeaModel):
47091
+ def __init__(
47092
+ self,
47093
+ ip_prefix_list: List[DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpPrefixListIpPrefixList] = None,
47094
+ ):
47095
+ self.ip_prefix_list = ip_prefix_list
47096
+
47097
+ def validate(self):
47098
+ if self.ip_prefix_list:
47099
+ for k in self.ip_prefix_list:
47100
+ if k:
47101
+ k.validate()
47102
+
47103
+ def to_map(self):
47104
+ _map = super().to_map()
47105
+ if _map is not None:
47106
+ return _map
47107
+
47108
+ result = dict()
47109
+ result['IpPrefixList'] = []
47110
+ if self.ip_prefix_list is not None:
47111
+ for k in self.ip_prefix_list:
47112
+ result['IpPrefixList'].append(k.to_map() if k else None)
47113
+ return result
47114
+
47115
+ def from_map(self, m: dict = None):
47116
+ m = m or dict()
47117
+ self.ip_prefix_list = []
47118
+ if m.get('IpPrefixList') is not None:
47119
+ for k in m.get('IpPrefixList'):
47120
+ temp_model = DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpPrefixListIpPrefixList()
47121
+ self.ip_prefix_list.append(temp_model.from_map(k))
47122
+ return self
47123
+
47124
+
47000
47125
  class DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayNatGatewayPrivateInfo(TeaModel):
47001
47126
  def __init__(
47002
47127
  self,
@@ -47193,6 +47318,7 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
47193
47318
  instance_charge_type: str = None,
47194
47319
  internet_charge_type: str = None,
47195
47320
  ip_lists: DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpLists = None,
47321
+ ip_prefix_list: DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpPrefixList = None,
47196
47322
  name: str = None,
47197
47323
  nat_gateway_id: str = None,
47198
47324
  nat_gateway_private_info: DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayNatGatewayPrivateInfo = None,
@@ -47262,6 +47388,7 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
47262
47388
  self.internet_charge_type = internet_charge_type
47263
47389
  # The list of elastic IP addresses (EIPs) that are associated with the Internet NAT gateway.
47264
47390
  self.ip_lists = ip_lists
47391
+ self.ip_prefix_list = ip_prefix_list
47265
47392
  # The name of the NAT gateway.
47266
47393
  self.name = name
47267
47394
  # The ID of the NAT gateway.
@@ -47324,6 +47451,8 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
47324
47451
  self.full_nat_table_ids.validate()
47325
47452
  if self.ip_lists:
47326
47453
  self.ip_lists.validate()
47454
+ if self.ip_prefix_list:
47455
+ self.ip_prefix_list.validate()
47327
47456
  if self.nat_gateway_private_info:
47328
47457
  self.nat_gateway_private_info.validate()
47329
47458
  if self.snat_table_ids:
@@ -47369,6 +47498,8 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
47369
47498
  result['InternetChargeType'] = self.internet_charge_type
47370
47499
  if self.ip_lists is not None:
47371
47500
  result['IpLists'] = self.ip_lists.to_map()
47501
+ if self.ip_prefix_list is not None:
47502
+ result['IpPrefixList'] = self.ip_prefix_list.to_map()
47372
47503
  if self.name is not None:
47373
47504
  result['Name'] = self.name
47374
47505
  if self.nat_gateway_id is not None:
@@ -47439,6 +47570,9 @@ class DescribeNatGatewaysResponseBodyNatGatewaysNatGateway(TeaModel):
47439
47570
  if m.get('IpLists') is not None:
47440
47571
  temp_model = DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpLists()
47441
47572
  self.ip_lists = temp_model.from_map(m['IpLists'])
47573
+ if m.get('IpPrefixList') is not None:
47574
+ temp_model = DescribeNatGatewaysResponseBodyNatGatewaysNatGatewayIpPrefixList()
47575
+ self.ip_prefix_list = temp_model.from_map(m['IpPrefixList'])
47442
47576
  if m.get('Name') is not None:
47443
47577
  self.name = m.get('Name')
47444
47578
  if m.get('NatGatewayId') is not None:
@@ -56365,6 +56499,7 @@ class DescribeTagsRequest(TeaModel):
56365
56499
  #
56366
56500
  # This parameter is required.
56367
56501
  self.region_id = region_id
56502
+ # The resource IDs.
56368
56503
  self.resource_id = resource_id
56369
56504
  self.resource_owner_account = resource_owner_account
56370
56505
  self.resource_owner_id = resource_owner_id
@@ -56378,6 +56513,7 @@ class DescribeTagsRequest(TeaModel):
56378
56513
  # * **NATGATEWAY**: NAT gateway
56379
56514
  # * **COMMONBANDWIDTHPACKAGE**: EIP bandwidth plan
56380
56515
  self.resource_type = resource_type
56516
+ # The tags.
56381
56517
  self.tag = tag
56382
56518
 
56383
56519
  def validate(self):
@@ -56723,7 +56859,7 @@ class DescribeVRoutersResponseBodyVRoutersVRouter(TeaModel):
56723
56859
  self.description = description
56724
56860
  # The region to which the vRouter belongs.
56725
56861
  self.region_id = region_id
56726
- # The ID of the route table in the vRouter.
56862
+ # The IDs of the route tables.
56727
56863
  self.route_table_ids = route_table_ids
56728
56864
  # The ID of the vRouter.
56729
56865
  self.vrouter_id = vrouter_id
@@ -60889,6 +61025,304 @@ class DescribeVpcAttributeResponse(TeaModel):
60889
61025
  return self
60890
61026
 
60891
61027
 
61028
+ class DescribeVpcGrantRulesToEcrRequestTags(TeaModel):
61029
+ def __init__(
61030
+ self,
61031
+ key: str = None,
61032
+ value: str = None,
61033
+ ):
61034
+ self.key = key
61035
+ self.value = value
61036
+
61037
+ def validate(self):
61038
+ pass
61039
+
61040
+ def to_map(self):
61041
+ _map = super().to_map()
61042
+ if _map is not None:
61043
+ return _map
61044
+
61045
+ result = dict()
61046
+ if self.key is not None:
61047
+ result['Key'] = self.key
61048
+ if self.value is not None:
61049
+ result['Value'] = self.value
61050
+ return result
61051
+
61052
+ def from_map(self, m: dict = None):
61053
+ m = m or dict()
61054
+ if m.get('Key') is not None:
61055
+ self.key = m.get('Key')
61056
+ if m.get('Value') is not None:
61057
+ self.value = m.get('Value')
61058
+ return self
61059
+
61060
+
61061
+ class DescribeVpcGrantRulesToEcrRequest(TeaModel):
61062
+ def __init__(
61063
+ self,
61064
+ ecr_instance_id: str = None,
61065
+ ecr_owner_id: int = None,
61066
+ instance_id: str = None,
61067
+ instance_type: str = None,
61068
+ max_results: int = None,
61069
+ next_token: str = None,
61070
+ owner_account: str = None,
61071
+ owner_id: int = None,
61072
+ region_id: str = None,
61073
+ resource_group_id: str = None,
61074
+ resource_owner_account: str = None,
61075
+ resource_owner_id: int = None,
61076
+ tags: List[DescribeVpcGrantRulesToEcrRequestTags] = None,
61077
+ ):
61078
+ self.ecr_instance_id = ecr_instance_id
61079
+ self.ecr_owner_id = ecr_owner_id
61080
+ self.instance_id = instance_id
61081
+ self.instance_type = instance_type
61082
+ self.max_results = max_results
61083
+ self.next_token = next_token
61084
+ self.owner_account = owner_account
61085
+ self.owner_id = owner_id
61086
+ # This parameter is required.
61087
+ self.region_id = region_id
61088
+ self.resource_group_id = resource_group_id
61089
+ self.resource_owner_account = resource_owner_account
61090
+ self.resource_owner_id = resource_owner_id
61091
+ self.tags = tags
61092
+
61093
+ def validate(self):
61094
+ if self.tags:
61095
+ for k in self.tags:
61096
+ if k:
61097
+ k.validate()
61098
+
61099
+ def to_map(self):
61100
+ _map = super().to_map()
61101
+ if _map is not None:
61102
+ return _map
61103
+
61104
+ result = dict()
61105
+ if self.ecr_instance_id is not None:
61106
+ result['EcrInstanceId'] = self.ecr_instance_id
61107
+ if self.ecr_owner_id is not None:
61108
+ result['EcrOwnerId'] = self.ecr_owner_id
61109
+ if self.instance_id is not None:
61110
+ result['InstanceId'] = self.instance_id
61111
+ if self.instance_type is not None:
61112
+ result['InstanceType'] = self.instance_type
61113
+ if self.max_results is not None:
61114
+ result['MaxResults'] = self.max_results
61115
+ if self.next_token is not None:
61116
+ result['NextToken'] = self.next_token
61117
+ if self.owner_account is not None:
61118
+ result['OwnerAccount'] = self.owner_account
61119
+ if self.owner_id is not None:
61120
+ result['OwnerId'] = self.owner_id
61121
+ if self.region_id is not None:
61122
+ result['RegionId'] = self.region_id
61123
+ if self.resource_group_id is not None:
61124
+ result['ResourceGroupId'] = self.resource_group_id
61125
+ if self.resource_owner_account is not None:
61126
+ result['ResourceOwnerAccount'] = self.resource_owner_account
61127
+ if self.resource_owner_id is not None:
61128
+ result['ResourceOwnerId'] = self.resource_owner_id
61129
+ result['Tags'] = []
61130
+ if self.tags is not None:
61131
+ for k in self.tags:
61132
+ result['Tags'].append(k.to_map() if k else None)
61133
+ return result
61134
+
61135
+ def from_map(self, m: dict = None):
61136
+ m = m or dict()
61137
+ if m.get('EcrInstanceId') is not None:
61138
+ self.ecr_instance_id = m.get('EcrInstanceId')
61139
+ if m.get('EcrOwnerId') is not None:
61140
+ self.ecr_owner_id = m.get('EcrOwnerId')
61141
+ if m.get('InstanceId') is not None:
61142
+ self.instance_id = m.get('InstanceId')
61143
+ if m.get('InstanceType') is not None:
61144
+ self.instance_type = m.get('InstanceType')
61145
+ if m.get('MaxResults') is not None:
61146
+ self.max_results = m.get('MaxResults')
61147
+ if m.get('NextToken') is not None:
61148
+ self.next_token = m.get('NextToken')
61149
+ if m.get('OwnerAccount') is not None:
61150
+ self.owner_account = m.get('OwnerAccount')
61151
+ if m.get('OwnerId') is not None:
61152
+ self.owner_id = m.get('OwnerId')
61153
+ if m.get('RegionId') is not None:
61154
+ self.region_id = m.get('RegionId')
61155
+ if m.get('ResourceGroupId') is not None:
61156
+ self.resource_group_id = m.get('ResourceGroupId')
61157
+ if m.get('ResourceOwnerAccount') is not None:
61158
+ self.resource_owner_account = m.get('ResourceOwnerAccount')
61159
+ if m.get('ResourceOwnerId') is not None:
61160
+ self.resource_owner_id = m.get('ResourceOwnerId')
61161
+ self.tags = []
61162
+ if m.get('Tags') is not None:
61163
+ for k in m.get('Tags'):
61164
+ temp_model = DescribeVpcGrantRulesToEcrRequestTags()
61165
+ self.tags.append(temp_model.from_map(k))
61166
+ return self
61167
+
61168
+
61169
+ class DescribeVpcGrantRulesToEcrResponseBodyGrantRuleModels(TeaModel):
61170
+ def __init__(
61171
+ self,
61172
+ creation_time: str = None,
61173
+ ecr_id: str = None,
61174
+ ecr_owner_id: int = None,
61175
+ instance_id: str = None,
61176
+ instance_uid: int = None,
61177
+ region_no: str = None,
61178
+ type: str = None,
61179
+ ):
61180
+ self.creation_time = creation_time
61181
+ self.ecr_id = ecr_id
61182
+ self.ecr_owner_id = ecr_owner_id
61183
+ self.instance_id = instance_id
61184
+ self.instance_uid = instance_uid
61185
+ self.region_no = region_no
61186
+ self.type = type
61187
+
61188
+ def validate(self):
61189
+ pass
61190
+
61191
+ def to_map(self):
61192
+ _map = super().to_map()
61193
+ if _map is not None:
61194
+ return _map
61195
+
61196
+ result = dict()
61197
+ if self.creation_time is not None:
61198
+ result['CreationTime'] = self.creation_time
61199
+ if self.ecr_id is not None:
61200
+ result['EcrId'] = self.ecr_id
61201
+ if self.ecr_owner_id is not None:
61202
+ result['EcrOwnerId'] = self.ecr_owner_id
61203
+ if self.instance_id is not None:
61204
+ result['InstanceId'] = self.instance_id
61205
+ if self.instance_uid is not None:
61206
+ result['InstanceUid'] = self.instance_uid
61207
+ if self.region_no is not None:
61208
+ result['RegionNo'] = self.region_no
61209
+ if self.type is not None:
61210
+ result['Type'] = self.type
61211
+ return result
61212
+
61213
+ def from_map(self, m: dict = None):
61214
+ m = m or dict()
61215
+ if m.get('CreationTime') is not None:
61216
+ self.creation_time = m.get('CreationTime')
61217
+ if m.get('EcrId') is not None:
61218
+ self.ecr_id = m.get('EcrId')
61219
+ if m.get('EcrOwnerId') is not None:
61220
+ self.ecr_owner_id = m.get('EcrOwnerId')
61221
+ if m.get('InstanceId') is not None:
61222
+ self.instance_id = m.get('InstanceId')
61223
+ if m.get('InstanceUid') is not None:
61224
+ self.instance_uid = m.get('InstanceUid')
61225
+ if m.get('RegionNo') is not None:
61226
+ self.region_no = m.get('RegionNo')
61227
+ if m.get('Type') is not None:
61228
+ self.type = m.get('Type')
61229
+ return self
61230
+
61231
+
61232
+ class DescribeVpcGrantRulesToEcrResponseBody(TeaModel):
61233
+ def __init__(
61234
+ self,
61235
+ grant_rule_models: List[DescribeVpcGrantRulesToEcrResponseBodyGrantRuleModels] = None,
61236
+ next_token: str = None,
61237
+ request_id: str = None,
61238
+ total_count: str = None,
61239
+ ):
61240
+ self.grant_rule_models = grant_rule_models
61241
+ self.next_token = next_token
61242
+ self.request_id = request_id
61243
+ self.total_count = total_count
61244
+
61245
+ def validate(self):
61246
+ if self.grant_rule_models:
61247
+ for k in self.grant_rule_models:
61248
+ if k:
61249
+ k.validate()
61250
+
61251
+ def to_map(self):
61252
+ _map = super().to_map()
61253
+ if _map is not None:
61254
+ return _map
61255
+
61256
+ result = dict()
61257
+ result['GrantRuleModels'] = []
61258
+ if self.grant_rule_models is not None:
61259
+ for k in self.grant_rule_models:
61260
+ result['GrantRuleModels'].append(k.to_map() if k else None)
61261
+ if self.next_token is not None:
61262
+ result['NextToken'] = self.next_token
61263
+ if self.request_id is not None:
61264
+ result['RequestId'] = self.request_id
61265
+ if self.total_count is not None:
61266
+ result['TotalCount'] = self.total_count
61267
+ return result
61268
+
61269
+ def from_map(self, m: dict = None):
61270
+ m = m or dict()
61271
+ self.grant_rule_models = []
61272
+ if m.get('GrantRuleModels') is not None:
61273
+ for k in m.get('GrantRuleModels'):
61274
+ temp_model = DescribeVpcGrantRulesToEcrResponseBodyGrantRuleModels()
61275
+ self.grant_rule_models.append(temp_model.from_map(k))
61276
+ if m.get('NextToken') is not None:
61277
+ self.next_token = m.get('NextToken')
61278
+ if m.get('RequestId') is not None:
61279
+ self.request_id = m.get('RequestId')
61280
+ if m.get('TotalCount') is not None:
61281
+ self.total_count = m.get('TotalCount')
61282
+ return self
61283
+
61284
+
61285
+ class DescribeVpcGrantRulesToEcrResponse(TeaModel):
61286
+ def __init__(
61287
+ self,
61288
+ headers: Dict[str, str] = None,
61289
+ status_code: int = None,
61290
+ body: DescribeVpcGrantRulesToEcrResponseBody = None,
61291
+ ):
61292
+ self.headers = headers
61293
+ self.status_code = status_code
61294
+ self.body = body
61295
+
61296
+ def validate(self):
61297
+ if self.body:
61298
+ self.body.validate()
61299
+
61300
+ def to_map(self):
61301
+ _map = super().to_map()
61302
+ if _map is not None:
61303
+ return _map
61304
+
61305
+ result = dict()
61306
+ if self.headers is not None:
61307
+ result['headers'] = self.headers
61308
+ if self.status_code is not None:
61309
+ result['statusCode'] = self.status_code
61310
+ if self.body is not None:
61311
+ result['body'] = self.body.to_map()
61312
+ return result
61313
+
61314
+ def from_map(self, m: dict = None):
61315
+ m = m or dict()
61316
+ if m.get('headers') is not None:
61317
+ self.headers = m.get('headers')
61318
+ if m.get('statusCode') is not None:
61319
+ self.status_code = m.get('statusCode')
61320
+ if m.get('body') is not None:
61321
+ temp_model = DescribeVpcGrantRulesToEcrResponseBody()
61322
+ self.body = temp_model.from_map(m['body'])
61323
+ return self
61324
+
61325
+
60892
61326
  class DescribeVpcsRequestTag(TeaModel):
60893
61327
  def __init__(
60894
61328
  self,
@@ -77692,6 +78126,7 @@ class ListNatIpsRequest(TeaModel):
77692
78126
  class ListNatIpsResponseBodyNatIps(TeaModel):
77693
78127
  def __init__(
77694
78128
  self,
78129
+ ipv_4prefix: str = None,
77695
78130
  is_default: bool = None,
77696
78131
  nat_gateway_id: str = None,
77697
78132
  nat_ip: str = None,
@@ -77701,6 +78136,7 @@ class ListNatIpsResponseBodyNatIps(TeaModel):
77701
78136
  nat_ip_name: str = None,
77702
78137
  nat_ip_status: str = None,
77703
78138
  ):
78139
+ self.ipv_4prefix = ipv_4prefix
77704
78140
  # Indicates whether the IP address is the default IP address of the NAT gateway. Valid values:
77705
78141
  #
77706
78142
  # * **true**: yes
@@ -77737,6 +78173,8 @@ class ListNatIpsResponseBodyNatIps(TeaModel):
77737
78173
  return _map
77738
78174
 
77739
78175
  result = dict()
78176
+ if self.ipv_4prefix is not None:
78177
+ result['Ipv4Prefix'] = self.ipv_4prefix
77740
78178
  if self.is_default is not None:
77741
78179
  result['IsDefault'] = self.is_default
77742
78180
  if self.nat_gateway_id is not None:
@@ -77757,6 +78195,8 @@ class ListNatIpsResponseBodyNatIps(TeaModel):
77757
78195
 
77758
78196
  def from_map(self, m: dict = None):
77759
78197
  m = m or dict()
78198
+ if m.get('Ipv4Prefix') is not None:
78199
+ self.ipv_4prefix = m.get('Ipv4Prefix')
77760
78200
  if m.get('IsDefault') is not None:
77761
78201
  self.is_default = m.get('IsDefault')
77762
78202
  if m.get('NatGatewayId') is not None: