1. Remove ks-iam standalone binary, move it to ks-apiserver 2. Generate all devops apis inside kubesphere repository, no need to import s2ioperator. 3. Reorganize ldap code, make it more flexible to use.
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package v1alpha2
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/emicklei/go-restful"
|
|
k8serr "k8s.io/apimachinery/pkg/api/errors"
|
|
"k8s.io/client-go/kubernetes"
|
|
"kubesphere.io/kubesphere/pkg/models/workloads"
|
|
"kubesphere.io/kubesphere/pkg/server/errors"
|
|
"net/http"
|
|
)
|
|
|
|
type operationHandler struct {
|
|
jobRunner workloads.JobRunner
|
|
}
|
|
|
|
func newOperationHandler(client kubernetes.Interface) *operationHandler {
|
|
return &operationHandler{
|
|
jobRunner: workloads.NewJobRunner(client),
|
|
}
|
|
}
|
|
|
|
func (r *operationHandler) handleJobReRun(request *restful.Request, response *restful.Response) {
|
|
var err error
|
|
|
|
job := request.PathParameter("job")
|
|
namespace := request.PathParameter("namespace")
|
|
action := request.QueryParameter("action")
|
|
resourceVersion := request.QueryParameter("resourceVersion")
|
|
|
|
switch action {
|
|
case "rerun":
|
|
err = r.jobRunner.JobReRun(namespace, job, resourceVersion)
|
|
default:
|
|
response.WriteHeaderAndEntity(http.StatusBadRequest, errors.Wrap(fmt.Errorf("invalid operation %s", action)))
|
|
return
|
|
}
|
|
if err != nil {
|
|
if k8serr.IsConflict(err) {
|
|
response.WriteHeaderAndEntity(http.StatusConflict, errors.Wrap(err))
|
|
return
|
|
}
|
|
response.WriteHeaderAndEntity(http.StatusInternalServerError, errors.Wrap(err))
|
|
return
|
|
}
|
|
|
|
response.WriteAsJson(errors.None)
|
|
}
|