Files
devsim/cmd/utility/main.go

64 lines
1.1 KiB
Go

package main
import (
"fmt"
"net"
"net/http"
"os"
)
func main() {
monitorAddress := os.Getenv("DEVSIM_MONITOR_ADDR")
if monitorAddress == "" {
return
}
host, port, err := net.SplitHostPort(monitorAddress)
if err != nil {
fmt.Fprintf(os.Stderr, "provided address is invalid: %v", err)
os.Exit(1)
}
if host == "" {
host = "127.0.0.1"
}
if len(os.Args) == 1 {
fmt.Fprintf(os.Stderr, "no command provided")
os.Exit(1)
}
destinationAddress := net.JoinHostPort(host, port)
cmd := os.Args[1]
var resp *http.Response
switch cmd {
case "health":
resp, err = http.Get("http://" + destinationAddress + "/health")
case "ready":
resp, err = http.Get("http://" + destinationAddress + "/ready")
default:
fmt.Fprintf(os.Stderr, "unable to check %s", cmd)
os.Exit(1)
}
if err != nil {
fmt.Fprintf(os.Stderr, "unable to proceed request %v", err)
os.Exit(1)
}
code := resp.StatusCode
status := resp.Header.Get("X-Readiness-Probe")
if code != http.StatusOK {
println("code not ok")
os.Exit(1)
}
if status != "" && status != "ok" {
println("status not ok")
os.Exit(1)
}
println("ok")
}