diff --git a/pkg/kapis/devops/v1alpha2/register.go b/pkg/kapis/devops/v1alpha2/register.go index 3f7f1dd21..8f3b770a2 100644 --- a/pkg/kapis/devops/v1alpha2/register.go +++ b/pkg/kapis/devops/v1alpha2/register.go @@ -704,20 +704,29 @@ func AddJenkinsToContainer(webservice *restful.WebService, devopsClient devops.I }). Returns(http.StatusOK, RespOK, nil). Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag})) + + handlerWithDevOps := func(request *restful.Request, response *restful.Response) { + u := request.Request.URL + devops := request.PathParameter("devops") + u.Host = parse.Host + u.Scheme = parse.Scheme + jenkins.SetBasicBearTokenHeader(&request.Request.Header) + u.Path = strings.Replace(request.Request.URL.Path, fmt.Sprintf("/kapis/%s/%s/devops/%s/jenkins", + GroupVersion.Group, GroupVersion.Version, devops), "", 1) + httpProxy := proxy.NewUpgradeAwareHandler(u, http.DefaultTransport, false, false, &errorResponder{}) + httpProxy.ServeHTTP(response, request.Request) + } + // some Jenkins API against with POST method webservice.Route(webservice.GET("/devops/{devops}/jenkins/{path:*}"). Param(webservice.PathParameter("path", "Path stands for any suffix path.")). Param(webservice.PathParameter("devops", "DevOps project's ID, e.g. project-RRRRAzLBlLEm")). - To(func(request *restful.Request, response *restful.Response) { - u := request.Request.URL - devops := request.PathParameter("devops") - u.Host = parse.Host - u.Scheme = parse.Scheme - jenkins.SetBasicBearTokenHeader(&request.Request.Header) - u.Path = strings.Replace(request.Request.URL.Path, fmt.Sprintf("/kapis/%s/%s/devops/%s/jenkins", - GroupVersion.Group, GroupVersion.Version, devops), "", 1) - httpProxy := proxy.NewUpgradeAwareHandler(u, http.DefaultTransport, false, false, &errorResponder{}) - httpProxy.ServeHTTP(response, request.Request) - }). + To(handlerWithDevOps). + Returns(http.StatusOK, RespOK, nil). + Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag})) + webservice.Route(webservice.POST("/devops/{devops}/jenkins/{path:*}"). + Param(webservice.PathParameter("path", "Path stands for any suffix path.")). + Param(webservice.PathParameter("devops", "DevOps project's ID, e.g. project-RRRRAzLBlLEm")). + To(handlerWithDevOps). Returns(http.StatusOK, RespOK, nil). Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag})) return nil