mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-05-14 15:42:12 +08:00
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package cronjob
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
batch2 "k8s.io/api/batch/v1beta1"
|
|
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/kubernetes"
|
|
)
|
|
|
|
// CronJobDetail contains Cron Job details.
|
|
type CronJobDetail struct {
|
|
// Extends list item structure.
|
|
CronJob `json:",inline"`
|
|
|
|
ConcurrencyPolicy string `json:"concurrencyPolicy"`
|
|
|
|
StartingDeadLineSeconds *int64 `json:"startingDeadlineSeconds"`
|
|
|
|
JobList *JobList `json:"jobList"`
|
|
}
|
|
|
|
// GetCronJobDetail gets Cron Job details.
|
|
func GetCronJobDetail(client *kubernetes.Clientset, namespace, name string) (*CronJobDetail, error) {
|
|
|
|
rawObject, err := client.BatchV1beta1().CronJobs(namespace).Get(context.TODO(), name, metaV1.GetOptions{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
j, _ := json.Marshal(rawObject)
|
|
fmt.Printf("cronJob: %s\n", j)
|
|
cj := toCronJobDetail(rawObject, client, name)
|
|
return &cj, nil
|
|
}
|
|
|
|
func toCronJobDetail(cj *batch2.CronJob, client *kubernetes.Clientset, name string) CronJobDetail {
|
|
|
|
return CronJobDetail{
|
|
CronJob: toCronJob(cj),
|
|
ConcurrencyPolicy: string(cj.Spec.ConcurrencyPolicy),
|
|
StartingDeadLineSeconds: cj.Spec.StartingDeadlineSeconds,
|
|
JobList: getJobList(client, cj, name),
|
|
}
|
|
}
|