未验证 提交 f827116a 编写于 作者: R runzexia

add credential usage hander

Signed-off-by: Nrunzexia <runzexia@yunify.com>
上级 98fed531
......@@ -20,6 +20,7 @@ package v1alpha2
import (
"github.com/emicklei/go-restful"
log "k8s.io/klog"
"kubesphere.io/kubesphere/pkg/api"
"kubesphere.io/kubesphere/pkg/models/devops"
"net/http"
"strings"
......@@ -622,6 +623,20 @@ func (h *ProjectPipelineHandler) ToJson(req *restful.Request, resp *restful.Resp
resp.WriteAsJson(res)
}
func (h *ProjectPipelineHandler) GetProjectCredentialUsage(req *restful.Request, resp *restful.Response) {
projectId := req.PathParameter("devops")
credentialId := req.PathParameter("credential")
response, err := h.projectCredentialGetter.GetProjectCredentialUsage(projectId, credentialId)
if err != nil {
log.Errorf("%+v", err)
api.HandleInternalError(resp, nil, err)
return
}
resp.WriteAsJson(response)
return
}
func parseErr(err error, resp *restful.Response) {
log.Error(err)
if jErr, ok := err.(*devops.JkError); ok {
......
......@@ -14,6 +14,7 @@ type ProjectPipelineHandler struct {
projectMemberOperator devops.ProjectMemberOperator
devopsOperator devops.DevopsOperator
projectOperator devops.ProjectOperator
projectCredentialGetter devops.ProjectCredentialGetter
}
type PipelineSonarHandler struct {
......@@ -26,6 +27,7 @@ func NewProjectPipelineHandler(devopsClient devopsClient.Interface, dbClient *my
projectMemberOperator: devops.NewProjectMemberOperator(devopsClient, dbClient),
devopsOperator: devops.NewDevopsOperator(devopsClient),
projectOperator: devops.NewProjectOperator(dbClient),
projectCredentialGetter: devops.NewProjectCredentialOperator(devopsClient),
}
}
......
......@@ -80,6 +80,7 @@ func AddToContainer(c *restful.Container, devopsClient devops.Interface,
if projectPipleineEnable {
projectPipelineHander := NewProjectPipelineHandler(devopsClient, dbClient)
webservice.Route(webservice.GET("/devops/{devops}").
To(projectPipelineHander.GetDevOpsProjectHandler).
Doc("Get the specified DevOps Project").
......@@ -156,6 +157,14 @@ func AddToContainer(c *restful.Container, devopsClient devops.Interface,
Param(webservice.PathParameter("member", "member's username, e.g. admin")).
Writes(devops.ProjectMembership{}))
webservice.Route(webservice.GET("/devops/{devops}/credentials/{credential}/usage").
To(projectPipelineHander.GetProjectCredentialUsage).
Doc("Get the specified credential usage of the DevOps project").
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsProjectCredentialTag}).
Param(webservice.PathParameter("devops", "DevOps project's ID, e.g. project-RRRRAzLBlLEm")).
Param(webservice.PathParameter("credential", "credential's ID, e.g. dockerhub-id")).
Returns(http.StatusOK, RespOK, devops.Credential{}))
// match Jenkisn api "/blue/rest/organizations/jenkins/pipelines/{devops}/{pipeline}"
webservice.Route(webservice.GET("/devops/{devops}/pipelines/{pipeline}").
To(projectPipelineHander.GetPipeline).
......
package devops
import (
"k8s.io/klog"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
)
type ProjectCredentialGetter interface {
GetProjectCredentialUsage(projectId, credentialId string) (*devops.Credential, error)
}
type projectCredentialGetter struct {
devopsClient devops.Interface
}
// GetProjectCredentialUsage get the usage of Credential
func (o *projectCredentialGetter) GetProjectCredentialUsage(projectId, credentialId string) (*devops.Credential, error) {
credential, err := o.devopsClient.GetCredentialInProject(projectId,
credentialId)
if err != nil {
klog.Errorf("%+v", err)
return nil, err
}
return credential, nil
}
func NewProjectCredentialOperator(devopsClient devops.Interface) ProjectCredentialGetter {
return &projectCredentialGetter{devopsClient: devopsClient}
}
......@@ -51,7 +51,5 @@ type CredentialOperator interface {
GetCredentialInProject(projectId, id string) (*Credential, error)
GetCredentialsInProject(projectId string) ([]*Credential, error)
DeleteCredentialInProject(projectId, id string) (string, error)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册