Files
katenary/helm/cronTab.go

61 lines
1.4 KiB
Go
Raw Normal View History

2022-05-24 14:44:31 +02:00
package helm
type Job struct {
ServiceAccount string `yaml:"serviceAccount,omitempty"`
ServiceAccountName string `yaml:"serviceAccountName,omitempty"`
Containers []Container `yaml:"containers"`
RestartPolicy string `yaml:"restartPolicy,omitempty"`
}
type JobSpec struct {
Template Job `yaml:"template"`
}
type JobTemplate struct {
Metadata Metadata `yaml:"metadata"`
Spec JobSpec `yaml:"spec"`
Schedule string `yaml:"schedule"`
}
type CronTab struct {
*K8sBase `yaml:",inline"`
JobTemplate JobTemplate `yaml:"jobTemplate"`
}
func NewCrontab(name, image, command, schedule string, serviceAccount *ServiceAccount) *CronTab {
cron := &CronTab{
K8sBase: NewBase(),
}
cron.K8sBase.ApiVersion = "batch/v1"
cron.K8sBase.Kind = "CronJob"
//cmd, err := shlex.Split(command)
//if err != nil {
// panic(err)
//}
cron.K8sBase.Metadata.Name = ReleaseNameTpl + "-" + name
cron.K8sBase.Metadata.Labels[K+"/component"] = name
cron.JobTemplate = JobTemplate{
Schedule: schedule,
Metadata: Metadata{
Labels: cron.K8sBase.Metadata.Labels,
},
Spec: JobSpec{
Template: Job{
ServiceAccount: serviceAccount.Name(),
ServiceAccountName: serviceAccount.Name(),
Containers: []Container{
{
Name: name,
Image: image,
Command: []string{command},
},
},
RestartPolicy: "OnFailure",
},
},
}
return cron
}