Creating a Cluster
Function
This API is used to create a cluster.
Calling Method
For details, see Calling APIs.
URI
POST /v1.1/{project_id}/clusters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Project ID. For details about how to obtain it, see Project ID and Account ID. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header). |
X-Language |
Yes |
String |
Request language |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
cluster |
Yes |
cluster object |
Cluster object. For details, see the descriptions of cluster parameters. |
auto_remind |
No |
Boolean |
Whether to enable message notification. If you enable this function, you can configure a maximum of five mobile numbers or email addresses. You will be notified of table/file migration job failures and EIP exceptions by SMS message or email. |
phone_num |
No |
String |
Mobile number for receiving notifications |
|
No |
String |
Email address for receiving notifications |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
scheduleBootTime |
No |
String |
Time for scheduled startup of a CDM cluster. The CDM cluster starts at this time every day. |
isScheduleBootOff |
No |
Boolean |
Whether to enable scheduled startup/shutdown. The scheduled startup/shutdown and auto shutdown functions cannot be enabled at the same time. |
instances |
No |
Array of instance objects |
Node list. For details, see the descriptions of instances parameters. |
datastore |
No |
Datastore object |
Cluster information. For details, see the descriptions of datastore parameters. |
extended_properties |
No |
ExtendedProperties object |
Extended attribute. For details, see the descriptions of extended_properties parameters. |
scheduleOffTime |
No |
String |
Time for scheduled shutdown of a CDM cluster. The CDM cluster shuts down directly at this time every day without waiting for unfinished jobs to complete. |
vpcId |
No |
String |
VPC ID, which is used for configuring a network for the cluster. |
name |
No |
String |
Cluster name |
sys_tags |
No |
Array of sys_tags objects |
Enterprise project information. For details, see the descriptions of sys_tags parameters. |
isAutoOff |
No |
Boolean |
Whether to enable auto shutdown. The auto shutdown and scheduled startup/shutdown functions cannot be enabled at the same time. After auto shutdown is enabled, if no job is running in the cluster and no scheduled job is created, a cluster will automatically shut down 15 minutes later to reduce costs. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
availability_zone |
Yes |
String |
AZ where a cluster is located. It can be obtained from https://developer.huaweicloud.com/intl/en-us/endpoint. |
nics |
Yes |
Array of nics objects |
NIC list. A maximum of two NICs are supported. For details, see the descriptions of nics parameters. |
flavorRef |
Yes |
String |
Instance flavor.
|
type |
Yes |
String |
Node type. Currently, only cdm is available. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
securityGroupId |
Yes |
String |
Security group ID |
net-id |
Yes |
String |
Subnet ID |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
type |
No |
String |
Type. Generally, the value is cdm. |
version |
No |
String |
Cluster version |
Response Parameters
Status code: 202
Parameter |
Type |
Description |
---|---|---|
name |
String |
Cluster name |
id |
String |
Cluster ID |
task |
Task object |
Task information |
datastore |
Datastore object |
Cluster information |
instances |
Array of ClusterInstance objects |
Cluster node information |
Example Requests
Creating a CDM cluster whose version is 1.8.10 and name is cdm-ab82
POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters { "cluster" : { "scheduleBootTime" : "", "isScheduleBootOff" : false, "instances" : [ { "availability_zone" : "xx-xxx", "nics" : [ { "securityGroupId" : "c37852d2-2d12-41cb-af47-65c80e995c80", "net-id" : "2d120298-6130-44d4-a438-454912fff901" } ], "flavorRef" : "5ddb1071-c5d7-40e0-a874-8a032e81a697", "type" : "cdm" } ], "datastore" : { "type" : "cdm", "version" : "1.8.10" }, "scheduleOffTime" : "", "vpcId" : "67c06084-2212-4242-bcd4-d2144c2385a9", "name" : "cdm-ab82", "sys_tags" : [ { "value" : "1ce45885-4033-40d2-bdde-d4dbaceb387d", "key" : "_sys_enterprise_project_id" } ], "isAutoOff" : false }, "auto_remind" : false, "phone_num" : "", "email" : "" }
Example Responses
Status code: 202
Accepted.
{ "id" : "befc862c-9286-46a0-a1d6-300d98b63aad", "name" : "cdm-4ef213", "task" : { "id" : "2c9080047f1b1185017f1ef6ad0500ac", "name" : "rdsCreateBackupJob" }, "datastore" : { "type" : "cdm", "version" : "2.9.1.100" }, "instances" : [ { "id" : "b2672e7d-2faf-423f-96bb-0664cd743cfd", "name" : "cdm-4ef213-cdm-dn-1-1", "type" : "cdm", "shard_id" : "dn-1" } ] }
SDK Sample Code
The SDK sample code is as follows.
Creating a CDM cluster whose version is 1.8.10 and name is cdm-ab82
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
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.cdm.v1.region.CdmRegion; import com.huaweicloud.sdk.cdm.v1.*; import com.huaweicloud.sdk.cdm.v1.model.*; import java.util.List; import java.util.ArrayList; public class CreateClusterSolution { 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); CdmClient client = CdmClient.newBuilder() .withCredential(auth) .withRegion(CdmRegion.valueOf("<YOUR REGION>")) .build(); CreateClusterRequest request = new CreateClusterRequest(); CdmCreateClusterReq body = new CdmCreateClusterReq(); List<SysTags> listClusterSysTags = new ArrayList<>(); listClusterSysTags.add( new SysTags() .withValue("1ce45885-4033-40d2-bdde-d4dbaceb387d") .withKey("_sys_enterprise_project_id") ); Datastore datastoreCluster = new Datastore(); datastoreCluster.withType("cdm") .withVersion("1.8.10"); List<Nics> listInstancesNics = new ArrayList<>(); listInstancesNics.add( new Nics() .withSecurityGroupId("c37852d2-2d12-41cb-af47-65c80e995c80") .withNetId("2d120298-6130-44d4-a438-454912fff901") ); List<Instance> listClusterInstances = new ArrayList<>(); listClusterInstances.add( new Instance() .withAvailabilityZone("xx-xxx") .withNics(listInstancesNics) .withFlavorRef("5ddb1071-c5d7-40e0-a874-8a032e81a697") .withType("cdm") ); CdmCreateClusterReqCluster clusterbody = new CdmCreateClusterReqCluster(); clusterbody.withScheduleBootTime("") .withIsScheduleBootOff(false) .withInstances(listClusterInstances) .withDatastore(datastoreCluster) .withScheduleOffTime("") .withVpcId("67c06084-2212-4242-bcd4-d2144c2385a9") .withName("cdm-ab82") .withSysTags(listClusterSysTags) .withIsAutoOff(false); body.withEmail(""); body.withPhoneNum(""); body.withAutoRemind(false); body.withCluster(clusterbody); request.withBody(body); try { CreateClusterResponse response = client.createCluster(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()); } } } |
Creating a CDM cluster whose version is 1.8.10 and name is cdm-ab82
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 64 65 66 67 68 69 70 71 72 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcdm.v1.region.cdm_region import CdmRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcdm.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 = CdmClient.new_builder() \ .with_credentials(credentials) \ .with_region(CdmRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateClusterRequest() listSysTagsCluster = [ SysTags( value="1ce45885-4033-40d2-bdde-d4dbaceb387d", key="_sys_enterprise_project_id" ) ] datastoreCluster = Datastore( type="cdm", version="1.8.10" ) listNicsInstances = [ Nics( security_group_id="c37852d2-2d12-41cb-af47-65c80e995c80", net_id="2d120298-6130-44d4-a438-454912fff901" ) ] listInstancesCluster = [ Instance( availability_zone="xx-xxx", nics=listNicsInstances, flavor_ref="5ddb1071-c5d7-40e0-a874-8a032e81a697", type="cdm" ) ] clusterbody = CdmCreateClusterReqCluster( schedule_boot_time="", is_schedule_boot_off=False, instances=listInstancesCluster, datastore=datastoreCluster, schedule_off_time="", vpc_id="67c06084-2212-4242-bcd4-d2144c2385a9", name="cdm-ab82", sys_tags=listSysTagsCluster, is_auto_off=False ) request.body = CdmCreateClusterReq( email="", phone_num="", auto_remind=False, cluster=clusterbody ) response = client.create_cluster(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Creating a CDM cluster whose version is 1.8.10 and name is cdm-ab82
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cdm "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdm/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdm/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdm/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 := cdm.NewCdmClient( cdm.CdmClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateClusterRequest{} var listSysTagsCluster = []model.SysTags{ { Value: "1ce45885-4033-40d2-bdde-d4dbaceb387d", Key: "_sys_enterprise_project_id", }, } typeDatastore:= "cdm" versionDatastore:= "1.8.10" datastoreCluster := &model.Datastore{ Type: &typeDatastore, Version: &versionDatastore, } var listNicsInstances = []model.Nics{ { SecurityGroupId: "c37852d2-2d12-41cb-af47-65c80e995c80", NetId: "2d120298-6130-44d4-a438-454912fff901", }, } var listInstancesCluster = []model.Instance{ { AvailabilityZone: "xx-xxx", Nics: listNicsInstances, FlavorRef: "5ddb1071-c5d7-40e0-a874-8a032e81a697", Type: "cdm", }, } scheduleBootTimeCluster:= "" isScheduleBootOffCluster:= false scheduleOffTimeCluster:= "" vpcIdCluster:= "67c06084-2212-4242-bcd4-d2144c2385a9" nameCluster:= "cdm-ab82" isAutoOffCluster:= false clusterbody := &model.CdmCreateClusterReqCluster{ ScheduleBootTime: &scheduleBootTimeCluster, IsScheduleBootOff: &isScheduleBootOffCluster, Instances: &listInstancesCluster, Datastore: datastoreCluster, ScheduleOffTime: &scheduleOffTimeCluster, VpcId: &vpcIdCluster, Name: &nameCluster, SysTags: &listSysTagsCluster, IsAutoOff: &isAutoOffCluster, } emailCdmCreateClusterReq:= "" phoneNumCdmCreateClusterReq:= "" autoRemindCdmCreateClusterReq:= false request.Body = &model.CdmCreateClusterReq{ Email: &emailCdmCreateClusterReq, PhoneNum: &phoneNumCdmCreateClusterReq, AutoRemind: &autoRemindCdmCreateClusterReq, Cluster: clusterbody, } response, err := client.CreateCluster(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 |
---|---|
202 |
Accepted. |
400 |
Request error. |
401 |
Authorization failed. |
403 |
No operation permissions. |
404 |
No resources found. |
500 |
Internal interface error. |
503 |
Service unavailable. |
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