func (l Logs) Install(c *mux.APIContainer) { // use restful: ws.Route(ws.GET("/logs/{logpath:*}").To(fileHandler)) // See github.com/emicklei/go-restful/blob/master/examples/restful-serve-static.go ws := new(restful.WebService) ws.Path("/logs") ws.Doc("get log files") ws.Route(ws.GET("/{logpath:*}").To(logFileHandler).Param(ws.PathParameter("logpath", "path to the log").DataType("string"))) ws.Route(ws.GET("/").To(logFileListHandler)) c.Add(ws) }
// initMetricsRoute initializes an HTTP endpoint for metrics. func initMetricsRoute(apiContainer *genericmux.APIContainer, path string) { ws := new(restful.WebService). Path(path). Doc("return metrics for this process") h := prometheus.Handler() ws.Route(ws.GET("/").To(func(req *restful.Request, resp *restful.Response) { h.ServeHTTP(resp.ResponseWriter, req.Request) }).Doc("return metrics for this process"). Returns(http.StatusOK, "if metrics are available", nil). Produces("text/plain")) apiContainer.Add(ws) }
// Install registers the APIServer's `/version` handler. func (v Version) Install(c *mux.APIContainer) { // Set up a service to return the git code version. versionWS := new(restful.WebService) versionWS.Path("/version") versionWS.Doc("git code version from which this is built") versionWS.Route( versionWS.GET("/").To(handleVersion). Doc("get the code version"). Operation("getCodeVersion"). Produces(restful.MIME_JSON). Consumes(restful.MIME_JSON). Writes(version.Info{})) c.Add(versionWS) }
// initAPIVersionRoute initializes the osapi endpoint to behave similar to the upstream api endpoint func initAPIVersionRoute(apiContainer *genericmux.APIContainer, prefix string, versions ...string) { versionHandler := apiserver.APIVersionHandler(kapi.Codecs, func(req *restful.Request) *unversioned.APIVersions { apiVersionsForDiscovery := unversioned.APIVersions{ // TODO: ServerAddressByClientCIDRs: s.getServerAddressByClientCIDRs(req.Request), Versions: versions, } return &apiVersionsForDiscovery }) ws := new(restful.WebService). Path(prefix). Doc("list supported server API versions") ws.Route(ws.GET("/").To(versionHandler). Doc("list supported server API versions"). Produces(restful.MIME_JSON). Consumes(restful.MIME_JSON). Operation("get" + strings.Title(prefix[1:]) + "Version")) apiContainer.Add(ws) }
// initReadinessCheckRoute initializes an HTTP endpoint for readiness checking func initReadinessCheckRoute(apiContainer *genericmux.APIContainer, path string, readyFunc func() bool) { ws := new(restful.WebService). Path(path). Doc("return the readiness state of the master") ws.Route(ws.GET("/").To(func(req *restful.Request, resp *restful.Response) { if readyFunc() { resp.ResponseWriter.WriteHeader(http.StatusOK) resp.ResponseWriter.Write([]byte("ok")) } else { resp.ResponseWriter.WriteHeader(http.StatusServiceUnavailable) } }).Doc("return the readiness state of the master"). Returns(http.StatusOK, "if the master is ready", nil). Returns(http.StatusServiceUnavailable, "if the master is not ready", nil). Produces(restful.MIME_JSON)) apiContainer.Add(ws) }