diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 934aca0698d..cf4738941b7 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -238,7 +238,7 @@ func (g *APIGroupVersion) InstallREST(container *restful.Container, root string, } // TODO: Convert to go-restful -func InstallValidator(mux Mux, servers map[string]Server) { +func InstallValidator(mux Mux, servers func() map[string]Server) { validator, err := NewValidator(servers) if err != nil { glog.Errorf("failed to set up validator: %v", err) diff --git a/pkg/apiserver/validator.go b/pkg/apiserver/validator.go index d8a918e6b38..bd8bb1e21e6 100644 --- a/pkg/apiserver/validator.go +++ b/pkg/apiserver/validator.go @@ -41,7 +41,7 @@ type Server struct { // validator is responsible for validating the cluster and serving type validator struct { // a list of servers to health check - servers map[string]Server + servers func() map[string]Server client httpGet } @@ -72,7 +72,7 @@ type ServerStatus struct { func (v *validator) ServeHTTP(w http.ResponseWriter, r *http.Request) { reply := []ServerStatus{} - for name, server := range v.servers { + for name, server := range v.servers() { status, msg, err := server.check(v.client) var errorMsg string if err != nil { @@ -93,7 +93,7 @@ func (v *validator) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // NewValidator creates a validator for a set of servers. -func NewValidator(servers map[string]Server) (http.Handler, error) { +func NewValidator(servers func() map[string]Server) (http.Handler, error) { return &validator{ servers: servers, client: &http.Client{}, @@ -114,7 +114,7 @@ func makeTestValidator(servers map[string]string, get httpGet) (http.Handler, er result[name] = Server{Addr: host, Port: val, Path: "/healthz"} } - v, e := NewValidator(result) + v, e := NewValidator(func() map[string]Server { return result }) if e == nil { v.(*validator).client = get } diff --git a/pkg/master/master.go b/pkg/master/master.go index fce494f1821..568216ff596 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -339,8 +339,7 @@ func (m *Master) init(c *Config) { apiserver.InstallSupport(m.handlerContainer, m.rootWebService) // TODO: use go-restful - serversToValidate := m.getServersToValidate(c) - apiserver.InstallValidator(m.mux, serversToValidate) + apiserver.InstallValidator(m.mux, func() map[string]apiserver.Server { return m.getServersToValidate(c) }) if c.EnableLogsSupport { apiserver.InstallLogsSupport(m.mux) } @@ -430,7 +429,7 @@ func (m *Master) getServersToValidate(c *Config) map[string]apiserver.Server { glog.Errorf("Failed to list minions: %v", err) } for ix, node := range nodes.Items { - serversToValidate[fmt.Sprintf("node-%d", ix)] = apiserver.Server{Addr: node.Status.HostIP, Port: 10250, Path: "/healthz"} + serversToValidate[fmt.Sprintf("node-%d", ix)] = apiserver.Server{Addr: node.Name, Port: 10250, Path: "/healthz"} } return serversToValidate }