diff --git a/api/swagger-spec/resourceListing.json b/api/swagger-spec/resourceListing.json index 45924c731e6..d6a870aa6d8 100644 --- a/api/swagger-spec/resourceListing.json +++ b/api/swagger-spec/resourceListing.json @@ -1,14 +1,14 @@ { "swaggerVersion": "1.2", "apis": [ - { - "path": "/apis", - "description": "get available API versions" - }, { "path": "/version", "description": "git code version from which this is built" }, + { + "path": "/apis", + "description": "get available API versions" + }, { "path": "/api/v1", "description": "API at /api/v1" diff --git a/federation/cmd/federated-apiserver/app/server_test.go b/federation/cmd/federated-apiserver/app/server_test.go index 40976023afe..c8d61f0a575 100644 --- a/federation/cmd/federated-apiserver/app/server_test.go +++ b/federation/cmd/federated-apiserver/app/server_test.go @@ -92,6 +92,7 @@ func TestRun(t *testing.T) { t.Fatalf("%v", err) } testSwaggerSpec(t) + testSupport(t) testAPIGroupList(t) testAPIGroup(t) testAPIResourceList(t) @@ -131,6 +132,14 @@ func testSwaggerSpec(t *testing.T) { } } +func testSupport(t *testing.T) { + serverURL := serverIP + "/version" + _, err := readResponse(serverURL) + if err != nil { + t.Fatalf("%v", err) + } +} + func findGroup(groups []unversioned.APIGroup, groupName string) *unversioned.APIGroup { for _, group := range groups { if group.Name == groupName { diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 93b1d208550..e68aa851aa6 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -36,7 +36,6 @@ import ( "k8s.io/kubernetes/pkg/api/rest" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/apiserver/metrics" - "k8s.io/kubernetes/pkg/healthz" "k8s.io/kubernetes/pkg/runtime" utilerrors "k8s.io/kubernetes/pkg/util/errors" "k8s.io/kubernetes/pkg/util/flushwriter" @@ -163,10 +162,8 @@ func (g *APIGroupVersion) newInstaller() *APIInstaller { } // TODO: document all handlers -// InstallSupport registers the APIServer support functions -func InstallSupport(mux Mux, checks ...healthz.HealthzChecker) []*restful.WebService { - // TODO: convert healthz and metrics to restful and remove container arg - healthz.InstallHandler(mux, checks...) +// InstallVersionHandler registers the APIServer's `/version` handler +func InstallVersionHandler(mux Mux, container *restful.Container) { // Set up a service to return the git code version. versionWS := new(restful.WebService) @@ -179,7 +176,7 @@ func InstallSupport(mux Mux, checks ...healthz.HealthzChecker) []*restful.WebSer Produces(restful.MIME_JSON). Consumes(restful.MIME_JSON)) - return []*restful.WebService{versionWS} + container.Add(versionWS) } // InstallLogsSupport registers the APIServer log support function into a mux. diff --git a/pkg/apiserver/apiserver_test.go b/pkg/apiserver/apiserver_test.go index d756c4dbc78..813f25a939b 100644 --- a/pkg/apiserver/apiserver_test.go +++ b/pkg/apiserver/apiserver_test.go @@ -317,10 +317,8 @@ func handleInternal(storage map[string]rest.Storage, admissionControl admission. } } - webservices := InstallSupport(mux) - for i := range webservices { - container.Add(webservices[i]) - } + InstallVersionHandler(mux, container) + return &defaultAPIServer{mux, container} } @@ -3263,10 +3261,7 @@ func TestXGSubresource(t *testing.T) { panic(fmt.Sprintf("unable to install container %s: %v", group.GroupVersion, err)) } - webservices := InstallSupport(mux) - for i := range webservices { - container.Add(webservices[i]) - } + InstallVersionHandler(mux, container) handler := defaultAPIServer{mux, container} server := httptest.NewServer(handler) diff --git a/pkg/genericapiserver/genericapiserver.go b/pkg/genericapiserver/genericapiserver.go index a468be4609c..d54543c1cf5 100644 --- a/pkg/genericapiserver/genericapiserver.go +++ b/pkg/genericapiserver/genericapiserver.go @@ -454,6 +454,8 @@ func (s *GenericAPIServer) init(c *Config) { s.mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) } + apiserver.InstallVersionHandler(s.MuxHelper, s.HandlerContainer) + handler := http.Handler(s.mux.(*http.ServeMux)) // TODO: handle CORS and auth using go-restful diff --git a/pkg/master/master.go b/pkg/master/master.go index b037d24a7f1..5f657cfb09f 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -226,9 +226,7 @@ func (m *Master) InstallAPIs(c *Config) { Help: "The time since the last successful synchronization of the SSH tunnels for proxy requests.", }, func() float64 { return float64(m.tunneler.SecondsSinceSync()) }) } - - // TODO(nikhiljindal): Refactor generic parts of support services (like /versions) to genericapiserver. - webservices := apiserver.InstallSupport(m.MuxHelper, healthzChecks...) + healthz.InstallHandler(m.MuxHelper, healthzChecks...) if c.EnableProfiling { m.MuxHelper.HandleFunc("/metrics", MetricsWithReset) @@ -236,10 +234,6 @@ func (m *Master) InstallAPIs(c *Config) { m.MuxHelper.HandleFunc("/metrics", defaultMetricsHandler) } - for i := range webservices { - m.HandlerContainer.Add(webservices[i]) - } - // allGroups records all supported groups at /apis allGroups := []unversioned.APIGroup{}