mirror of
https://git.vectorsigma.ru/public/atlantis.git
synced 2026-07-29 22:37:59 +00:00
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package controllers
|
|
|
|
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.SimpleLogging `validate:"required"`
|
|
Drainer *events.Drainer `validate:"required"`
|
|
AtlantisVersion string `validate:"required"`
|
|
}
|
|
|
|
type StatusResponse struct {
|
|
ShuttingDown bool `json:"shutting_down"`
|
|
InProgressOps int `json:"in_progress_operations"`
|
|
AtlantisVersion string `json:"version"`
|
|
}
|
|
|
|
// Get is the GET /status route.
|
|
func (d *StatusController) Get(w http.ResponseWriter, _ *http.Request) {
|
|
status := d.Drainer.GetStatus()
|
|
data, err := json.MarshalIndent(&StatusResponse{
|
|
ShuttingDown: status.ShuttingDown,
|
|
InProgressOps: status.InProgressOps,
|
|
AtlantisVersion: d.AtlantisVersion,
|
|
}, "", " ")
|
|
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
|
|
}
|