Help Center/ Elastic IP/ API Reference/ APIs/ Bandwidth/ Updating Bandwidths in Batches
Updated on 2024-04-17 GMT+08:00

Updating Bandwidths in Batches

Function

This API is used to update bandwidths in batches. This API is not applicable to shared bandwidths and yearly/monthly bandwidths.

URI

PUT /v2/{project_id}/batch-bandwidths/modify

Table 1 Path parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID.

Request Parameters

Table 2 Request body parameters

Parameter

Mandatory

Type

Description

bandwidths

Yes

Array of ModifyBandwidthOption objects

Update bandwidths.

Table 3 ModifyBandwidthOption

Parameter

Mandatory

Type

Description

id

Yes

String

  • Bandwidth ID, which uniquely identifies a bandwidth

Maximum length: 36

name

No

String

The name of the bandwidth. The value can contain 1 to 64 characters, including letters, digits, underscores (_), and hyphens (-). If the value is left blank, the name of the bandwidth is not changed. Either parameter name or size must be specified.

Minimum length: 1

Maximum length: 64

size

No

Integer

The bandwidth size, in Mbit/s. The value ranges from 1 Mbit/s to 2,000 Mbit/s by default. (The specific range may vary by the configuration in each region. You can see the available bandwidth range on the management console.) If the parameter is not specified, the bandwidth size is not changed. Either parameter name or size must be specified. If a decimal fraction (for example 10.2) or a character string (for example 10) is specified, the value will be automatically converted to an integer. The minimum increment for bandwidth adjustment varies with the bandwidth range. The minimum increment is 1 Mbit/s if the allowed bandwidth ranges from 0 Mbit/s to 300 Mbit/s. The minimum increment is 50 Mbit/s if the allowed bandwidth ranges 300 Mbit/s to 1,000 Mbit/s. The minimum increment is 500 Mbit/s if the allowed bandwidth is greater than 1,000 Mbit/s.

charge_mode

No

String

Whether the bandwidth is billed by traffic, bandwidth, or 95th percentile bandwidth (enhanced). The value can be bandwidth, traffic, or 95peak_plus (billed by enhanced 95th percentile bandwidth). If the value is an empty character string or no value is specified, value bandwidth is used. Only the shared bandwidth supports 95peak_plus (billed by enhanced 95th percentile bandwidth). If you choose to be billed by 95th percentile bandwidth (enhanced), you need to specify the guaranteed bandwidth percentage. The default value is 20%.

The value can be:

  • bandwidth
  • traffic
  • 95peak_plus

Response Parameters

Status code: 200

Table 4 Response body parameters

Parameter

Type

Description

success_resources

Array of SuccessResources objects

Successful resources

failure_resources

Array of FailureResources objects

Failed resources

Table 5 SuccessResources

Parameter

Type

Description

id

String

  • ID of the bandwidth that is successfully updated.

Minimum length: 1

Maximum length: 36

Table 6 FailureResources

Parameter

Type

Description

id

String

  • ID of the bandwidth that fails to be updated.

Minimum length: 1

Maximum length: 36

code

String

  • Error code

Minimum length: 1

Maximum length: 36

message

String

  • Error message

Minimum length: 1

Maximum length: 256

Example Request

Update bandwidths in batches.

{
  "bandwidths" : [ {
    "id" : "837d84a0-b940-4401-9477-4a99de1979a7",
    "name" : "bandwidth123",
    "size" : 5
  }, {
    "id" : "f2549bed-c419-4f58-9609-7ade104772bb",
    "name" : "bandwidth123",
    "size" : 5
  } ]
}

Example Response

Status code: 200

Normal response to GET and PUT operations

{
  "success_resources" : [ {
    "id" : "837d84a0-b940-4401-9477-4a99de1979a7"
  } ],
  "failure_resources" : [ {
    "id" : "f2549bed-c419-4f58-9609-7ade104772bb",
    "code" : "VPC.0319",
    "message" : "updateBandwidth bandwidth failed. the bandwidth is share bandwidth."
  } ]
}

SDK Sample Code

The sample code is as follows:

Update bandwidths in batches.

 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
53
54
55
56
57
58
59
60
61
62
63
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.eip.v2.region.EipRegion;
import com.huaweicloud.sdk.eip.v2.*;
import com.huaweicloud.sdk.eip.v2.model.*;

import java.util.List;
import java.util.ArrayList;

public class BatchModifyBandwidthSolution {

    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);

        EipClient client = EipClient.newBuilder()
                .withCredential(auth)
                .withRegion(EipRegion.valueOf("<YOUR REGION>"))
                .build();
        BatchModifyBandwidthRequest request = new BatchModifyBandwidthRequest();
        ModifyBandwidthRequestBody body = new ModifyBandwidthRequestBody();
        List<ModifyBandwidthOption> listbodyBandwidths = new ArrayList<>();
        listbodyBandwidths.add(
            new ModifyBandwidthOption()
                .withId("837d84a0-b940-4401-9477-4a99de1979a7")
                .withName("bandwidth123")
                .withSize(5)
        );
        listbodyBandwidths.add(
            new ModifyBandwidthOption()
                .withId("f2549bed-c419-4f58-9609-7ade104772bb")
                .withName("bandwidth123")
                .withSize(5)
        );
        body.withBandwidths(listbodyBandwidths);
        request.withBody(body);
        try {
            BatchModifyBandwidthResponse response = client.batchModifyBandwidth(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());
        }
    }
}

Update bandwidths in batches.

 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
# coding: utf-8

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkeip.v2.region.eip_region import EipRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkeip.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 = EipClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(EipRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = BatchModifyBandwidthRequest()
        listBandwidthsbody = [
            ModifyBandwidthOption(
                id="837d84a0-b940-4401-9477-4a99de1979a7",
                name="bandwidth123",
                size=5
            ),
            ModifyBandwidthOption(
                id="f2549bed-c419-4f58-9609-7ade104772bb",
                name="bandwidth123",
                size=5
            )
        ]
        request.body = ModifyBandwidthRequestBody(
            bandwidths=listBandwidthsbody
        )
        response = client.batch_modify_bandwidth(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Update bandwidths in batches.

 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
53
54
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    eip "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/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 := eip.NewEipClient(
        eip.EipClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.BatchModifyBandwidthRequest{}
	nameBandwidths:= "bandwidth123"
	sizeBandwidths:= int32(5)
	nameBandwidths1:= "bandwidth123"
	sizeBandwidths1:= int32(5)
	var listBandwidthsbody = []model.ModifyBandwidthOption{
        {
            Id: "837d84a0-b940-4401-9477-4a99de1979a7",
            Name: &nameBandwidths,
            Size: &sizeBandwidths,
        },
        {
            Id: "f2549bed-c419-4f58-9609-7ade104772bb",
            Name: &nameBandwidths1,
            Size: &sizeBandwidths1,
        },
    }
	request.Body = &model.ModifyBandwidthRequestBody{
		Bandwidths: listBandwidthsbody,
	}
	response, err := client.BatchModifyBandwidth(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

For more SDK sample codes of programming languages, visit API Explorer and click the Sample Code tab. Example codes can be automatically generated.

Status Codes

Status Code

Description

200

Normal response to GET and PUT operations

Error Codes

See Error Codes.