Updating a Public NAT Gateway
Function
This API is used to update a public NAT gateway.
Constraints
The name, description, and type of a public NAT gateway can be updated when admin_state_up is True and status is ACTIVE. "
Calling Method
For details, see Calling APIs.
URI
PUT /v2/{project_id}/nat_gateways/{nat_gateway_id}
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Specifies the project ID. Minimum: 1 Maximum: 36 |
nat_gateway_id |
Yes |
String |
Specifies the public NAT gateway ID. Minimum: 36 Maximum: 36 |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
Specifies the user token. It is a response to the API for obtaining a user token. This API is the only one that does not require authentication. The value of X-Subject-Token in the response header is the token. Minimum: 1 Maximum: 10240 |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
nat_gateway |
Yes |
UpdateNatGatewayOption object |
Specifies the request body for updating the public NAT gateway. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
name |
No |
String |
Specifies the public NAT gateway name. You can enter up to 64 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. Minimum: 1 Maximum: 64 |
description |
No |
String |
Provides supplementary information about the public NAT gateway. The description can contain up to 255 characters and cannot contain angle brackets (<>). Minimum: 0 Maximum: 255 |
spec |
No |
String |
Specifies the public NAT gateway specifications. The value can be: 1: small, which supports a maximum of 10,000 SNAT connections 2: medium, which supports up to 50,000 SNAT connections. 3: large, which supports up to 200,000 SNAT connections. 4: extra-large, which supports up to 1,000,000 SNAT connections. Enumeration values:
|
session_conf |
No |
SessionConfiguration object |
Specifies the session parameters for the public NAT gateway. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
tcp_session_expire_time |
No |
Integer |
Specifies the TCP session duration. Minimum: 40 Maximum: 7200 |
udp_session_expire_time |
No |
Integer |
Specifies the UDP session duration. Minimum: 40 Maximum: 7200 |
icmp_session_expire_time |
No |
Integer |
Specifies the ICMP session duration. Minimum: 10 Maximum: 7200 |
tcp_time_wait_time |
No |
Integer |
Specifies how long the side that actively closed the TCP connection is in the TIME_WAIT state. Minimum: 0 Maximum: 1800 |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
nat_gateway |
NatGatewayResponseBody object |
Specifies the response body for a public NAT gateway. |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Specifies the public NAT gateway ID. Minimum: 36 Maximum: 36 |
tenant_id |
String |
Specifies the project ID. Minimum: 1 Maximum: 36 |
name |
String |
Specifies the public NAT gateway name. You can enter up to 64 characters. Minimum: 1 Maximum: 64 |
description |
String |
Provides supplementary information about the public NAT gateway. The description can contain up to 255 characters and cannot contain angle brackets (<>). Minimum: 0 Maximum: 255 |
spec |
String |
Specifies the public NAT gateway specifications. The value can be: 1: small, which supports a maximum of 10,000 SNAT connections 2: medium, which supports up to 50,000 SNAT connections. 3: large, which supports up to 200,000 SNAT connections. 4: extra-large, which supports up to 1,000,000 SNAT connections. Enumeration values:
|
status |
String |
Specifies the public NAT gateway status. The value can be: ACTIVE: The public NAT gateway is available. PENDING_CREATE: The public NAT gateway is being created. PENDING_UPDATE: The public NAT gateway is being updated. PENDING_DELETE: The public NAT gateway is being deleted. INACTIVE: The public NAT gateway is unavailable. Enumeration values:
|
admin_state_up |
Boolean |
Specifies whether the public NAT gateway is frozen. The value can be:
|
created_at |
String |
Specifies when the public NAT gateway was created. The time is in yyyy-mm-dd hh:mm:ss.SSSSSS format. Minimum: 1 Maximum: 36 |
router_id |
String |
Specifies the VPC ID. Minimum: 36 Maximum: 36 |
internal_network_id |
String |
Specifies the network ID of the downstream interface (the next hop of DVR) of the public NAT gateway. DVR is Distributed Virtual Routing. Minimum: 36 Maximum: 36 |
enterprise_project_id |
String |
Specifies the ID of the enterprise project associated with the public NAT gateway when the gateway is created. Minimum: 1 Maximum: 36 |
session_conf |
SessionConfiguration object |
Specifies the session parameters for the public NAT gateway. |
ngport_ip_address |
String |
Specifies the private IP address of the public NAT gateway, which is assigned by the VPC subnet. Minimum: 7 Maximum: 15 |
billing_info |
String |
Specifies the order information. This parameter is available only when you buy yearly/monthly resources. This parameter is left blank when your buy pay-per-use resources. |
dnat_rules_limit |
Long |
Specifies the maximum number of DNAT rules on a public NAT gateway. The default value is 200. Minimum: 1 Maximum: 100000 |
snat_rule_public_ip_limit |
Integer |
Specifies the maximum number of SNAT rules on a public NAT gateway. The default value is 20. Minimum: 1 Maximum: 100 |
Parameter |
Type |
Description |
---|---|---|
tcp_session_expire_time |
Integer |
Specifies the TCP session duration. Minimum: 40 Maximum: 7200 |
udp_session_expire_time |
Integer |
Specifies the UDP session duration. Minimum: 40 Maximum: 7200 |
icmp_session_expire_time |
Integer |
Specifies the ICMP session duration. Minimum: 10 Maximum: 7200 |
tcp_time_wait_time |
Integer |
Specifies how long the side that actively closed the TCP connection is in the TIME_WAIT state. Minimum: 0 Maximum: 1800 |
Example Requests
PUT https://{Endpoint}/v2/70505c941b9b4dfd82fd351932328a2f/nat_gateways/14338426-6afe-4019-996b-3a9525296e11 { "nat_gateway" : { "name" : "new_name", "description" : "new description", "spec" : "1" } }
Example Responses
Status code: 200
Public NAT gateway updated.
{ "nat_gateway" : { "id" : "14338426-6afe-4019-996b-3a9525296e11", "name" : "new_name", "description" : "new description", "spec" : "1", "tenant_id" : "70505c941b9b4dfd82fd351932328a2f", "enterprise_project_id" : "2759da7b-8015-404c-ae0a-a389007b0e2a", "status" : "ACTIVE", "created_at" : "2019-04-22 08:47:13.238743", "internal_network_id" : "89d66639-aacb-4929-969d-07080b0f9fd9", "router_id" : "d84f345c-80a1-4fa2-a39c-d0d397c3f09a", "admin_state_up" : true, "billing_info" : "", "dnat_rules_limit" : 200, "snat_rule_public_ip_limit" : 20, "ngport_ip_address" : "192.168.0.138" } }
SDK Sample Code
The SDK sample code is as follows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.nat.v2.region.NatRegion; import com.huaweicloud.sdk.nat.v2.*; import com.huaweicloud.sdk.nat.v2.model.*; public class UpdateNatGatewaySolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); NatClient client = NatClient.newBuilder() .withCredential(auth) .withRegion(NatRegion.valueOf("<YOUR REGION>")) .build(); UpdateNatGatewayRequest request = new UpdateNatGatewayRequest(); UpdateNatGatewayRequestBody body = new UpdateNatGatewayRequestBody(); UpdateNatGatewayOption natGatewaybody = new UpdateNatGatewayOption(); natGatewaybody.withName("new_name") .withDescription("new description") .withSpec(UpdateNatGatewayOption.SpecEnum.fromValue("1")); body.withNatGateway(natGatewaybody); request.withBody(body); try { UpdateNatGatewayResponse response = client.updateNatGateway(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdknat.v2.region.nat_region import NatRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdknat.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = __import__('os').getenv("CLOUD_SDK_AK") sk = __import__('os').getenv("CLOUD_SDK_SK") credentials = BasicCredentials(ak, sk) \ client = NatClient.new_builder() \ .with_credentials(credentials) \ .with_region(NatRegion.value_of("<YOUR REGION>")) \ .build() try: request = UpdateNatGatewayRequest() natGatewaybody = UpdateNatGatewayOption( name="new_name", description="new description", spec="1" ) request.body = UpdateNatGatewayRequestBody( nat_gateway=natGatewaybody ) response = client.update_nat_gateway(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" nat "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := nat.NewNatClient( nat.NatClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.UpdateNatGatewayRequest{} nameNatGateway:= "new_name" descriptionNatGateway:= "new description" specNatGateway:= model.GetUpdateNatGatewayOptionSpecEnum().E_1 natGatewaybody := &model.UpdateNatGatewayOption{ Name: &nameNatGateway, Description: &descriptionNatGateway, Spec: &specNatGateway, } request.Body = &model.UpdateNatGatewayRequestBody{ NatGateway: natGatewaybody, } response, err := client.UpdateNatGateway(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
200 |
Public NAT gateway updated. |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot