Merge pull request #3294 from LinuxSuRen/fix-jenkins-api-proxy

Add support to proxy Jenkins API with POST method
This commit is contained in:
KubeSphere CI Bot
2021-02-01 17:39:17 +08:00
committed by GitHub

View File

@@ -704,10 +704,8 @@ func AddJenkinsToContainer(webservice *restful.WebService, devopsClient devops.I
}). }).
Returns(http.StatusOK, RespOK, nil). Returns(http.StatusOK, RespOK, nil).
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag})) Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag}))
webservice.Route(webservice.GET("/devops/{devops}/jenkins/{path:*}").
Param(webservice.PathParameter("path", "Path stands for any suffix path.")). handlerWithDevOps := func(request *restful.Request, response *restful.Response) {
Param(webservice.PathParameter("devops", "DevOps project's ID, e.g. project-RRRRAzLBlLEm")).
To(func(request *restful.Request, response *restful.Response) {
u := request.Request.URL u := request.Request.URL
devops := request.PathParameter("devops") devops := request.PathParameter("devops")
u.Host = parse.Host u.Host = parse.Host
@@ -717,7 +715,18 @@ func AddJenkinsToContainer(webservice *restful.WebService, devopsClient devops.I
GroupVersion.Group, GroupVersion.Version, devops), "", 1) GroupVersion.Group, GroupVersion.Version, devops), "", 1)
httpProxy := proxy.NewUpgradeAwareHandler(u, http.DefaultTransport, false, false, &errorResponder{}) httpProxy := proxy.NewUpgradeAwareHandler(u, http.DefaultTransport, false, false, &errorResponder{})
httpProxy.ServeHTTP(response, request.Request) 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(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). Returns(http.StatusOK, RespOK, nil).
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag})) Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag}))
return nil return nil