Files
atlantis/server/controllers/status_controller.go
nitrocode 2b772541f5 Add version to /status endpoint (#2295)
* Add version to /status endpoint

* Add version to test

* Fix linting errors
2022-06-05 20:06:37 -07:00

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
Drainer *events.Drainer
AtlantisVersion string
}
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, r *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
}