Files
PandaX/apps/devops/services/k8s/cronjob/cronjob_detail.go
2022-01-22 17:07:04 +08:00

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),
}
}