Files
atlantis/server/status_controller.go
Luke Kysow 78b1ea25d5 Refactor draining feature
- trigger on SIGTERM/INT rather than HTTP POST
- remove atlantis drain command
- refactor into generic status controller
2020-05-25 15:03:08 -07:00

38 lines
944 B
Go

package server
import (
"encoding/json"
"fmt"
"net/http"
"github.com/runatlantis/atlantis/server/events"
"github.com/runatlantis/atlantis/server/logging"
)
// StatusController handles the status of Atlantis.
type StatusController struct {
Logger *logging.SimpleLogger
Drainer *events.Drainer
}
type StatusResponse struct {
ShuttingDown bool `json:"shutting_down"`
InProgressOps int `json:"in_progress_operations"`
}
// Get is the GET /status route.
func (d *StatusController) Get(w http.ResponseWriter, r *http.Request) {
status := d.Drainer.GetStatus()
data, err := json.MarshalIndent(&StatusResponse{
ShuttingDown: status.ShuttingDown,
InProgressOps: status.InProgressOps,
}, "", " ")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Error creating status json response: %s", err)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(data) // nolint: errcheck
}