diff --git a/docs/index.md b/docs/index.md index 09e463963..ed26f0310 100644 --- a/docs/index.md +++ b/docs/index.md @@ -321,14 +321,16 @@ $ curl -s "http://localhost:8080/api" | jq . } ``` -* `/api/providers`: `GET` providers -* `/api/providers/{provider}`: `GET` or `PUT` provider -* `/api/providers/{provider}/backends`: `GET` backends -* `/api/providers/{provider}/backends/{backend}`: `GET` a backend -* `/api/providers/{provider}/backends/{backend}/servers`: `GET` servers in a backend -* `/api/providers/{provider}/backends/{backend}/servers/{server}`: `GET` a server in a backend -* `/api/providers/{provider}/frontends`: `GET` frontends -* `/api/providers/{provider}/frontends/{frontend}`: `GET` a frontend +- `/api/providers`: `GET` providers +- `/api/providers/{provider}`: `GET` or `PUT` provider +- `/api/providers/{provider}/backends`: `GET` backends +- `/api/providers/{provider}/backends/{backend}`: `GET` a backend +- `/api/providers/{provider}/backends/{backend}/servers`: `GET` servers in a backend +- `/api/providers/{provider}/backends/{backend}/servers/{server}`: `GET` a server in a backend +- `/api/providers/{provider}/frontends`: `GET` frontends +- `/api/providers/{provider}/frontends/{frontend}`: `GET` a frontend +- `/api/providers/{provider}/frontends/{frontend}/routes`: `GET` routes in a frontend +- `/api/providers/{provider}/frontends/{frontend}/routes/{route}`: `GET` a route in a frontend ## Docker backend diff --git a/templates/configuration.tmpl b/templates/configuration.tmpl deleted file mode 100644 index 5b29dc38f..000000000 --- a/templates/configuration.tmpl +++ /dev/null @@ -1,101 +0,0 @@ - - - - /ˈTræfɪk/ - - - - - - - - - - - - -
-
-

/ˈTræfɪk/

-
- -
- -
- - {{range $keyProviders, $valueProviders := .Configurations}} - {{range $keyFrontends, $valueFrontends := $valueProviders.Frontends}} -
-
{{$keyFrontends}} - ({{$keyProviders}})
- - - - - - - - {{range $keyRoutes, $valueRoutes := $valueFrontends.Routes}} - - - - - - {{end}} -
RouteRuleValue
{{$keyRoutes}}{{$valueRoutes.Rule}}{{$valueRoutes.Value}}
-
- {{end}} - {{end}} - -
-
- - {{range $keyProviders, $valueProviders := .Configurations}} - {{range $keyBackends, $valueBackends := $valueProviders.Backends}} -
-
{{$keyBackends}} - ({{$keyProviders}})
-
- {{with $valueBackends.LoadBalancer}} - - Load Balancer: {{.Method}} - - {{end}} - {{with $valueBackends.CircuitBreaker}} - - Circuit Breaker: {{.Expression}} - - {{end}} -
- - - - - - - {{range $keyServers, $valueServers := $valueBackends.Servers}} - - - - - - {{end}} -
ServerURLWeight
{{$keyServers}}{{$valueServers.URL}}{{$valueServers.Weight}}
-
- {{end}} - {{end}} - -
- -
-
- - - diff --git a/web.go b/web.go index 77fd3dffe..ed2d4f70f 100644 --- a/web.go +++ b/web.go @@ -51,6 +51,8 @@ func (provider *WebProvider) Provide(configurationChan chan<- configMessage) err systemRouter.Methods("GET").Path("/api/providers/{provider}/backends/{backend}/servers/{server}").HandlerFunc(getServerHandler) systemRouter.Methods("GET").Path("/api/providers/{provider}/frontends").HandlerFunc(getFrontendsHandler) systemRouter.Methods("GET").Path("/api/providers/{provider}/frontends/{frontend}").HandlerFunc(getFrontendHandler) + systemRouter.Methods("GET").Path("/api/providers/{provider}/frontends/{frontend}/routes").HandlerFunc(getRoutesHandler) + systemRouter.Methods("GET").Path("/api/providers/{provider}/frontends/{frontend}/routes/{route}").HandlerFunc(getRouteHandler) // Expose dashboard systemRouter.Methods("GET").Path("/").HandlerFunc(func(response http.ResponseWriter, request *http.Request) { @@ -115,29 +117,6 @@ func getBackendHandler(response http.ResponseWriter, request *http.Request) { http.NotFound(response, request) } -func getFrontendsHandler(response http.ResponseWriter, request *http.Request) { - vars := mux.Vars(request) - providerID := vars["provider"] - if provider, ok := currentConfigurations[providerID]; ok { - templatesRenderer.JSON(response, http.StatusOK, provider.Frontends) - } else { - http.NotFound(response, request) - } -} - -func getFrontendHandler(response http.ResponseWriter, request *http.Request) { - vars := mux.Vars(request) - providerID := vars["provider"] - frontendID := vars["frontend"] - if provider, ok := currentConfigurations[providerID]; ok { - if frontend, ok := provider.Frontends[frontendID]; ok { - templatesRenderer.JSON(response, http.StatusOK, frontend) - return - } - } - http.NotFound(response, request) -} - func getServersHandler(response http.ResponseWriter, request *http.Request) { vars := mux.Vars(request) providerID := vars["provider"] @@ -166,3 +145,55 @@ func getServerHandler(response http.ResponseWriter, request *http.Request) { } http.NotFound(response, request) } + +func getFrontendsHandler(response http.ResponseWriter, request *http.Request) { + vars := mux.Vars(request) + providerID := vars["provider"] + if provider, ok := currentConfigurations[providerID]; ok { + templatesRenderer.JSON(response, http.StatusOK, provider.Frontends) + } else { + http.NotFound(response, request) + } +} + +func getFrontendHandler(response http.ResponseWriter, request *http.Request) { + vars := mux.Vars(request) + providerID := vars["provider"] + frontendID := vars["frontend"] + if provider, ok := currentConfigurations[providerID]; ok { + if frontend, ok := provider.Frontends[frontendID]; ok { + templatesRenderer.JSON(response, http.StatusOK, frontend) + return + } + } + http.NotFound(response, request) +} + +func getRoutesHandler(response http.ResponseWriter, request *http.Request) { + vars := mux.Vars(request) + providerID := vars["provider"] + frontendID := vars["frontend"] + if provider, ok := currentConfigurations[providerID]; ok { + if frontend, ok := provider.Frontends[frontendID]; ok { + templatesRenderer.JSON(response, http.StatusOK, frontend.Routes) + return + } + } + http.NotFound(response, request) +} + +func getRouteHandler(response http.ResponseWriter, request *http.Request) { + vars := mux.Vars(request) + providerID := vars["provider"] + frontendID := vars["frontend"] + routeID := vars["route"] + if provider, ok := currentConfigurations[providerID]; ok { + if frontend, ok := provider.Frontends[frontendID]; ok { + if route, ok := frontend.Routes[routeID]; ok { + templatesRenderer.JSON(response, http.StatusOK, route) + return + } + } + } + http.NotFound(response, request) +}