Updated on 2024-08-08 GMT+08:00

Modifying Specifications of Instances with New Flavors

Function

This API is used to modify instance specifications.

Currently, this API can only be used to modify specifications of pay-per-use instances.

Calling Method

For details, see Calling APIs.

URI

POST /v2/{engine}/{project_id}/instances/{instance_id}/extend

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details, see Obtaining a Project ID.

instance_id

Yes

String

Instance ID.

engine

Yes

String

Message engine, which is rabbitmq.

Request Parameters

Table 2 Request body parameters

Parameter

Mandatory

Type

Description

oper_type

Yes

String

Change type.

Value range:

storage: Expand the storage without changing the broker quantity.

horizontal: Add brokers without resizing the storage space of each broker.

vertical: Scale up the broker flavor without changing the broker quantity and storage.

new_storage_space

No

Integer

New storage space.

This parameter is valid and mandatory when oper_type is set to storage or horizontal.

Instance storage space = Number of brokers x Storage space of each broker.

If oper_type is set to storage, the number of brokers remains unchanged, and the storage space of each broker must be expanded by at least 100 GB.

If oper_type is set to horizontal, the storage space of each broker remains unchanged.

new_product_id

No

String

Flavor, such as c6.8u16g.cluster. This parameter is valid and mandatory when oper_type is set to vertical.

new_broker_num

No

Integer

This parameter is valid only when oper_type is set to horizontal.

new_spec_code

No

String

Old flavor, such as dms.instance.rabbitmq.cluster.c3.8u16g. When oper_type is set to horizontal, the value is dms.instance.rabbitmq.cluster.c3.8u16g.5 (5 is the broker quantity.)

Response Parameters

Status code: 200

Table 3 Response body parameters

Parameter

Type

Description

job_id

String

ID of the specification modification task.

Example Requests

  • Expanding the storage space (pay-per-use, old flavors). new_spec_code is the original specification.

    POST https://{endpoint}/{engine}/v2/{project_id}/instances/{instance_id}/extend
    
    {
      "new_storage_space" : 600,
      "oper_type" : "storage",
      "new_spec_code" : "dms.instance.rabbitmq.cluster.c3.2u4g.3"
    }
  • Adding brokers (pay-per-use, old flavors). new_storage_space is the space of the original specification. new_spec_code is dms.instance.rabbitmq.cluster.c3.2u4g.5 (5 is the broker quantity.)

    POST https://{endpoint}/{engine}/v2/{project_id}/instances/{instance_id}/extend
    
    {
      "new_storage_space" : 600,
      "oper_type" : "horizontal",
      "new_spec_code" : "dms.instance.rabbitmq.cluster.c3.2u4g.5"
    }
  • Increasing broker flavors (pay-per-use, old flavors). For new_spec_code, replace the original specification with the new one. For example, replace 2u4g with 4u8g.

    POST https://{endpoint}/{engine}/v2/{project_id}/instances/{instance_id}/extend
    
    {
      "new_storage_space" : 600,
      "oper_type" : "vertical",
      "new_spec_code" : "dms.instance.rabbitmq.cluster.c3.2u4g.5"
    }
  • Expanding the storage space (pay-per-use)

    POST https://{endpoint}/{engine}/v2/{project_id}/instances/{instance_id}/extend
    
    {
      "new_storage_space" : 600,
      "oper_type" : "storage"
    }
  • Adding brokers (pay-per-use)

    POST https://{endpoint}/{engine}/v2/{project_id}/instances/{instance_id}/extend
    
    {
      "oper_type" : "horizontal",
      "new_storage_space" : 500,
      "new_broker_num" : 5
    }
  • Increasing the broker flavor (pay-per-use)

    POST https://{endpoint}/v2/{engine}/{project_id}/instances/{instance_id}/extend
    
    {
      "oper_type" : "vertical",
      "new_product_id" : "c6.4u8g.cluster"
    }

Example Responses

Status code: 200

Instance specifications are modified successfully.

{
  "job_id" : "93b94287-728d-4bb1-a158-cb66cb0854e7"
}

SDK Sample Code

The SDK sample code is as follows.

  • Expanding the storage space (pay-per-use, old flavors). new_spec_code is the original specification.

     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.rabbitmq.v2.region.RabbitMQRegion;
    import com.huaweicloud.sdk.rabbitmq.v2.*;
    import com.huaweicloud.sdk.rabbitmq.v2.model.*;
    
    
    public class ResizeEngineInstanceSolution {
    
        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);
    
            RabbitMQClient client = RabbitMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RabbitMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeEngineInstanceRequest request = new ResizeEngineInstanceRequest();
            request.withInstanceId("{instance_id}");
            request.withEngine(ResizeEngineInstanceRequest.EngineEnum.fromValue("{engine}"));
            ResizeEngineInstanceReq body = new ResizeEngineInstanceReq();
            body.withNewSpecCode("dms.instance.rabbitmq.cluster.c3.2u4g.3");
            body.withNewStorageSpace(600);
            body.withOperType("storage");
            request.withBody(body);
            try {
                ResizeEngineInstanceResponse response = client.resizeEngineInstance(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());
            }
        }
    }
    
  • Adding brokers (pay-per-use, old flavors). new_storage_space is the space of the original specification. new_spec_code is dms.instance.rabbitmq.cluster.c3.2u4g.5 (5 is the broker quantity.)

     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.rabbitmq.v2.region.RabbitMQRegion;
    import com.huaweicloud.sdk.rabbitmq.v2.*;
    import com.huaweicloud.sdk.rabbitmq.v2.model.*;
    
    
    public class ResizeEngineInstanceSolution {
    
        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);
    
            RabbitMQClient client = RabbitMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RabbitMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeEngineInstanceRequest request = new ResizeEngineInstanceRequest();
            request.withInstanceId("{instance_id}");
            request.withEngine(ResizeEngineInstanceRequest.EngineEnum.fromValue("{engine}"));
            ResizeEngineInstanceReq body = new ResizeEngineInstanceReq();
            body.withNewSpecCode("dms.instance.rabbitmq.cluster.c3.2u4g.5");
            body.withNewStorageSpace(600);
            body.withOperType("horizontal");
            request.withBody(body);
            try {
                ResizeEngineInstanceResponse response = client.resizeEngineInstance(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());
            }
        }
    }
    
  • Increasing broker flavors (pay-per-use, old flavors). For new_spec_code, replace the original specification with the new one. For example, replace 2u4g with 4u8g.

     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.rabbitmq.v2.region.RabbitMQRegion;
    import com.huaweicloud.sdk.rabbitmq.v2.*;
    import com.huaweicloud.sdk.rabbitmq.v2.model.*;
    
    
    public class ResizeEngineInstanceSolution {
    
        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);
    
            RabbitMQClient client = RabbitMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RabbitMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeEngineInstanceRequest request = new ResizeEngineInstanceRequest();
            request.withInstanceId("{instance_id}");
            request.withEngine(ResizeEngineInstanceRequest.EngineEnum.fromValue("{engine}"));
            ResizeEngineInstanceReq body = new ResizeEngineInstanceReq();
            body.withNewSpecCode("dms.instance.rabbitmq.cluster.c3.2u4g.5");
            body.withNewStorageSpace(600);
            body.withOperType("vertical");
            request.withBody(body);
            try {
                ResizeEngineInstanceResponse response = client.resizeEngineInstance(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());
            }
        }
    }
    
  • Expanding the storage space (pay-per-use)

     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
    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.rabbitmq.v2.region.RabbitMQRegion;
    import com.huaweicloud.sdk.rabbitmq.v2.*;
    import com.huaweicloud.sdk.rabbitmq.v2.model.*;
    
    
    public class ResizeEngineInstanceSolution {
    
        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);
    
            RabbitMQClient client = RabbitMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RabbitMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeEngineInstanceRequest request = new ResizeEngineInstanceRequest();
            request.withInstanceId("{instance_id}");
            request.withEngine(ResizeEngineInstanceRequest.EngineEnum.fromValue("{engine}"));
            ResizeEngineInstanceReq body = new ResizeEngineInstanceReq();
            body.withNewStorageSpace(600);
            body.withOperType("storage");
            request.withBody(body);
            try {
                ResizeEngineInstanceResponse response = client.resizeEngineInstance(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());
            }
        }
    }
    
  • Adding brokers (pay-per-use)

     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.rabbitmq.v2.region.RabbitMQRegion;
    import com.huaweicloud.sdk.rabbitmq.v2.*;
    import com.huaweicloud.sdk.rabbitmq.v2.model.*;
    
    
    public class ResizeEngineInstanceSolution {
    
        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);
    
            RabbitMQClient client = RabbitMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RabbitMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeEngineInstanceRequest request = new ResizeEngineInstanceRequest();
            request.withInstanceId("{instance_id}");
            request.withEngine(ResizeEngineInstanceRequest.EngineEnum.fromValue("{engine}"));
            ResizeEngineInstanceReq body = new ResizeEngineInstanceReq();
            body.withNewBrokerNum(5);
            body.withNewStorageSpace(500);
            body.withOperType("horizontal");
            request.withBody(body);
            try {
                ResizeEngineInstanceResponse response = client.resizeEngineInstance(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());
            }
        }
    }
    
  • Increasing the broker flavor (pay-per-use)

     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
    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.rabbitmq.v2.region.RabbitMQRegion;
    import com.huaweicloud.sdk.rabbitmq.v2.*;
    import com.huaweicloud.sdk.rabbitmq.v2.model.*;
    
    
    public class ResizeEngineInstanceSolution {
    
        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);
    
            RabbitMQClient client = RabbitMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RabbitMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeEngineInstanceRequest request = new ResizeEngineInstanceRequest();
            request.withInstanceId("{instance_id}");
            request.withEngine(ResizeEngineInstanceRequest.EngineEnum.fromValue("{engine}"));
            ResizeEngineInstanceReq body = new ResizeEngineInstanceReq();
            body.withNewProductId("c6.4u8g.cluster");
            body.withOperType("vertical");
            request.withBody(body);
            try {
                ResizeEngineInstanceResponse response = client.resizeEngineInstance(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());
            }
        }
    }
    
  • Expanding the storage space (pay-per-use, old flavors). new_spec_code is the original specification.

     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 huaweicloudsdkrabbitmq.v2.region.rabbitmq_region import RabbitMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrabbitmq.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RabbitMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RabbitMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeEngineInstanceRequest()
            request.instance_id = "{instance_id}"
            request.engine = "{engine}"
            request.body = ResizeEngineInstanceReq(
                new_spec_code="dms.instance.rabbitmq.cluster.c3.2u4g.3",
                new_storage_space=600,
                oper_type="storage"
            )
            response = client.resize_engine_instance(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Adding brokers (pay-per-use, old flavors). new_storage_space is the space of the original specification. new_spec_code is dms.instance.rabbitmq.cluster.c3.2u4g.5 (5 is the broker quantity.)

     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 huaweicloudsdkrabbitmq.v2.region.rabbitmq_region import RabbitMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrabbitmq.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RabbitMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RabbitMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeEngineInstanceRequest()
            request.instance_id = "{instance_id}"
            request.engine = "{engine}"
            request.body = ResizeEngineInstanceReq(
                new_spec_code="dms.instance.rabbitmq.cluster.c3.2u4g.5",
                new_storage_space=600,
                oper_type="horizontal"
            )
            response = client.resize_engine_instance(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Increasing broker flavors (pay-per-use, old flavors). For new_spec_code, replace the original specification with the new one. For example, replace 2u4g with 4u8g.

     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 huaweicloudsdkrabbitmq.v2.region.rabbitmq_region import RabbitMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrabbitmq.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RabbitMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RabbitMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeEngineInstanceRequest()
            request.instance_id = "{instance_id}"
            request.engine = "{engine}"
            request.body = ResizeEngineInstanceReq(
                new_spec_code="dms.instance.rabbitmq.cluster.c3.2u4g.5",
                new_storage_space=600,
                oper_type="vertical"
            )
            response = client.resize_engine_instance(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Expanding the storage space (pay-per-use)

     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
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkrabbitmq.v2.region.rabbitmq_region import RabbitMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrabbitmq.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RabbitMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RabbitMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeEngineInstanceRequest()
            request.instance_id = "{instance_id}"
            request.engine = "{engine}"
            request.body = ResizeEngineInstanceReq(
                new_storage_space=600,
                oper_type="storage"
            )
            response = client.resize_engine_instance(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Adding brokers (pay-per-use)

     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 huaweicloudsdkrabbitmq.v2.region.rabbitmq_region import RabbitMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrabbitmq.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RabbitMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RabbitMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeEngineInstanceRequest()
            request.instance_id = "{instance_id}"
            request.engine = "{engine}"
            request.body = ResizeEngineInstanceReq(
                new_broker_num=5,
                new_storage_space=500,
                oper_type="horizontal"
            )
            response = client.resize_engine_instance(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Increasing the broker flavor (pay-per-use)

     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
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkrabbitmq.v2.region.rabbitmq_region import RabbitMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrabbitmq.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RabbitMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RabbitMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeEngineInstanceRequest()
            request.instance_id = "{instance_id}"
            request.engine = "{engine}"
            request.body = ResizeEngineInstanceReq(
                new_product_id="c6.4u8g.cluster",
                oper_type="vertical"
            )
            response = client.resize_engine_instance(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Expanding the storage space (pay-per-use, old flavors). new_spec_code is the original specification.

     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"
        rabbitmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := rabbitmq.NewRabbitMQClient(
            rabbitmq.RabbitMQClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeEngineInstanceRequest{}
    	request.InstanceId = "{instance_id}"
    	request.Engine = model.GetResizeEngineInstanceRequestEngineEnum().ENGINE
    	newSpecCodeResizeEngineInstanceReq:= "dms.instance.rabbitmq.cluster.c3.2u4g.3"
    	newStorageSpaceResizeEngineInstanceReq:= int32(600)
    	request.Body = &model.ResizeEngineInstanceReq{
    		NewSpecCode: &newSpecCodeResizeEngineInstanceReq,
    		NewStorageSpace: &newStorageSpaceResizeEngineInstanceReq,
    		OperType: "storage",
    	}
    	response, err := client.ResizeEngineInstance(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Adding brokers (pay-per-use, old flavors). new_storage_space is the space of the original specification. new_spec_code is dms.instance.rabbitmq.cluster.c3.2u4g.5 (5 is the broker quantity.)

     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"
        rabbitmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := rabbitmq.NewRabbitMQClient(
            rabbitmq.RabbitMQClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeEngineInstanceRequest{}
    	request.InstanceId = "{instance_id}"
    	request.Engine = model.GetResizeEngineInstanceRequestEngineEnum().ENGINE
    	newSpecCodeResizeEngineInstanceReq:= "dms.instance.rabbitmq.cluster.c3.2u4g.5"
    	newStorageSpaceResizeEngineInstanceReq:= int32(600)
    	request.Body = &model.ResizeEngineInstanceReq{
    		NewSpecCode: &newSpecCodeResizeEngineInstanceReq,
    		NewStorageSpace: &newStorageSpaceResizeEngineInstanceReq,
    		OperType: "horizontal",
    	}
    	response, err := client.ResizeEngineInstance(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Increasing broker flavors (pay-per-use, old flavors). For new_spec_code, replace the original specification with the new one. For example, replace 2u4g with 4u8g.

     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"
        rabbitmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := rabbitmq.NewRabbitMQClient(
            rabbitmq.RabbitMQClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeEngineInstanceRequest{}
    	request.InstanceId = "{instance_id}"
    	request.Engine = model.GetResizeEngineInstanceRequestEngineEnum().ENGINE
    	newSpecCodeResizeEngineInstanceReq:= "dms.instance.rabbitmq.cluster.c3.2u4g.5"
    	newStorageSpaceResizeEngineInstanceReq:= int32(600)
    	request.Body = &model.ResizeEngineInstanceReq{
    		NewSpecCode: &newSpecCodeResizeEngineInstanceReq,
    		NewStorageSpace: &newStorageSpaceResizeEngineInstanceReq,
    		OperType: "vertical",
    	}
    	response, err := client.ResizeEngineInstance(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Expanding the storage space (pay-per-use)

     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
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        rabbitmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := rabbitmq.NewRabbitMQClient(
            rabbitmq.RabbitMQClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeEngineInstanceRequest{}
    	request.InstanceId = "{instance_id}"
    	request.Engine = model.GetResizeEngineInstanceRequestEngineEnum().ENGINE
    	newStorageSpaceResizeEngineInstanceReq:= int32(600)
    	request.Body = &model.ResizeEngineInstanceReq{
    		NewStorageSpace: &newStorageSpaceResizeEngineInstanceReq,
    		OperType: "storage",
    	}
    	response, err := client.ResizeEngineInstance(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Adding brokers (pay-per-use)

     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"
        rabbitmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := rabbitmq.NewRabbitMQClient(
            rabbitmq.RabbitMQClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeEngineInstanceRequest{}
    	request.InstanceId = "{instance_id}"
    	request.Engine = model.GetResizeEngineInstanceRequestEngineEnum().ENGINE
    	newBrokerNumResizeEngineInstanceReq:= int32(5)
    	newStorageSpaceResizeEngineInstanceReq:= int32(500)
    	request.Body = &model.ResizeEngineInstanceReq{
    		NewBrokerNum: &newBrokerNumResizeEngineInstanceReq,
    		NewStorageSpace: &newStorageSpaceResizeEngineInstanceReq,
    		OperType: "horizontal",
    	}
    	response, err := client.ResizeEngineInstance(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Increasing the broker flavor (pay-per-use)

     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
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        rabbitmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rabbitmq/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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := rabbitmq.NewRabbitMQClient(
            rabbitmq.RabbitMQClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeEngineInstanceRequest{}
    	request.InstanceId = "{instance_id}"
    	request.Engine = model.GetResizeEngineInstanceRequestEngineEnum().ENGINE
    	newProductIdResizeEngineInstanceReq:= "c6.4u8g.cluster"
    	request.Body = &model.ResizeEngineInstanceReq{
    		NewProductId: &newProductIdResizeEngineInstanceReq,
    		OperType: "vertical",
    	}
    	response, err := client.ResizeEngineInstance(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

Instance specifications are modified successfully.

Error Codes

See Error Codes.