Creating a Link
Function
This API is used to create a link.
Calling Method
For details, see Calling APIs.
URI
POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/link
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Project ID. For details about how to obtain it, see Project ID and Account ID. |
cluster_id |
Yes |
String |
Cluster ID |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
validate |
No |
String |
When the parameter is set to true, the API only validates whether the parameters are correctly configured, but does not create any link. |
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). |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
links |
Yes |
Array of links objects |
Link list. For details, see the descriptions of links parameters. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
link-config-values |
Yes |
link-config-values object |
Link parameters. For details, see the descriptions of link-config-values parameters. |
creation-user |
No |
String |
User who created a link |
name |
Yes |
String |
Link name |
id |
No |
Integer |
Link ID |
creation-date |
No |
Long |
Time when a link was created |
connector-name |
Yes |
String |
Connector name. The corresponding link parameter is generic-jdbc-connector, which indicates a relational database link. obs-connector: link to OBS hdfs-connector: link to HDFS hbase-connector: link to HBase and link to CloudTable hive-connector: link to Hive ftp-connector/sftp-connector: link to an FTP or SFTP server mongodb-connector: link to MongoDB redis-connector: link to Redis/DCS kafka-connector: link to Kafka dis-connector: link to DIS elasticsearch-connector: link to Elasticsearch/Cloud Search Service (CSS) [dli-connector: link to DLI] (tag:nohcs)http-connector: link to HTTP/HTTPS (No link parameters are required.) dms-kafka-connector: link to DMSKafka |
update-date |
No |
Long |
Time when a link was updated |
enabled |
No |
Boolean |
Whether to activate the link. The default value is true. |
update-user |
No |
String |
User who updated a link |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
configs |
Yes |
Array of configs objects |
Data structure of link parameters. For details, see the descriptions of configs parameters. |
extended-configs |
No |
extended-configs object |
Extended configuration. For details, see the descriptions of extended-configs parameters. |
validators |
No |
Array of strings |
Validator |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
inputs |
Yes |
Array of Input objects |
Input parameter list. Each element in the list is in name,value format. For details, see the descriptions of inputs parameters. In the from-config-values data structure, the value of this parameter varies with the source link type. For details, see section "Source Job Parameters" in the Cloud Data Migration User Guide. In the to-config-values data structure, the value of this parameter varies with the destination link type. For details, see section "Destination Job Parameters" in the Cloud Data Migration User Guide. For details about the inputs parameter in the driver-config-values data structure, see the job parameter descriptions. |
name |
Yes |
String |
Configuration name. The value is fromJobConfig for a source job, toJobConfig for a destination job, and linkConfig for a link. |
id |
No |
Integer |
Configuration ID, which is generated by the system. You do not need to set this parameter. |
type |
No |
String |
Configuration type, which is generated by the system. You do not need to set this parameter. The value can be LINK (for link management APIs) or JOB (for job management APIs). |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
name |
Yes |
String |
Parameter name.
|
value |
Yes |
Object |
Parameter value, which must be a string. |
type |
No |
String |
Value type, such as STRING and INTEGER. The value is set by the system. |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
name |
String |
Link name |
validation-result |
Array of validationResult objects |
Validation structure. If a link fails to be created, the failure cause is returned. For details, see the descriptions of validation-result parameters. If a link is successfully created, an empty list is returned. |
Parameter |
Type |
Description |
---|---|---|
linkConfig |
Array of validationLinkConfig objects |
Validation result of link creation or update. For details, see the descriptions of validationLinkConfig parameters. |
Parameter |
Type |
Description |
---|---|---|
message |
String |
Error message |
status |
String |
Error level, for example, ERROR or WARNING |
Status code: 400
Parameter |
Type |
Description |
---|---|---|
code |
String |
Return code |
errCode |
String |
Error code |
message |
String |
Error message |
externalMessage |
String |
Additional information |
Status code: 500
Parameter |
Type |
Description |
---|---|---|
message |
String |
Error message |
status |
String |
Error level, for example, ERROR or WARNING |
Example Requests
Creating a link named mysql_link
POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/link { "links" : [ { "link-config-values" : { "configs" : [ { "inputs" : [ { "name" : "linkConfig.databaseType", "value" : "MYSQL" }, { "name" : "linkConfig.host", "value" : "100.94.8.163" }, { "name" : "linkConfig.port", "value" : "3306" }, { "name" : "linkConfig.database", "value" : "DB_name" }, { "name" : "linkConfig.username", "value" : "username" }, { "name" : "linkConfig.password", "value" : "DB_password" }, { "name" : "linkConfig.fetchSize", "value" : "100000" }, { "name" : "linkConfig.usingNative", "value" : "false" } ], "name" : "linkConfig" } ] }, "name" : "mysql_link", "creation-date" : 1496654788622, "connector-name" : "generic-jdbc-connector", "update-date" : 1496654788622, "enabled" : true } ] }
Example Responses
Status code: 200
Request succeeded.
{ "name" : "rdb_link", "validation-result" : [ { } ] }
Status code: 400
Request error.
{ "code" : "Cdm.0315", "errCode" : "Cdm.0315", "message" : "Link name [ftp_link] already exist or created by other user.", "externalMessage" : "Link name [ftp_link] already exist or created by other user." }
Status code: 500
Internal service error. For details about the returned error code, see Error Codes.
{ "validation-result" : [ { "linkConfig" : [ { "message" : "Can't connect to the database with given credentials: The authentication type 12 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.", "status" : "ERROR" } ] } ] }
SDK Sample Code
The SDK sample code is as follows.
Creating a link named mysql_link
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
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 CreateLinkSolution { 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(); CreateLinkRequest request = new CreateLinkRequest(); request.withClusterId("{cluster_id}"); CdmCreateAndUpdateLinkReq body = new CdmCreateAndUpdateLinkReq(); List<Input> listConfigsInputs = new ArrayList<>(); listConfigsInputs.add( new Input() .withName("linkConfig.databaseType") .withValue("MYSQL") ); listConfigsInputs.add( new Input() .withName("linkConfig.host") .withValue("100.94.8.163") ); listConfigsInputs.add( new Input() .withName("linkConfig.port") .withValue("3306") ); listConfigsInputs.add( new Input() .withName("linkConfig.database") .withValue("DB_name") ); listConfigsInputs.add( new Input() .withName("linkConfig.username") .withValue("username") ); listConfigsInputs.add( new Input() .withName("linkConfig.password") .withValue("DB_password") ); listConfigsInputs.add( new Input() .withName("linkConfig.fetchSize") .withValue("100000") ); listConfigsInputs.add( new Input() .withName("linkConfig.usingNative") .withValue("false") ); List<Configs> listLinkConfigValuesConfigs = new ArrayList<>(); listLinkConfigValuesConfigs.add( new Configs() .withInputs(listConfigsInputs) .withName("linkConfig") ); LinksLinkconfigvalues linkConfigValuesLinks = new LinksLinkconfigvalues(); linkConfigValuesLinks.withConfigs(listLinkConfigValuesConfigs); List<Links> listbodyLinks = new ArrayList<>(); listbodyLinks.add( new Links() .withLinkConfigValues(linkConfigValuesLinks) .withName("mysql_link") .withCreationDate(1496654788622L) .withConnectorName("generic-jdbc-connector") .withUpdateDate(1496654788622L) .withEnabled(true) ); body.withLinks(listbodyLinks); request.withBody(body); try { CreateLinkResponse response = client.createLink(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 link named mysql_link
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 |
# 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 = CreateLinkRequest() request.cluster_id = "{cluster_id}" listInputsConfigs = [ Input( name="linkConfig.databaseType", value="MYSQL" ), Input( name="linkConfig.host", value="100.94.8.163" ), Input( name="linkConfig.port", value="3306" ), Input( name="linkConfig.database", value="DB_name" ), Input( name="linkConfig.username", value="username" ), Input( name="linkConfig.password", value="DB_password" ), Input( name="linkConfig.fetchSize", value="100000" ), Input( name="linkConfig.usingNative", value="false" ) ] listConfigsLinkConfigValues = [ Configs( inputs=listInputsConfigs, name="linkConfig" ) ] linkConfigValuesLinks = LinksLinkconfigvalues( configs=listConfigsLinkConfigValues ) listLinksbody = [ Links( link_config_values=linkConfigValuesLinks, name="mysql_link", creation_date=1496654788622, connector_name="generic-jdbc-connector", update_date=1496654788622, enabled=True ) ] request.body = CdmCreateAndUpdateLinkReq( links=listLinksbody ) response = client.create_link(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 link named mysql_link
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
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.CreateLinkRequest{} request.ClusterId = "{cluster_id}" valueInputs:= "MYSQL" var valueInputsInterface interface{} = valueInputs valueInputs1:= "100.94.8.163" var valueInputsInterface1 interface{} = valueInputs1 valueInputs2:= "3306" var valueInputsInterface2 interface{} = valueInputs2 valueInputs3:= "DB_name" var valueInputsInterface3 interface{} = valueInputs3 valueInputs4:= "username" var valueInputsInterface4 interface{} = valueInputs4 valueInputs5:= "DB_password" var valueInputsInterface5 interface{} = valueInputs5 valueInputs6:= "100000" var valueInputsInterface6 interface{} = valueInputs6 valueInputs7:= "false" var valueInputsInterface7 interface{} = valueInputs7 var listInputsConfigs = []model.Input{ { Name: "linkConfig.databaseType", Value: &valueInputsInterface, }, { Name: "linkConfig.host", Value: &valueInputsInterface1, }, { Name: "linkConfig.port", Value: &valueInputsInterface2, }, { Name: "linkConfig.database", Value: &valueInputsInterface3, }, { Name: "linkConfig.username", Value: &valueInputsInterface4, }, { Name: "linkConfig.password", Value: &valueInputsInterface5, }, { Name: "linkConfig.fetchSize", Value: &valueInputsInterface6, }, { Name: "linkConfig.usingNative", Value: &valueInputsInterface7, }, } var listConfigsLinkConfigValues = []model.Configs{ { Inputs: listInputsConfigs, Name: "linkConfig", }, } linkConfigValuesLinks := &model.LinksLinkconfigvalues{ Configs: listConfigsLinkConfigValues, } creationDateLinks:= int64(1496654788622) updateDateLinks:= int64(1496654788622) enabledLinks:= true var listLinksbody = []model.Links{ { LinkConfigValues: linkConfigValuesLinks, Name: "mysql_link", CreationDate: &creationDateLinks, ConnectorName: "generic-jdbc-connector", UpdateDate: &updateDateLinks, Enabled: &enabledLinks, }, } request.Body = &model.CdmCreateAndUpdateLinkReq{ Links: listLinksbody, } response, err := client.CreateLink(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 |
Request succeeded. |
400 |
Request error. |
401 |
Authentication failed. |
403 |
No operation permissions. |
404 |
No resources found. |
500 |
Internal service error. For details about the returned error code, see Error Codes. |
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