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  }