package devops import ( "github.com/emicklei/go-restful" "github.com/golang/glog" "kubesphere.io/kubesphere/pkg/constants" "kubesphere.io/kubesphere/pkg/errors" "kubesphere.io/kubesphere/pkg/models/devops" "net/http" ) func CreateDevOpsProjectCredentialHandler(request *restful.Request, resp *restful.Response) { projectId := request.PathParameter("devops") username := request.HeaderParameter(constants.UserNameHeader) var credential *devops.JenkinsCredential err := request.ReadEntity(&credential) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusBadRequest, err.Error()), resp) return } err = devops.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer}) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusForbidden, err.Error()), resp) return } credentialId, err := devops.CreateProjectCredential(projectId, username, credential) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(err, resp) return } resp.WriteAsJson(struct { Name string `json:"name"` }{Name: credentialId}) return } func UpdateDevOpsProjectCredentialHandler(request *restful.Request, resp *restful.Response) { projectId := request.PathParameter("devops") username := request.HeaderParameter(constants.UserNameHeader) credentialId := request.PathParameter("credentials") var credential *devops.JenkinsCredential err := request.ReadEntity(&credential) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusBadRequest, err.Error()), resp) return } err = devops.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer}) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusForbidden, err.Error()), resp) return } credentialId, err = devops.UpdateProjectCredential(projectId, credentialId, credential) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(err, resp) return } resp.WriteAsJson(struct { Name string `json:"name"` }{Name: credentialId}) return } func DeleteDevOpsProjectCredentialHandler(request *restful.Request, resp *restful.Response) { projectId := request.PathParameter("devops") username := request.HeaderParameter(constants.UserNameHeader) credentialId := request.PathParameter("credentials") var credential *devops.JenkinsCredential err := request.ReadEntity(&credential) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusBadRequest, err.Error()), resp) return } err = devops.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer}) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusForbidden, err.Error()), resp) return } credentialId, err = devops.DeleteProjectCredential(projectId, credentialId, credential) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(err, resp) return } resp.WriteAsJson(struct { Name string `json:"name"` }{Name: credentialId}) return } func GetDevOpsProjectCredentialHandler(request *restful.Request, resp *restful.Response) { projectId := request.PathParameter("devops") username := request.HeaderParameter(constants.UserNameHeader) credentialId := request.PathParameter("credentials") getContent := request.QueryParameter("content") domain := request.QueryParameter("domain") err := devops.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer}) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusForbidden, err.Error()), resp) return } response, err := devops.GetProjectCredential(projectId, credentialId, domain, getContent) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(err, resp) return } resp.WriteAsJson(response) return } func GetDevOpsProjectCredentialsHandler(request *restful.Request, resp *restful.Response) { projectId := request.PathParameter("devops") username := request.HeaderParameter(constants.UserNameHeader) domain := request.QueryParameter("domain") err := devops.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer}) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(restful.NewError(http.StatusForbidden, err.Error()), resp) return } jenkinsCredentials, err := devops.GetProjectCredentials(projectId, domain) if err != nil { glog.Errorf("%+v", err) errors.ParseSvcErr(err, resp) return } resp.WriteAsJson(jenkinsCredentials) return }