gateway: implement initial basic run restart
This commit is contained in:
parent
9d2c133817
commit
a4ad66ac2d
@ -332,6 +332,59 @@ func (h *RunsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RunActionType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
RunActionTypeRestart RunActionType = "restart"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RunActionsRequest struct {
|
||||||
|
ActionType RunActionType `json:"action_type"`
|
||||||
|
|
||||||
|
// Restart
|
||||||
|
FromStart bool `json:"from_start"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RunActionsHandler struct {
|
||||||
|
log *zap.SugaredLogger
|
||||||
|
runserviceClient *rsapi.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRunActionsHandler(logger *zap.Logger, runserviceClient *rsapi.Client) *RunActionsHandler {
|
||||||
|
return &RunActionsHandler{log: logger.Sugar(), runserviceClient: runserviceClient}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *RunActionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
runID := vars["runid"]
|
||||||
|
|
||||||
|
var req RunActionsRequest
|
||||||
|
d := json.NewDecoder(r.Body)
|
||||||
|
if err := d.Decode(&req); err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch req.ActionType {
|
||||||
|
case RunActionTypeRestart:
|
||||||
|
req := &rsapi.RunCreateRequest{
|
||||||
|
RunID: runID,
|
||||||
|
FromStart: req.FromStart,
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := h.runserviceClient.CreateRun(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
if resp != nil && resp.StatusCode == http.StatusNotFound {
|
||||||
|
http.Error(w, err.Error(), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type LogsHandler struct {
|
type LogsHandler struct {
|
||||||
log *zap.SugaredLogger
|
log *zap.SugaredLogger
|
||||||
runserviceClient *rsapi.Client
|
runserviceClient *rsapi.Client
|
||||||
|
@ -174,6 +174,7 @@ func (g *Gateway) Run(ctx context.Context) error {
|
|||||||
runHandler := api.NewRunHandler(logger, g.runserviceClient)
|
runHandler := api.NewRunHandler(logger, g.runserviceClient)
|
||||||
runsHandler := api.NewRunsHandler(logger, g.runserviceClient)
|
runsHandler := api.NewRunsHandler(logger, g.runserviceClient)
|
||||||
runtaskHandler := api.NewRuntaskHandler(logger, g.runserviceClient)
|
runtaskHandler := api.NewRuntaskHandler(logger, g.runserviceClient)
|
||||||
|
runActionsHandler := api.NewRunActionsHandler(logger, g.runserviceClient)
|
||||||
|
|
||||||
logsHandler := api.NewLogsHandler(logger, g.runserviceClient)
|
logsHandler := api.NewLogsHandler(logger, g.runserviceClient)
|
||||||
|
|
||||||
@ -229,6 +230,7 @@ func (g *Gateway) Run(ctx context.Context) error {
|
|||||||
apirouter.Handle("/orgs/{orgname}", authForcedHandler(deleteOrgHandler)).Methods("DELETE")
|
apirouter.Handle("/orgs/{orgname}", authForcedHandler(deleteOrgHandler)).Methods("DELETE")
|
||||||
|
|
||||||
apirouter.Handle("/run/{runid}", authForcedHandler(runHandler)).Methods("GET")
|
apirouter.Handle("/run/{runid}", authForcedHandler(runHandler)).Methods("GET")
|
||||||
|
apirouter.Handle("/run/{runid}/actions", authForcedHandler(runActionsHandler)).Methods("POST")
|
||||||
apirouter.Handle("/run/{runid}/task/{taskid}", authForcedHandler(runtaskHandler)).Methods("GET")
|
apirouter.Handle("/run/{runid}/task/{taskid}", authForcedHandler(runtaskHandler)).Methods("GET")
|
||||||
apirouter.Handle("/runs", authForcedHandler(runsHandler)).Methods("GET")
|
apirouter.Handle("/runs", authForcedHandler(runsHandler)).Methods("GET")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user