diff --git a/controller/api.go b/controller/api.go index a5d52d2d..49dc4c64 100644 --- a/controller/api.go +++ b/controller/api.go @@ -69,7 +69,7 @@ func MakeAPI() (*API, error) { if len(u) > 0 { api.workflowApiUrl = strings.TrimSuffix(wfEnv, "/") } else { - api.workflowApiUrl = "http://workflow-apiserver" + api.workflowApiUrl = "http://workflows-apiserver" } return api, err @@ -178,7 +178,7 @@ func (api *API) Serve(port int) { r.HandleFunc("/proxy/storage/v1/archive", api.StorageServiceProxy) r.HandleFunc("/proxy/buildermgr/v1/build", api.BuilderManagerBuildProxy) r.HandleFunc("/proxy/buildermgr/v1/builder", api.BuilderManagerEnvBuilderProxy) - r.HandleFunc("/proxy/workflow", api.WorkflowApiProxy) + r.HandleFunc("/proxy/workflows-apiserver/{path:.*}", api.WorkflowApiserverProxy) address := fmt.Sprintf(":%v", port) diff --git a/controller/workflowApiProxy.go b/controller/workflowApiProxy.go index 447c15f1..7ebd2d8b 100644 --- a/controller/workflowApiProxy.go +++ b/controller/workflowApiProxy.go @@ -2,25 +2,27 @@ package controller import ( "fmt" + "github.com/gorilla/mux" "net/http" "net/http/httputil" "net/url" - "strings" ) -func (api *API) WorkflowApiProxy(w http.ResponseWriter, r *http.Request) { - u := api.storageServiceUrl +func (api *API) WorkflowApiserverProxy(w http.ResponseWriter, r *http.Request) { + u := api.workflowApiUrl ssUrl, err := url.Parse(u) if err != nil { msg := fmt.Sprintf("Error parsing url %v: %v", u, err) http.Error(w, msg, 500) return } + + vars := mux.Vars(r) + path := fmt.Sprintf("/%s", vars["path"]) director := func(req *http.Request) { req.URL.Scheme = ssUrl.Scheme req.URL.Host = ssUrl.Host - req.URL.Path = strings.TrimPrefix(ssUrl.Path, "/proxy/workflow") - req.URL.RawQuery = ssUrl.RawQuery + req.URL.Path = path } proxy := &httputil.ReverseProxy{ Director: director,