Skip to content
Snippets Groups Projects
Commit 533a6230 authored by Alex's avatar Alex Committed by Alex Ellis
Browse files

Make timeouts configurable for watchdog process. Make debug into container optional.

parent cdd52192
No related branches found
No related tags found
No related merge requests found
......@@ -7,23 +7,53 @@ import (
"net/http"
"os"
"os/exec"
"strconv"
"strings"
"time"
)
func main() {
readTimeoutStr := os.Getenv("read_timeout")
writeTimeoutStr := os.Getenv("write_timeout")
writeDebugStr := os.Getenv("write_debug")
process := os.Getenv("fprocess")
readTimeout := 5 * time.Second
writeTimeout := 5 * time.Second
writeDebug := true
if len(process) == 0 {
log.Panicln("Provide a valid process via fprocess environmental variable.")
return
}
if len(writeDebugStr) > 0 && writeDebugStr == "false" {
writeDebug = false
}
if len(readTimeoutStr) > 0 {
parsedVal, parseErr := strconv.Atoi(readTimeoutStr)
if parseErr == nil && parsedVal > 0 {
readTimeout = time.Duration(parsedVal) * time.Second
}
}
if len(writeTimeoutStr) > 0 {
parsedVal, parseErr := strconv.Atoi(writeTimeoutStr)
if parseErr == nil && parsedVal > 0 {
writeTimeout = time.Duration(parsedVal) * time.Second
}
}
s := &http.Server{
Addr: ":8080",
ReadTimeout: 5 * time.Second,
WriteTimeout: 5 * time.Second,
ReadTimeout: readTimeout,
WriteTimeout: writeTimeout,
MaxHeaderBytes: 1 << 20,
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
process := os.Getenv("fprocess")
parts := strings.Split(process, " ")
targetCmd := exec.Command(parts[0], parts[1:]...)
......@@ -34,10 +64,13 @@ func main() {
writer.Write(res)
writer.Close()
out, err := targetCmd.Output()
targetCmd.CombinedOutput()
out, err := targetCmd.CombinedOutput()
if err != nil {
log.Println(targetCmd, err)
if writeDebug == true {
log.Println(targetCmd, err)
}
w.WriteHeader(500)
response := bytes.NewBufferString(err.Error())
w.Write(response.Bytes())
......@@ -45,8 +78,10 @@ func main() {
}
w.WriteHeader(200)
// TODO: consider stdout to container as configurable via env-variable.
os.Stdout.Write(out)
if writeDebug == true {
os.Stdout.Write(out)
}
w.Write(out)
}
})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment