diff --git a/handlers/ping.go b/handlers/ping.go index ccf5cec..5e621f9 100644 --- a/handlers/ping.go +++ b/handlers/ping.go @@ -1,9 +1,12 @@ package handlers import ( + "context" "log" "net/http" + "time" + "github.com/docker/docker/client" "github.com/play-with-docker/play-with-docker/config" "github.com/shirou/gopsutil/load" ) @@ -11,6 +14,21 @@ import ( func Ping(rw http.ResponseWriter, req *http.Request) { // Get system load average of the last 5 minutes and compare it against a threashold. + c, err := client.NewEnvClient() + + if err != nil { + rw.WriteHeader(http.StatusInternalServerError) + return + } + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Microsecond) + defer cancel() + + if _, err := c.Info(ctx); err != nil && err == context.DeadlineExceeded { + log.Printf("Docker info took to long to respond\n") + rw.WriteHeader(http.StatusGatewayTimeout) + } + a, err := load.Avg() if err != nil { log.Println("Cannot get system load average!", err)