forked from taskcluster/taskcluster
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworkermanagerprovider.go
47 lines (39 loc) · 1.46 KB
/
workermanagerprovider.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
package mocktc
import (
"net/http"
"github.com/gorilla/mux"
"github.com/taskcluster/taskcluster/v47/clients/client-go/tcworkermanager"
"github.com/taskcluster/taskcluster/v47/internal/mocktc/tc"
)
type WorkerManagerProvider struct {
workerManager tc.WorkerManager
}
func NewWorkerManagerProvider(workerManager tc.WorkerManager) *WorkerManagerProvider {
return &WorkerManagerProvider{
workerManager: workerManager,
}
}
func (wp *WorkerManagerProvider) RegisterService(r *mux.Router) {
s := r.PathPrefix("/api/worker-manager/v1").Subrouter()
s.HandleFunc("/worker/register", wp.RegisterWorker).Methods("POST")
s.HandleFunc("/worker-pool/{workerPoolId}", wp.WorkerPool).Methods("GET")
s.HandleFunc("/worker-pool/{workerPoolId}", wp.CreateWorkerPool).Methods("PUT")
}
func (wp *WorkerManagerProvider) RegisterWorker(w http.ResponseWriter, r *http.Request) {
var payload tcworkermanager.RegisterWorkerRequest
Marshal(r, &payload)
out, err := wp.workerManager.RegisterWorker(&payload)
JSON(w, out, err)
}
func (wp *WorkerManagerProvider) WorkerPool(w http.ResponseWriter, r *http.Request) {
vars := Vars(r)
out, err := wp.workerManager.WorkerPool(vars["workerPoolId"])
JSON(w, out, err)
}
func (wp *WorkerManagerProvider) CreateWorkerPool(w http.ResponseWriter, r *http.Request) {
vars := Vars(r)
var payload tcworkermanager.WorkerPoolDefinition
Marshal(r, &payload)
out, err := wp.workerManager.CreateWorkerPool(vars["workerPoolId"], &payload)
JSON(w, out, err)
}