-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJobs.go
134 lines (109 loc) · 2.92 KB
/
Jobs.go
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package libremotebuild
import (
"fmt"
"sort"
"time"
)
// AddJob a job
func (librb LibRB) AddJob(jobType JobType, uploadType UploadType, args map[string]string, disableCcache bool) (*AddJobResponse, error) {
var response AddJobResponse
// Do http request
resp, err := librb.NewRequest(EPJobAdd, AddJobRequest{
Type: jobType,
UploadType: uploadType,
Args: args,
DisableCcache: disableCcache,
}).WithAuthFromConfig().
WithMethod(PUT).
Do(&response)
// Return new error on ... error
if err != nil || resp.Status == ResponseError {
return nil, NewErrorFromResponse(resp, err)
}
return &response, nil
}
// ListJobs list running jobs
func (librb LibRB) ListJobs(limit int) (*ListJobsResponse, error) {
var response ListJobsResponse
// Do http request
resp, err := librb.NewRequest(EPJobs, ListJobsRequest{
Limit: limit,
}).WithAuthFromConfig().
WithMethod(GET).
Do(&response)
// Return new error on ... error
if err != nil || resp.Status == ResponseError {
return nil, NewErrorFromResponse(resp, err)
}
// Sort jobs
sort.Sort(SortByJob(response.Jobs))
return &response, nil
}
// SetJobState pauses a running or queued job
func (librb LibRB) SetJobState(jobID uint, state JobState) error {
switch state {
case JobPaused, JobRunning:
default:
return fmt.Errorf("Invalid state to set job to")
}
endpoint := EPJobPause
if state == JobRunning {
endpoint = EPJobResume
}
// Do http request
resp, err := librb.NewRequest(endpoint, JobRequest{
JobID: jobID,
}).WithAuthFromConfig().
WithMethod(PUT).
Do(nil)
// Return new error on ... error
if err != nil || resp.Status == ResponseError {
return NewErrorFromResponse(resp, err)
}
return nil
}
// CancelJob cancel a running or queued job
func (librb LibRB) CancelJob(jobID uint) error {
// Do http request
resp, err := librb.NewRequest(EPJobCancel, JobRequest{
JobID: jobID,
}).WithAuthFromConfig().
WithMethod(POST).
Do(nil)
// Return new error on ... error
if err != nil || resp.Status == ResponseError {
return NewErrorFromResponse(resp, err)
}
return nil
}
// JobInfo gets information for a job
func (librb LibRB) JobInfo(jobID uint) (*JobInfo, error) {
var response JobInfo
// Do http request
resp, err := librb.NewRequest(EPJobInfo, JobRequest{
JobID: jobID,
}).WithAuthFromConfig().
WithMethod(GET).
Do(&response)
// Return new error on ... error
if err != nil || resp.Status == ResponseError {
return nil, NewErrorFromResponse(resp, err)
}
return &response, nil
}
// Logs for a job
func (librb LibRB) Logs(jobID uint, since time.Time) (*RestRequestResponse, error) {
// Do http request
resp, err := librb.NewRequest(EPJobLogs, JobLogsRequest{
Since: since,
JobID: jobID,
}).WithAuthFromConfig().
WithNoBodyClose().
WithMethod(GET).
Do(nil)
// Return new error on ... error
if err != nil || resp.Status == ResponseError {
return nil, NewErrorFromResponse(resp, err)
}
return resp, nil
}