Proxy body was being passed correctly due to placement of defer
statement. This has been moved into outer scope to resolve issue.
Tested with new e2e tests in certifier component.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
HTTP proxy was not passing query-string upstream. This change
reinstates the behaviour through TDD - adding test coverage and
automated regression testing.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
Forwarded requests were being logged in the function metrics and
I saw this when doing some testing on auto-scaling with K8s.
This change removes the call to the Prometheus notifier for any
calls which are forwarded to the provider and retains them for the
functions.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
If the watchdog is sent SIGTERM from an external process then it
should stop accepting new connections and attempt to finish the
work in progress. This change makes use of the new ability in Go
1.9 and onwards to cancel a HTTP server gracefully.
The write_timeout duration is used as a grace period to allow all
in-flight requests to complete. The pattern is taken directly from
the offical example in the Golang documentation. [1]
Further tuning and testing may be needed for Windows containers which
have a different set of signals for closing work. This change aims
to cover the majority use-case for Linux containers.
The HTTP health-check is also invalidated by creating an and
expression with the existing lock file.
Tested with Kubernetes by deploying a custom watchdog and the
fprocess of `env`. Log message was observed when scaling down and
connections stopped being accepted on terminating replica.
Also corrects some typos from previous PR.
[1] https://golang.org/pkg/net/http/#Server.Shutdown
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
0.7.7 allows direct function access bypassing the provider - this makes
the throughput increase and skips a HTTP hop that is no longer required.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
window.crypto is throwing an error on IE11
which required a modification to use window.msCrypto
instead in case of running on IE11
Signed-off-by: Ivana Yovcheva <iyovcheva@vmware.com>
Added blog post, podcast episode, 3 speaking engagements, and author to a 2017 blog/podcast row to fix formatting.
Signed-off-by: John Callaway <john@1north.com>
This commit replaces occurences of http method strings with the
corresponding consts from the http package.
*Note* UPDATE is not strictly speaking a valid method and as such isn't
part of the http package (should be a PUT or PATCH?)
Signed-off-by: John McCabe <john@johnmccabe.net>
Adds a pair of configuration options for performance tuning. The
gateway can now invoke functions directly and can bypass the
provider. See updated table in README.md for configuration values.
BaseURLResolver is added with unit tests that decouples resolving
upstream URL from the reverse proxy client code.
- SingleHostBaseURLResolver resolves a single upstream host
- FunctionAsHostBaseURLResolver resolves host based upon conventions
within the URL of the request to a function for direct access
Tested with Kubernetes (faas-netes) and faas-swarm through UI, CLI
calling system endpoints and functions directly.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
The default should be set to true so we maintain backwards.
compatibility.
readconfig.go was altered due to bug reading default value. This was
tested by adding unit tests to readconfig_test.go for positive and
negative scenarios.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
Introduce new endpoint `/_/health` to watchdog for health status of
functions which check for `/tmp/.lock` file
Fixes first part of #547 issue.
Signed-off-by: Vivek Singh <vivekkmr45@yahoo.in>
Adds guidelines for commit message formatting with rules
from Chris Beams' blog post here:
https://chris.beams.io/posts/git-commit/
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
Integration test for combine_output should use stat instead of
man as man is not installed in the CI system.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
This enables an often-requested feature to separate stderr
from stdout within function responses. New flag combine_output is on
by default to match existing behaviour. When combine_output is set
to false it redirects stderr to the container logs rather than
combining it into the function response.
Tested with unit tests for default behaviour and new behaviour.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
HTTP port can now be overriden through use of "port" environmental
variable.
Prefer messaging "want" over "wanted" in error messages, this is more
idiomatic Golang.
Move away from Go ARMv6 (RPi Zero) and give ARMv7 as a minimum
version for release binaries.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
PWD links to HTTPS - this is now supported by the provider
Move references to localhost to 127.0.0.1 to prevent clashes with
IPv6 aliases on Linux systems.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>