Help Center/ Cloud Search Service/ API Reference/ API V1/ Cluster Management/ Changing Node Specifications (Discarded)
Updated on 2025-09-10 GMT+08:00

Changing Node Specifications (Discarded)

Function

This API is used to modify the node specifications of a cluster. It can only change the specifications of ess nodes (data nodes). If you need to change other types of nodes as well, use the API for Changing the Specifications of Specified Nodes.

All mission-critical data has been backed up before a disk change. This is to prevent data loss.

Calling Method

For details, see Calling APIs.

URI

POST /v1.0/{project_id}/clusters/{cluster_id}/flavor

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Definition:

Project ID. For details about how to obtain the project ID and name, see Obtaining the Project ID and Name.

Constraints:

N/A

Value range:

Project ID of the account.

Default value:

N/A

cluster_id

Yes

String

Definition:

ID of the cluster whose specifications you want to change. For details about how to obtain the cluster ID, see Obtaining the Cluster ID.

Constraints:

N/A

Value range:

Cluster ID.

Default value:

N/A

Request Parameters

Table 2 Request body parameters

Parameter

Mandatory

Type

Description

newFlavorId

Yes

String

Definition:

ID of the new node flavor or disk type. It is determined by operationType.

Constraints:

N/A

Value range:

  • When operationType is set to vm, newFlavorId indicates the node flavor ID after the change. This parameter is obtained by calling the Obtaining the Instance Specifications List API. The API selects a flavor_id based on the values of the name attribute.

  • When operationType is set to volume, newFlavorId indicates the new disk type after the change. The following disk types are supported:

The old and new node specifications must be under the same Elasticsearch engine version.

COMMON: common I/O

HIGH: high I/O

ULTRAHIGH: ultra-high I/O

ESSD: ultra-fast SSD

Default value:

N/A

operationType

No

String

Definition:

Operation type for specifications change.

Constraints:

N/A

Value range:

  • vm: Change the node flavor.

  • volume: Change the disk type.

Default value:

vm

needCheckReplica

No

Boolean

Definition:

Whether to check replicas when changing cluster specifications.

Constraints:

N/A

Value range:

  • *true: Enable replica verification.

  • false: Disable replica verification.

Default value:

true

isAutoPay

No

Integer

Definition:

Whether to enable automatic payment from your Huawei Cloud account. This parameter takes effect only for yearly/monthly clusters.

Constraints:

N/A

Value range:

  • 1: Yes. (Discounts and coupons are automatically selected. The fee will be automatically deducted from your Huawei Cloud account.) If the automatic payment fails, an unpaid order will be generated, and you need to manually complete the payment. (During manual payment, you can still modify the discounts and coupons that were automatically selected.)

  • 0: No. (The customer needs to manually pay for the bill. Discounts and coupons can be used.) The default value is 0.

Default value:

0

needCheckClusterStatus

No

Boolean

Definition:

Whether to check the cluster status when changing cluster specifications.

Constraints:

N/A

Value range:

  • true: Enable cluster load check.

  • false: Cluster status verification is ignored.

Default value:

true

clusterLoadCheck

No

Boolean

Definition:

Whether to check the cluster load when changing cluster specifications.

Constraints:

N/A

Value range:

  • true: enable cluster load check.

  • false: Skip cluster load check.

Default value:

true

Response Parameters

Status code: 200

Request succeeded.

None

Example Requests

  • ID of the new flavor.

    POST https://{Endpoint}/v1.0/{project_id}/clusters/4f3deec3-efa8-4598-bf91-560aad1377a3/flavor
    
    {
      "needCheckReplica" : false,
      "newFlavorId" : "35b060a4-f152-48ce-8773-36559ceb81f2",
      "isAutoPay" : 1,
      "needCheckClusterStatus" : true
    }
  • Disk type after the change.

    POST https://{Endpoint}/v1.0/{project_id}/clusters/4f3deec3-efa8-4598-bf91-560aad1377a3/flavor
    
    {
      "needCheckReplica" : false,
      "newFlavorId" : "ULTRAHIGH",
      "operationType" : "volume",
      "isAutoPay" : 1,
      "clusterLoadCheck" : true
    }

Example Responses

None

SDK Sample Code

The SDK sample code is as follows.

Java

  • ID of the new flavor.

     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 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.css.v1.region.CssRegion;
    import com.huaweicloud.sdk.css.v1.*;
    import com.huaweicloud.sdk.css.v1.model.*;
    
    
    public class UpdateFlavorSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            CssClient client = CssClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(CssRegion.valueOf("<YOUR REGION>"))
                    .build();
            UpdateFlavorRequest request = new UpdateFlavorRequest();
            request.withClusterId("{cluster_id}");
            UpdateFlavorReq body = new UpdateFlavorReq();
            body.withNeedCheckClusterStatus(true);
            body.withIsAutoPay(1);
            body.withNeedCheckReplica(false);
            body.withNewFlavorId("35b060a4-f152-48ce-8773-36559ceb81f2");
            request.withBody(body);
            try {
                UpdateFlavorResponse response = client.updateFlavor(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());
            }
        }
    }
    
  • Disk type after the change.

     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
    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.css.v1.region.CssRegion;
    import com.huaweicloud.sdk.css.v1.*;
    import com.huaweicloud.sdk.css.v1.model.*;
    
    
    public class UpdateFlavorSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            CssClient client = CssClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(CssRegion.valueOf("<YOUR REGION>"))
                    .build();
            UpdateFlavorRequest request = new UpdateFlavorRequest();
            request.withClusterId("{cluster_id}");
            UpdateFlavorReq body = new UpdateFlavorReq();
            body.withClusterLoadCheck(true);
            body.withIsAutoPay(1);
            body.withNeedCheckReplica(false);
            body.withOperationType("volume");
            body.withNewFlavorId("ULTRAHIGH");
            request.withBody(body);
            try {
                UpdateFlavorResponse response = client.updateFlavor(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());
            }
        }
    }
    

Python

  • ID of the new flavor.

     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
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkcss.v1.region.css_region import CssRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkcss.v1 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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = CssClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(CssRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = UpdateFlavorRequest()
            request.cluster_id = "{cluster_id}"
            request.body = UpdateFlavorReq(
                need_check_cluster_status=True,
                is_auto_pay=1,
                need_check_replica=False,
                new_flavor_id="35b060a4-f152-48ce-8773-36559ceb81f2"
            )
            response = client.update_flavor(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Disk type after the change.

     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
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkcss.v1.region.css_region import CssRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkcss.v1 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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = CssClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(CssRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = UpdateFlavorRequest()
            request.cluster_id = "{cluster_id}"
            request.body = UpdateFlavorReq(
                cluster_load_check=True,
                is_auto_pay=1,
                need_check_replica=False,
                operation_type="volume",
                new_flavor_id="ULTRAHIGH"
            )
            response = client.update_flavor(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    

Go

  • ID of the new flavor.

     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
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        css "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := css.NewCssClient(
            css.CssClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.UpdateFlavorRequest{}
    	request.ClusterId = "{cluster_id}"
    	needCheckClusterStatusUpdateFlavorReq:= true
    	isAutoPayUpdateFlavorReq:= int32(1)
    	needCheckReplicaUpdateFlavorReq:= false
    	request.Body = &model.UpdateFlavorReq{
    		NeedCheckClusterStatus: &needCheckClusterStatusUpdateFlavorReq,
    		IsAutoPay: &isAutoPayUpdateFlavorReq,
    		NeedCheckReplica: &needCheckReplicaUpdateFlavorReq,
    		NewFlavorId: "35b060a4-f152-48ce-8773-36559ceb81f2",
    	}
    	response, err := client.UpdateFlavor(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Disk type after the change.

     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
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        css "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := css.NewCssClient(
            css.CssClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.UpdateFlavorRequest{}
    	request.ClusterId = "{cluster_id}"
    	clusterLoadCheckUpdateFlavorReq:= true
    	isAutoPayUpdateFlavorReq:= int32(1)
    	needCheckReplicaUpdateFlavorReq:= false
    	operationTypeUpdateFlavorReq:= "volume"
    	request.Body = &model.UpdateFlavorReq{
    		ClusterLoadCheck: &clusterLoadCheckUpdateFlavorReq,
    		IsAutoPay: &isAutoPayUpdateFlavorReq,
    		NeedCheckReplica: &needCheckReplicaUpdateFlavorReq,
    		OperationType: &operationTypeUpdateFlavorReq,
    		NewFlavorId: "ULTRAHIGH",
    	}
    	response, err := client.UpdateFlavor(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

More

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

Request succeeded.

400

Invalid request.

Modify the request before retry.

409

The request could not be completed due to a conflict with the current state of the resource.

The resource that the client attempts to create already exists, or the update request fails to be processed because of a conflict.

412

The server did not meet one of the preconditions contained in the request.

Error Codes

See Error Codes.