mirror of
https://github.com/openfaas/faas.git
synced 2025-06-11 17:56:47 +00:00
Allow override of contentType response from watchdog. (#46)
This commit is contained in:
parent
c7db0faab4
commit
f958e99bdc
@ -53,6 +53,7 @@ A number of environmental overrides can be added for additional flexibility and
|
|||||||
|------------------------|--------------|
|
|------------------------|--------------|
|
||||||
| `fprocess` | The process to invoke for each function call. This must be a UNIX binary and accept input via STDIN and output via STDOUT. |
|
| `fprocess` | The process to invoke for each function call. This must be a UNIX binary and accept input via STDIN and output via STDOUT. |
|
||||||
| `marshal_requests` | Instead of re-directing the raw HTTP body into your fprocess, it will first be marshalled into JSON. Use this if you need to work with HTTP headers |
|
| `marshal_requests` | Instead of re-directing the raw HTTP body into your fprocess, it will first be marshalled into JSON. Use this if you need to work with HTTP headers |
|
||||||
|
| `content_type` | Force a specific Content-Type response for all responses. |
|
||||||
| `write_timeout` | HTTP timeout for writing a response body from your function |
|
| `write_timeout` | HTTP timeout for writing a response body from your function |
|
||||||
| `read_timeout` | HTTP timeout for reading the payload from the client caller |
|
| `read_timeout` | HTTP timeout for reading the payload from the client caller |
|
||||||
| `suppress_lock` | The watchdog will attempt to write a lockfile to /tmp/ for swarm healthchecks - set this to true to disable behaviour. |
|
| `suppress_lock` | The watchdog will attempt to write a lockfile to /tmp/ for swarm healthchecks - set this to true to disable behaviour. |
|
||||||
@ -66,8 +67,7 @@ By default the watchdog will match the response of your function to the "Content
|
|||||||
* If your client sends a JSON post with a Content-Type of `application/json` this will be matched automatically in the response.
|
* If your client sends a JSON post with a Content-Type of `application/json` this will be matched automatically in the response.
|
||||||
* If your client sends a JSON post with a Content-Type of `text/plain` this will be matched automatically in the response too
|
* If your client sends a JSON post with a Content-Type of `text/plain` this will be matched automatically in the response too
|
||||||
|
|
||||||
See open issues for custom override of response ContentType.
|
To override the Content-Type of all your responses set the `content_type` environmental variable.
|
||||||
|
|
||||||
|
|
||||||
**Tuning auto-scaling**
|
**Tuning auto-scaling**
|
||||||
|
|
||||||
|
@ -73,6 +73,19 @@ func TestRead_SuppressLockConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRead_ContentTypeConfig(t *testing.T) {
|
||||||
|
defaults := NewEnvBucket()
|
||||||
|
readConfig := ReadConfig{}
|
||||||
|
defaults.Setenv("content_type", "application/json")
|
||||||
|
|
||||||
|
config := readConfig.Read(defaults)
|
||||||
|
|
||||||
|
if config.contentType != "application/json" {
|
||||||
|
t.Logf("content_type envVariable incorrect, got: %s.\n", config.contentType)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRead_FprocessConfig(t *testing.T) {
|
func TestRead_FprocessConfig(t *testing.T) {
|
||||||
defaults := NewEnvBucket()
|
defaults := NewEnvBucket()
|
||||||
readConfig := ReadConfig{}
|
readConfig := ReadConfig{}
|
||||||
|
@ -89,9 +89,15 @@ func pipeRequest(config *WatchdogConfig, w http.ResponseWriter, r *http.Request)
|
|||||||
os.Stdout.Write(out)
|
os.Stdout.Write(out)
|
||||||
}
|
}
|
||||||
|
|
||||||
clientContentType := r.Header.Get("Content-Type")
|
if len(config.contentType) > 0 {
|
||||||
if len(clientContentType) > 0 {
|
w.Header().Set("Content-Type", config.contentType)
|
||||||
w.Header().Set("Content-Type", "application/json")
|
} else {
|
||||||
|
|
||||||
|
// Match content-type of caller if no override specified.
|
||||||
|
clientContentType := r.Header.Get("Content-Type")
|
||||||
|
if len(clientContentType) > 0 {
|
||||||
|
w.Header().Set("Content-Type", clientContentType)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
w.WriteHeader(200)
|
w.WriteHeader(200)
|
||||||
|
@ -64,6 +64,8 @@ func (ReadConfig) Read(hasEnv HasEnv) WatchdogConfig {
|
|||||||
|
|
||||||
cfg.suppressLock = parseBoolValue(hasEnv.Getenv("suppress_lock"))
|
cfg.suppressLock = parseBoolValue(hasEnv.Getenv("suppress_lock"))
|
||||||
|
|
||||||
|
cfg.contentType = hasEnv.Getenv("content_type")
|
||||||
|
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,4 +87,7 @@ type WatchdogConfig struct {
|
|||||||
|
|
||||||
// Don't write a lock file to /tmp/
|
// Don't write a lock file to /tmp/
|
||||||
suppressLock bool
|
suppressLock bool
|
||||||
|
|
||||||
|
// contentType forces a specific pre-defined value for all responses
|
||||||
|
contentType string
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user