generated from ydataai/opensource-template
/
job_client.go
68 lines (55 loc) · 2.27 KB
/
job_client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package k8s
import (
"context"
batchV1 "k8s.io/api/batch/v1"
batchV1beta1 "k8s.io/api/batch/v1beta1"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)
// >>>>>>>>>> JOB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// GetJob gets a specific job on cluster
func (kc KubeClient) GetJob(ctx context.Context, uid string, namespace string) (*batchV1.Job, error) {
kc.logger.Infof("fetching Job: %v/%v", namespace, uid)
job := &batchV1.Job{}
err := kc.client.Get(ctx, client.ObjectKey{
Name: uid,
Namespace: namespace,
}, job)
return job, err
}
// UpdateJob creates a job on cluster
func (kc KubeClient) UpdateJob(ctx context.Context, job *batchV1.Job) error {
kc.logger.Infof("creating or updating Job: %v/%v", job.Namespace, job.Name)
return kc.client.Update(ctx, job)
}
// DeleteJob deletes a job on cluster
func (kc KubeClient) DeleteJob(ctx context.Context, job *batchV1.Job) error {
kc.logger.Infof("deleting Job: %v/%v", job.Namespace, job.Name)
return kc.client.Delete(ctx, job)
}
// >>>>>>>>>> CRON JOB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// GetCronJob gets a specific cronjob on cluster
func (kc KubeClient) GetCronJob(ctx context.Context, uid string, namespace string) (batchV1beta1.CronJob, error) {
kc.logger.Infof("fetching CronJob: %v/%v", namespace, uid)
cronjob := batchV1beta1.CronJob{}
err := kc.client.Get(ctx, client.ObjectKey{
Name: uid,
Namespace: namespace,
}, &cronjob)
return cronjob, err
}
// DeleteCronJob deletes a cronjob on cluster
func (kc KubeClient) DeleteCronJob(ctx context.Context, cronjob *batchV1beta1.CronJob) error {
kc.logger.Infof("deleting CronJob: %v/%v", cronjob.Namespace, cronjob.Name)
return kc.client.Delete(ctx, cronjob)
}
// CreateOrUpdateCronJob creates or updates a cronjob in the cluster
func (kc KubeClient) CreateOrUpdateCronJob(
ctx context.Context,
cronjob *batchV1beta1.CronJob,
mutator controllerutil.MutateFn,
) (controllerutil.OperationResult, error) {
kc.logger.Infof("creating or updating CronJob: %v/%v", cronjob.Namespace, cronjob.Name)
return ctrl.CreateOrUpdate(ctx, kc.client, cronjob, mutator)
}