adding sequential policy to forward plugin (#1704)

* adding sequential policy to forward plugin

* making sequential an alias to first in proxy plugin
This commit is contained in:
Scott Donovan
2018-04-20 01:07:58 -05:00
committed by Miek Gieben
parent 26d1432ae6
commit 19a1ef48f2
8 changed files with 23 additions and 5 deletions

View File

@@ -47,7 +47,7 @@ forward FROM TO... {
max_fails INTEGER
tls CERT KEY CA
tls_servername NAME
policy random|round_robin
policy random|round_robin|sequential
health_check DURATION
}
~~~

View File

@@ -193,6 +193,7 @@ type policy int
const (
randomPolicy policy = iota
roundRobinPolicy
sequentialPolicy
)
const defaultTimeout = 5 * time.Second

View File

@@ -53,3 +53,13 @@ func (r *roundRobin) List(p []*Proxy) []*Proxy {
return robin
}
// sequential is a policy that selects hosts based on sequential ordering.
type sequential struct {}
func (r *sequential) String() string { return "sequential" }
func (r *sequential) List(p []*Proxy) []*Proxy {
return p
}

View File

@@ -225,6 +225,8 @@ func parseBlock(c *caddy.Controller, f *Forward) error {
f.p = &random{}
case "round_robin":
f.p = &roundRobin{}
case "sequential":
f.p = &sequential{}
default:
return c.Errf("unknown policy '%s'", x)
}

View File

@@ -17,6 +17,7 @@ func TestSetupPolicy(t *testing.T) {
// positive
{"forward . 127.0.0.1 {\npolicy random\n}\n", false, "random", ""},
{"forward . 127.0.0.1 {\npolicy round_robin\n}\n", false, "round_robin", ""},
{"forward . 127.0.0.1 {\npolicy sequential\n}\n", false, "sequential", ""},
// negative
{"forward . 127.0.0.1 {\npolicy random2\n}\n", true, "random", "unknown policy"},
}