mirror of
https://github.com/openfaas/faas.git
synced 2025-06-08 16:26:47 +00:00
89 lines
1.7 KiB
Go
89 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// HasEnv provides interface for os.Getenv
|
|
type HasEnv interface {
|
|
Getenv(key string) string
|
|
}
|
|
|
|
// ReadConfig constitutes config from env variables
|
|
type ReadConfig struct {
|
|
}
|
|
|
|
func parseBoolValue(val string) bool {
|
|
if val == "true" {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func parseIntValue(val string) int {
|
|
if len(val) > 0 {
|
|
parsedVal, parseErr := strconv.Atoi(val)
|
|
|
|
if parseErr == nil && parsedVal >= 0 {
|
|
|
|
return parsedVal
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// Read fetches config from environmental variables.
|
|
func (ReadConfig) Read(hasEnv HasEnv) WatchdogConfig {
|
|
cfg := WatchdogConfig{
|
|
writeDebug: true,
|
|
}
|
|
|
|
cfg.faasProcess = hasEnv.Getenv("fprocess")
|
|
|
|
readTimeout := parseIntValue(hasEnv.Getenv("read_timeout"))
|
|
writeTimeout := parseIntValue(hasEnv.Getenv("write_timeout"))
|
|
|
|
if readTimeout == 0 {
|
|
readTimeout = 5
|
|
}
|
|
|
|
if writeTimeout == 0 {
|
|
writeTimeout = 5
|
|
}
|
|
|
|
cfg.readTimeout = time.Duration(readTimeout) * time.Second
|
|
cfg.writeTimeout = time.Duration(writeTimeout) * time.Second
|
|
|
|
if len(hasEnv.Getenv("write_debug")) > 0 {
|
|
cfg.writeDebug = parseBoolValue(hasEnv.Getenv("write_debug"))
|
|
}
|
|
|
|
cfg.marshalRequest = parseBoolValue(hasEnv.Getenv("marshal_request"))
|
|
cfg.debugHeaders = parseBoolValue(hasEnv.Getenv("debug_headers"))
|
|
|
|
cfg.suppressLock = parseBoolValue(hasEnv.Getenv("suppress_lock"))
|
|
|
|
return cfg
|
|
}
|
|
|
|
// WatchdogConfig for the process.
|
|
type WatchdogConfig struct {
|
|
readTimeout time.Duration
|
|
|
|
writeTimeout time.Duration
|
|
// faasProcess is the process to exec
|
|
faasProcess string
|
|
|
|
// writeDebug write console stdout statements to the container
|
|
writeDebug bool
|
|
|
|
marshalRequest bool
|
|
|
|
// prints out all incoming and out-going HTTP headers
|
|
debugHeaders bool
|
|
|
|
// Don't write a lock file to /tmp/
|
|
suppressLock bool
|
|
}
|