readyz.go 889 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package healthcheck
  2. import (
  3. "net/http"
  4. "github.com/porter-dev/porter/api/server/shared/apierrors"
  5. "github.com/porter-dev/porter/provisioner/server/config"
  6. )
  7. type ReadyzHandler struct {
  8. Config *config.Config
  9. }
  10. func NewReadyzHandler(
  11. config *config.Config,
  12. ) *ReadyzHandler {
  13. return &ReadyzHandler{
  14. Config: config,
  15. }
  16. }
  17. func (c *ReadyzHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  18. db, err := c.Config.DB.DB()
  19. if err != nil {
  20. apierrors.HandleAPIError(c.Config.Logger, c.Config.Alerter, w, r, apierrors.NewErrInternal(err), true)
  21. return
  22. }
  23. if err := db.Ping(); err != nil {
  24. apierrors.HandleAPIError(c.Config.Logger, c.Config.Alerter, w, r, apierrors.NewErrInternal(err), true)
  25. return
  26. }
  27. writeHealthy(w)
  28. }
  29. func writeHealthy(w http.ResponseWriter) {
  30. w.Header().Set("Content-Type", "text/plain")
  31. w.WriteHeader(http.StatusOK)
  32. w.Write([]byte("."))
  33. }