package controller import ( "context" "flink-kube-operator/internal/crd" "flink-kube-operator/internal/crd/v1alpha1" "flink-kube-operator/internal/managed_job" "k8s.io/apimachinery/pkg/types" ) type GetJobsReq struct { } type GetJobsResp struct { Body []v1alpha1.FlinkJob } func GetJobs(ctx context.Context, req *GetJobsReq) (*GetJobsResp, error) { jobs := []v1alpha1.FlinkJob{} for _, key := range crd.GetAllJobKeys() { job := crd.GetJob(key) job.ManagedFields = nil jobs = append(jobs, job) } return &GetJobsResp{Body: jobs}, nil } type StopJobReq struct { JobUId string `path:"uid"` } type StopJobRespBody struct { Success bool `json:"success"` } type StopJobResp struct { Body StopJobRespBody } func StopJob(ctx context.Context, req *StopJobReq) (*StopJobResp, error) { mgr := managed_job.GetManager() job := mgr.GetJob(types.UID(req.JobUId)) err := job.Stop() if err != nil { return nil, err } return &StopJobResp{Body: StopJobRespBody{ Success: true, }}, nil } func StartJob(ctx context.Context, req *StopJobReq) (*StopJobResp, error) { mgr := managed_job.GetManager() job := mgr.GetJob(types.UID(req.JobUId)) err := job.Run(true) if err != nil { return nil, err } return &StopJobResp{Body: StopJobRespBody{ Success: true, }}, nil } func RemoveJobJar(ctx context.Context, req *StopJobReq) (*StopJobResp, error) { mgr := managed_job.GetManager() job := mgr.GetJob(types.UID(req.JobUId)) job.RemoveJar() return &StopJobResp{Body: StopJobRespBody{ Success: true, }}, nil } func PauseJob(ctx context.Context, req *StopJobReq) (*StopJobResp, error) { mgr := managed_job.GetManager() job := mgr.GetJob(types.UID(req.JobUId)) job.Pause() return &StopJobResp{Body: StopJobRespBody{ Success: true, }}, nil }