Files
podman/pkg/api/handlers/libpod/healthcheck.go
Matt Heon 72f1617fac Bump Go module to v5
Moving from Go module v4 to v5 prepares us for public releases.

Move done using gomove [1] as with the v3 and v4 moves.

[1] https://github.com/KSubedi/gomove

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-08 09:35:39 -05:00

43 lines
1.1 KiB
Go

package libpod
import (
"net/http"
"github.com/containers/podman/v5/libpod"
"github.com/containers/podman/v5/libpod/define"
"github.com/containers/podman/v5/pkg/api/handlers/utils"
api "github.com/containers/podman/v5/pkg/api/types"
)
func RunHealthCheck(w http.ResponseWriter, r *http.Request) {
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
name := utils.GetName(r)
status, err := runtime.HealthCheck(r.Context(), name)
if err != nil {
if status == define.HealthCheckContainerNotFound {
utils.ContainerNotFound(w, name, err)
return
}
if status == define.HealthCheckNotDefined {
utils.Error(w, http.StatusConflict, err)
return
}
if status == define.HealthCheckContainerStopped {
utils.Error(w, http.StatusConflict, err)
return
}
utils.InternalServerError(w, err)
return
}
hcStatus := define.HealthCheckUnhealthy
if status == define.HealthCheckSuccess {
hcStatus = define.HealthCheckHealthy
} else if status == define.HealthCheckStartup {
hcStatus = define.HealthCheckStarting
}
report := define.HealthCheckResults{
Status: hcStatus,
}
utils.WriteResponse(w, http.StatusOK, report)
}