diff --git a/cluster/kubernetes/resource/cronjob.go b/cluster/kubernetes/resource/cronjob.go index 13b42aa38..fcf97ec5f 100644 --- a/cluster/kubernetes/resource/cronjob.go +++ b/cluster/kubernetes/resource/cronjob.go @@ -15,7 +15,7 @@ type CronJobSpec struct { Spec struct { Template PodTemplate } - } + } `yaml:"jobTemplate"` } func (c CronJob) Containers() []resource.Container { diff --git a/cluster/kubernetes/resource/load_test.go b/cluster/kubernetes/resource/load_test.go index 23d8bf53d..a4dec2611 100644 --- a/cluster/kubernetes/resource/load_test.go +++ b/cluster/kubernetes/resource/load_test.go @@ -6,6 +6,8 @@ import ( "reflect" "testing" + "github.com/stretchr/testify/assert" + "github.com/weaveworks/flux" "github.com/weaveworks/flux/cluster/kubernetes/testfiles" "github.com/weaveworks/flux/resource" @@ -119,6 +121,37 @@ data: } } +func TestParseCronJob(t *testing.T) { + doc := `--- +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + namespace: default + name: weekly-curl-homepage +spec: + jobTemplate: + spec: + template: + spec: + containers: + - name: weekly-curl-homepage + image: centos:7 # Has curl installed by default +` + objs, err := ParseMultidoc([]byte(doc), "test") + assert.NoError(t, err) + + obj, ok := objs["default:cronjob/weekly-curl-homepage"] + assert.True(t, ok) + cj, ok := obj.(*CronJob) + assert.True(t, ok) + + containers := cj.Spec.JobTemplate.Spec.Template.Spec.Containers + if assert.Len(t, containers, 1) { + assert.Equal(t, "centos:7", containers[0].Image) + assert.Equal(t, "weekly-curl-homepage", containers[0].Name) + } +} + func TestUnmarshalList(t *testing.T) { doc := `--- kind: List