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 the project ID, 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 the link |
name |
Yes |
String |
Link name |
id |
No |
Integer |
Link ID |
creation-date |
No |
Long |
Time when the link was created |
connector-name |
Yes |
String |
Connector name. The mappings between the connectors and links are as follows: - generic-jdbc-connector: link to relational database- 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. - http-connector: link to HTTP/HTTPS (No link parameters are required.)- dms-kafka-connector: link to DMSKafka |
update-date |
No |
Long |
Time when the link was updated |
enabled |
No |
Boolean |
Whether to activate the link. The default value is true. |
update-user |
No |
String |
User who updated the 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 |
String |
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,WARNING Enumeration values:
|
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,WARNING Enumeration values:
|
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
OK
{ "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
An internal service error occurred. For details, 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 |
# coding: utf-8 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 = __import__('os').getenv("CLOUD_SDK_AK") sk = __import__('os').getenv("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 |
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}" var listInputsConfigs = []model.Input{ { 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", }, } 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 |
OK |
400 |
Request error. |
401 |
Authentication failed. |
403 |
You do not have required permissions to perform this operation. |
404 |
The requested resource was not found. |
500 |
An internal service error occurred. For details, 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