add credential usage hander

Signed-off-by: runzexia <runzexia@yunify.com>
This commit is contained in:
runzexia
2020-03-27 15:03:17 +08:00
parent 98fed531ac
commit f827116a1d
5 changed files with 61 additions and 8 deletions

View File

@@ -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 {

View File

@@ -11,9 +11,10 @@ import (
)
type ProjectPipelineHandler struct {
projectMemberOperator devops.ProjectMemberOperator
devopsOperator devops.DevopsOperator
projectOperator devops.ProjectOperator
projectMemberOperator devops.ProjectMemberOperator
devopsOperator devops.DevopsOperator
projectOperator devops.ProjectOperator
projectCredentialGetter devops.ProjectCredentialGetter
}
type PipelineSonarHandler struct {
@@ -23,9 +24,10 @@ type PipelineSonarHandler struct {
func NewProjectPipelineHandler(devopsClient devopsClient.Interface, dbClient *mysql.Database) ProjectPipelineHandler {
return ProjectPipelineHandler{
projectMemberOperator: devops.NewProjectMemberOperator(devopsClient, dbClient),
devopsOperator: devops.NewDevopsOperator(devopsClient),
projectOperator: devops.NewProjectOperator(dbClient),
projectMemberOperator: devops.NewProjectMemberOperator(devopsClient, dbClient),
devopsOperator: devops.NewDevopsOperator(devopsClient),
projectOperator: devops.NewProjectOperator(dbClient),
projectCredentialGetter: devops.NewProjectCredentialOperator(devopsClient),
}
}

View File

@@ -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).

View File

@@ -0,0 +1,29 @@
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}
}

View File

@@ -51,7 +51,5 @@ type CredentialOperator interface {
GetCredentialInProject(projectId, id string) (*Credential, error)
GetCredentialsInProject(projectId string) ([]*Credential, error)
DeleteCredentialInProject(projectId, id string) (string, error)
}