mirror of https://github.com/k3s-io/k3s
Merge pull request #73737 from odino/owner-references-in-create-job
Attaching owner references to jobs create via "--from=cronjob/xyz"k3s-v1.15.3
commit
afefc0b2c5
|
@ -31,6 +31,7 @@ go_library(
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
"//pkg/kubectl/util/templates:go_default_library",
|
"//pkg/kubectl/util/templates:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
|
@ -82,6 +83,7 @@ go_test(
|
||||||
"//pkg/kubectl/cmd/testing:go_default_library",
|
"//pkg/kubectl/cmd/testing:go_default_library",
|
||||||
"//pkg/kubectl/generate/versioned:go_default_library",
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
|
|
|
@ -21,6 +21,7 @@ import (
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
batchv1 "k8s.io/api/batch/v1"
|
batchv1 "k8s.io/api/batch/v1"
|
||||||
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
@ -230,6 +231,7 @@ func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *
|
||||||
for k, v := range cronJob.Spec.JobTemplate.Annotations {
|
for k, v := range cronJob.Spec.JobTemplate.Annotations {
|
||||||
annotations[k] = v
|
annotations[k] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
return &batchv1.Job{
|
return &batchv1.Job{
|
||||||
// this is ok because we know exactly how we want to be serialized
|
// this is ok because we know exactly how we want to be serialized
|
||||||
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
|
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
|
||||||
|
@ -237,6 +239,9 @@ func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *
|
||||||
Name: o.Name,
|
Name: o.Name,
|
||||||
Annotations: annotations,
|
Annotations: annotations,
|
||||||
Labels: cronJob.Spec.JobTemplate.Labels,
|
Labels: cronJob.Spec.JobTemplate.Labels,
|
||||||
|
OwnerReferences: []metav1.OwnerReference{
|
||||||
|
*metav1.NewControllerRef(cronJob, appsv1.SchemeGroupVersion.WithKind("CronJob")),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Spec: cronJob.Spec.JobTemplate.Spec,
|
Spec: cronJob.Spec.JobTemplate.Spec,
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1"
|
||||||
batchv1 "k8s.io/api/batch/v1"
|
batchv1 "k8s.io/api/batch/v1"
|
||||||
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
@ -137,32 +138,34 @@ func TestCreateJob(t *testing.T) {
|
||||||
|
|
||||||
func TestCreateJobFromCronJob(t *testing.T) {
|
func TestCreateJobFromCronJob(t *testing.T) {
|
||||||
jobName := "test-job"
|
jobName := "test-job"
|
||||||
|
cronJob := &batchv1beta1.CronJob{
|
||||||
|
Spec: batchv1beta1.CronJobSpec{
|
||||||
|
JobTemplate: batchv1beta1.JobTemplateSpec{
|
||||||
|
Spec: batchv1.JobSpec{
|
||||||
|
Template: corev1.PodTemplateSpec{
|
||||||
|
Spec: corev1.PodSpec{
|
||||||
|
Containers: []corev1.Container{
|
||||||
|
{Image: "test-image"},
|
||||||
|
},
|
||||||
|
RestartPolicy: corev1.RestartPolicyNever,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
tests := map[string]struct {
|
tests := map[string]struct {
|
||||||
from *batchv1beta1.CronJob
|
from *batchv1beta1.CronJob
|
||||||
expected *batchv1.Job
|
expected *batchv1.Job
|
||||||
}{
|
}{
|
||||||
"from CronJob": {
|
"from CronJob": {
|
||||||
from: &batchv1beta1.CronJob{
|
from: cronJob,
|
||||||
Spec: batchv1beta1.CronJobSpec{
|
|
||||||
JobTemplate: batchv1beta1.JobTemplateSpec{
|
|
||||||
Spec: batchv1.JobSpec{
|
|
||||||
Template: corev1.PodTemplateSpec{
|
|
||||||
Spec: corev1.PodSpec{
|
|
||||||
Containers: []corev1.Container{
|
|
||||||
{Image: "test-image"},
|
|
||||||
},
|
|
||||||
RestartPolicy: corev1.RestartPolicyNever,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expected: &batchv1.Job{
|
expected: &batchv1.Job{
|
||||||
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
|
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: jobName,
|
Name: jobName,
|
||||||
Annotations: map[string]string{"cronjob.kubernetes.io/instantiate": "manual"},
|
Annotations: map[string]string{"cronjob.kubernetes.io/instantiate": "manual"},
|
||||||
|
OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(cronJob, apps.SchemeGroupVersion.WithKind("CronJob"))},
|
||||||
},
|
},
|
||||||
Spec: batchv1.JobSpec{
|
Spec: batchv1.JobSpec{
|
||||||
Template: corev1.PodTemplateSpec{
|
Template: corev1.PodTemplateSpec{
|
||||||
|
@ -184,6 +187,7 @@ func TestCreateJobFromCronJob(t *testing.T) {
|
||||||
Name: jobName,
|
Name: jobName,
|
||||||
}
|
}
|
||||||
job := o.createJobFromCronJob(tc.from)
|
job := o.createJobFromCronJob(tc.from)
|
||||||
|
|
||||||
if !apiequality.Semantic.DeepEqual(job, tc.expected) {
|
if !apiequality.Semantic.DeepEqual(job, tc.expected) {
|
||||||
t.Errorf("expected:\n%#v\ngot:\n%#v", tc.expected, job)
|
t.Errorf("expected:\n%#v\ngot:\n%#v", tc.expected, job)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue