github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/cdm/v1/job/requests.go (about) 1 package job 2 3 import "github.com/chnsz/golangsdk" 4 5 const ( 6 GenericJdbcConnector = "generic-jdbc-connector" 7 ObsConnector = "obs-connector" 8 ThirdpartyObsConnector = "thirdparty-obs-connector" 9 HdfsConnector = "hdfs-connector" 10 HbaseConnector = "hbase-connector" 11 HiveConnector = "hive-connector" 12 SftpConnector = "sftp-connector" 13 FtpConnector = "ftp-connector" 14 MongodbConnector = "mongodb-connector" 15 KafkaConnector = "kafka-connector" 16 DisConnector = "dis-connector" 17 ElasticsearchConnector = "elasticsearch-connector" 18 DliConnector = "dli-connector" 19 OpentsdbConnector = "opentsdb-connector" 20 DmsKafkaConnector = "dms-kafka-connector" 21 22 StatusBooting = "BOOTING" 23 StatusFailureOnSubmit = "FAILURE_ON_SUBMIT" 24 StatusRunning = "RUNNING" 25 StatusSucceeded = "SUCCEEDED" 26 StatusFailed = "FAILED" 27 StatusUnknown = "UNKNOWN" 28 StatusNeverExecuted = "NEVER_EXECUTED" 29 ) 30 31 type JobCreateOpts struct { 32 Jobs []Job `json:"jobs" required:"true"` 33 } 34 35 type Job struct { 36 // Job type. The options are as follows: 37 // NORMAL_JOB: table/file migration 38 // BATCH_JOB: entire DB migration 39 // SCENARIO_JOB: scenario migration 40 JobType string `json:"job_type,omitempty"` 41 // Job name, which contains 1 to 240 characters. 42 Name string `json:"name,omitempty"` 43 44 // Source link name 45 FromLinkName string `json:"from-link-name,omitempty"` 46 // Source link type 47 FromConnectorName string `json:"from-connector-name,omitempty"` 48 // Source link parameter configuration 49 FromConfigValues JobConfigs `json:"from-config-values,omitempty"` 50 51 // Destination link name 52 ToLinkName string `json:"to-link-name,omitempty"` 53 // Destination link type 54 ToConnectorName string `json:"to-connector-name,omitempty"` 55 // Destination link parameter configuration 56 ToConfigValues JobConfigs `json:"to-config-values,omitempty"` 57 58 // Job parameter configuration 59 DriverConfigValues JobConfigs `json:"driver-config-values,omitempty"` 60 61 CreationUser string `json:"creation-user,omitempty"` 62 CreationDate *int `json:"creation-date,omitempty"` 63 UpdateDate *int `json:"update-date,omitempty"` 64 UpdateUser string `json:"update-user,omitempty"` 65 // Status of a job. The options are as follows: 66 // BOOTING: starting 67 // RUNNING: running 68 // SUCCEEDED: successful 69 // FAILED: failed 70 // NEW: not executed 71 Status string `json:"status,omitempty"` 72 } 73 74 type JobConfigs struct { 75 Configs []Configs `json:"configs,omitempty"` 76 } 77 78 type Configs struct { 79 Inputs []Input `json:"inputs" required:"true"` 80 Name string `json:"name" required:"true"` 81 } 82 83 type Input struct { 84 Name string `json:"name,omitempty"` 85 Value string `json:"value,omitempty"` 86 Type string `json:"type,omitempty"` 87 } 88 89 type GetJobsOpts struct { 90 // When job_name is all, this parameter is used for fuzzy job filtering. 91 Filter string `q:"filter"` 92 // Page number Minimum: 1 93 PageNo int `q:"page_no"` 94 // Number of jobs on each page. The value ranges from 10 to 100. 95 PageSize int `q:"page_size"` 96 // Job type. The options are as follows: 97 // jobType=NORMAL_JOB: table/file migration job 98 // jobType=BATCH_JOB: entire DB migration job 99 // jobType=SCENARIO_JOB: scenario migration job 100 // If this parameter is not specified, only table/file migration jobs are queried by default. 101 JobType string `q:"jobType"` 102 } 103 104 type ListJobSubmissionsOpts struct { 105 JobName string `q:"jname"` 106 } 107 108 var RequestOpts = golangsdk.RequestOpts{ 109 MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"}, 110 } 111 112 func Create(c *golangsdk.ServiceClient, clusterId string, opts JobCreateOpts) (*CreateResponse, error) { 113 b, err := golangsdk.BuildRequestBody(opts, "") 114 if err != nil { 115 return nil, err 116 } 117 118 var rst CreateResponse 119 _, err = c.Post(createURL(c, clusterId), b, &rst, &golangsdk.RequestOpts{ 120 MoreHeaders: RequestOpts.MoreHeaders, 121 }) 122 return &rst, err 123 } 124 125 func Update(c *golangsdk.ServiceClient, clusterId string, name string, opts JobCreateOpts) (*UpdateResponse, error) { 126 b, err := golangsdk.BuildRequestBody(opts, "") 127 if err != nil { 128 return nil, err 129 } 130 131 var rst UpdateResponse 132 _, err = c.Put(updateURL(c, clusterId, name), b, &rst, &golangsdk.RequestOpts{ 133 MoreHeaders: RequestOpts.MoreHeaders, 134 }) 135 return &rst, err 136 } 137 138 func Delete(c *golangsdk.ServiceClient, clusterId string, name string) (*ErrorResponse, error) { 139 var rst ErrorResponse 140 _, err := c.DeleteWithResponse(deleteURL(c, clusterId, name), &rst, &golangsdk.RequestOpts{ 141 MoreHeaders: RequestOpts.MoreHeaders, 142 }) 143 return &rst, err 144 } 145 146 func Get(c *golangsdk.ServiceClient, clusterId string, jobName string, opts GetJobsOpts) (*JobsDetail, error) { 147 url := getURL(c, clusterId, jobName) 148 query, err := golangsdk.BuildQueryString(opts) 149 if err != nil { 150 return nil, err 151 } 152 url += query.String() 153 154 var rst JobsDetail 155 _, err = c.Get(url, &rst, &golangsdk.RequestOpts{ 156 MoreHeaders: RequestOpts.MoreHeaders, 157 }) 158 return &rst, err 159 } 160 161 func Start(c *golangsdk.ServiceClient, clusterId string, jobName string) (*StartJobResponse, error) { 162 var rst StartJobResponse 163 _, err := c.Put(startURL(c, clusterId, jobName), nil, &rst, &golangsdk.RequestOpts{ 164 MoreHeaders: RequestOpts.MoreHeaders, 165 }) 166 return &rst, err 167 } 168 169 func Stop(c *golangsdk.ServiceClient, clusterId string, jobName string) *golangsdk.ErrResult { 170 var r golangsdk.ErrResult 171 _, r.Err = c.Put(stopURL(c, clusterId, jobName), nil, nil, &golangsdk.RequestOpts{ 172 MoreHeaders: RequestOpts.MoreHeaders, 173 }) 174 return &r 175 } 176 177 func GetJobStatus(c *golangsdk.ServiceClient, clusterId string, jobName string) (*StatusResponse, error) { 178 var rst StatusResponse 179 _, err := c.Get(getStatusURL(c, clusterId, jobName), &rst, &golangsdk.RequestOpts{ 180 MoreHeaders: RequestOpts.MoreHeaders, 181 }) 182 return &rst, err 183 } 184 185 func ListJobSubmissions(c *golangsdk.ServiceClient, clusterId string, opts ListJobSubmissionsOpts) (*ListSubmissionsRst, 186 error) { 187 url := ListJobSubmissionsURL(c, clusterId) 188 query, err := golangsdk.BuildQueryString(opts) 189 if err != nil { 190 return nil, err 191 } 192 url += query.String() 193 194 var rst ListSubmissionsRst 195 _, err = c.Get(url, &rst, &golangsdk.RequestOpts{ 196 MoreHeaders: RequestOpts.MoreHeaders, 197 }) 198 return &rst, err 199 }