diff --git a/helm/cronTab.go b/helm/cronTab.go index 5ac8d3d..2f41112 100644 --- a/helm/cronTab.go +++ b/helm/cronTab.go @@ -1,25 +1,32 @@ package helm +type CronTab struct { + *K8sBase `yaml:",inline"` + Spec CronSpec `yaml:"spec"` +} +type CronSpec struct { + Schedule string `yaml:"schedule"` + JobTemplate JobTemplate `yaml:"jobTemplate"` +} +type JobTemplate struct { + Spec JobSpecDescription `yaml:"spec"` +} + +type JobSpecDescription struct { + Template JobSpecTemplate `yaml:"template"` +} + +type JobSpecTemplate struct { + Metadata Metadata `yaml:"metadata"` + Spec Job `yaml:"spec"` +} + 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{ @@ -35,25 +42,21 @@ func NewCrontab(name, image, command, schedule string, serviceAccount *ServiceAc 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", + cron.Spec.Schedule = schedule + cron.Spec.JobTemplate.Spec.Template.Metadata = Metadata{ + Labels: cron.K8sBase.Metadata.Labels, + } + cron.Spec.JobTemplate.Spec.Template.Spec = Job{ + ServiceAccount: serviceAccount.Name(), + ServiceAccountName: serviceAccount.Name(), + Containers: []Container{ + { + Name: name, + Image: image, + Command: []string{command}, }, }, + RestartPolicy: "OnFailure", } return cron