diff --git a/pkg/master/master.go b/pkg/master/master.go index 4b1283297e7..1ddf2d25e32 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -441,7 +441,7 @@ func (m *Master) init(c *Config) { "persistentVolumeClaims": persistentVolumeClaimStorage, "persistentVolumeClaims/status": persistentVolumeClaimStatusStorage, - "componentStatuses": componentstatus.NewStorage(func() map[string]apiserver.Server { return m.getServersToValidate(c) }), + "componentStatuses": componentstatus.NewStorage(func() map[string]apiserver.Server { return m.getServersToValidate(c, false) }), } apiVersions := []string{"v1beta1", "v1beta2"} @@ -477,8 +477,8 @@ func (m *Master) init(c *Config) { m.mux.HandleFunc("/", apiserver.IndexHandler(m.handlerContainer, m.muxHelper)) } - // TODO: use go-restful - apiserver.InstallValidator(m.muxHelper, func() map[string]apiserver.Server { return m.getServersToValidate(c) }) + // TODO: This is now deprecated. Should be removed once client dependencies are gone. + apiserver.InstallValidator(m.muxHelper, func() map[string]apiserver.Server { return m.getServersToValidate(c, true) }) if c.EnableLogsSupport { apiserver.InstallLogsSupport(m.muxHelper) } @@ -580,7 +580,7 @@ func (m *Master) InstallSwaggerAPI() { swagger.RegisterSwaggerService(swaggerConfig, m.handlerContainer) } -func (m *Master) getServersToValidate(c *Config) map[string]apiserver.Server { +func (m *Master) getServersToValidate(c *Config, includeNodes bool) map[string]apiserver.Server { serversToValidate := map[string]apiserver.Server{ "controller-manager": {Addr: "127.0.0.1", Port: ports.ControllerManagerPort, Path: "/healthz"}, "scheduler": {Addr: "127.0.0.1", Port: ports.SchedulerPort, Path: "/healthz"}, @@ -607,12 +607,14 @@ func (m *Master) getServersToValidate(c *Config) map[string]apiserver.Server { } serversToValidate[fmt.Sprintf("etcd-%d", ix)] = apiserver.Server{Addr: addr, Port: port, Path: "/v2/keys/"} } - nodes, err := m.nodeRegistry.ListMinions(api.NewDefaultContext(), labels.Everything(), fields.Everything()) - if err != nil { - glog.Errorf("Failed to list minions: %v", err) - } - for ix, node := range nodes.Items { - serversToValidate[fmt.Sprintf("node-%d", ix)] = apiserver.Server{Addr: node.Name, Port: ports.KubeletPort, Path: "/healthz", EnableHTTPS: true} + if includeNodes && m.nodeRegistry != nil { + nodes, err := m.nodeRegistry.ListMinions(api.NewDefaultContext(), labels.Everything(), fields.Everything()) + if err != nil { + glog.Errorf("Failed to list minions: %v", err) + } + for ix, node := range nodes.Items { + serversToValidate[fmt.Sprintf("node-%d", ix)] = apiserver.Server{Addr: node.Name, Port: ports.KubeletPort, Path: "/healthz", EnableHTTPS: true} + } } return serversToValidate } diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go index 0de88ab0867..8d50c6855c3 100644 --- a/pkg/master/master_test.go +++ b/pkg/master/master_test.go @@ -36,7 +36,7 @@ func TestGetServersToValidate(t *testing.T) { master.nodeRegistry = registrytest.NewMinionRegistry([]string{"node1", "node2"}, api.NodeResources{}) - servers := master.getServersToValidate(&config) + servers := master.getServersToValidate(&config, true) if len(servers) != 7 { t.Errorf("unexpected server list: %#v", servers) @@ -46,4 +46,15 @@ func TestGetServersToValidate(t *testing.T) { t.Errorf("server list missing: %s", server) } } + + servers = master.getServersToValidate(&config, false) + + if len(servers) != 5 { + t.Errorf("unexpected server list: %#v", servers) + } + for _, server := range []string{"scheduler", "controller-manager", "etcd-0", "etcd-1", "etcd-2"} { + if _, ok := servers[server]; !ok { + t.Errorf("server list missing: %s", server) + } + } }