Commit a17e9b6b authored by Matthew Holt's avatar Matthew Holt

Add ServerBlockIndex and ServerBlockHosts to Controller

This way, Setup functions have access to the list of hosts that share the server block, and also, if needed for some reason, the index of the server block in the input
parent f978967e
...@@ -44,7 +44,7 @@ func Load(filename string, input io.Reader) (Group, error) { ...@@ -44,7 +44,7 @@ func Load(filename string, input io.Reader) (Group, error) {
// Each server block represents similar hosts/addresses. // Each server block represents similar hosts/addresses.
// Iterate each server block and make a config for each one, // Iterate each server block and make a config for each one,
// executing the directives that were parsed. // executing the directives that were parsed.
for _, sb := range serverBlocks { for i, sb := range serverBlocks {
onces := makeOnces() onces := makeOnces()
for _, addr := range sb.Addresses { for _, addr := range sb.Addresses {
...@@ -75,6 +75,8 @@ func Load(filename string, input io.Reader) (Group, error) { ...@@ -75,6 +75,8 @@ func Load(filename string, input io.Reader) (Group, error) {
}) })
return err return err
}, },
ServerBlockIndex: i,
ServerBlockHosts: sb.HostList(),
} }
midware, err := dir.setup(controller) midware, err := dir.setup(controller)
......
...@@ -312,3 +312,15 @@ type ( ...@@ -312,3 +312,15 @@ type (
Host, Port string Host, Port string
} }
) )
// HostList converts the list of addresses (hosts)
// that are associated with this server block into
// a slice of strings. Each string is a host:port
// combination.
func (sb serverBlock) HostList() []string {
sbHosts := make([]string, len(sb.Addresses))
for j, addr := range sb.Addresses {
sbHosts[j] = net.JoinHostPort(addr.Host, addr.Port)
}
return sbHosts
}
...@@ -24,6 +24,15 @@ type Controller struct { ...@@ -24,6 +24,15 @@ type Controller struct {
// (not deferred) and may return an error which is // (not deferred) and may return an error which is
// returned by OncePerServerBlock. // returned by OncePerServerBlock.
OncePerServerBlock func(f func() error) error OncePerServerBlock func(f func() error) error
// ServerBlockIndex is the 0-based index of the
// server block as it appeared in the input.
ServerBlockIndex int
// ServerBlockHosts is a list of hosts that are
// associated with this server block. All these
// hosts, consequently, share the same tokens.
ServerBlockHosts []string
} }
// NewTestController creates a new *Controller for // NewTestController creates a new *Controller for
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment