mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
CronJob: Add ControllerRef on all created Jobs.
This commit is contained in:
parent
4c954d6dbb
commit
d72eebd3fc
@ -54,6 +54,7 @@ go_test(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/apis/batch/v1:go_default_library",
|
"//pkg/apis/batch/v1:go_default_library",
|
||||||
"//pkg/apis/batch/v2alpha1:go_default_library",
|
"//pkg/apis/batch/v2alpha1:go_default_library",
|
||||||
|
"//pkg/controller:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
||||||
|
@ -56,6 +56,9 @@ import (
|
|||||||
|
|
||||||
// Utilities for dealing with Jobs and CronJobs and time.
|
// Utilities for dealing with Jobs and CronJobs and time.
|
||||||
|
|
||||||
|
// controllerKind contains the schema.GroupVersionKind for this controller type.
|
||||||
|
var controllerKind = batchv2alpha1.SchemeGroupVersion.WithKind("CronJob")
|
||||||
|
|
||||||
type CronJobController struct {
|
type CronJobController struct {
|
||||||
kubeClient clientset.Interface
|
kubeClient clientset.Interface
|
||||||
jobControl jobControlInterface
|
jobControl jobControlInterface
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1"
|
batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1"
|
||||||
batchv2alpha1 "k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
|
batchv2alpha1 "k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
|
||||||
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
)
|
)
|
||||||
|
|
||||||
// schedule is hourly on the hour
|
// schedule is hourly on the hour
|
||||||
@ -289,6 +290,23 @@ func TestSyncOne_RunOrNot(t *testing.T) {
|
|||||||
if len(jc.Jobs) != expectedCreates {
|
if len(jc.Jobs) != expectedCreates {
|
||||||
t.Errorf("%s: expected %d job started, actually %v", name, expectedCreates, len(jc.Jobs))
|
t.Errorf("%s: expected %d job started, actually %v", name, expectedCreates, len(jc.Jobs))
|
||||||
}
|
}
|
||||||
|
for i := range jc.Jobs {
|
||||||
|
job := &jc.Jobs[i]
|
||||||
|
controllerRef := controller.GetControllerOf(job)
|
||||||
|
if controllerRef == nil {
|
||||||
|
t.Errorf("%s: expected job to have ControllerRef: %#v", name, job)
|
||||||
|
} else {
|
||||||
|
if got, want := controllerRef.APIVersion, "batch/v2alpha1"; got != want {
|
||||||
|
t.Errorf("%s: controllerRef.APIVersion = %q, want %q", name, got, want)
|
||||||
|
}
|
||||||
|
if got, want := controllerRef.Kind, "CronJob"; got != want {
|
||||||
|
t.Errorf("%s: controllerRef.Kind = %q, want %q", name, got, want)
|
||||||
|
}
|
||||||
|
if controllerRef.Controller == nil || *controllerRef.Controller != true {
|
||||||
|
t.Errorf("%s: controllerRef.Controller is not set to true", name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expectedDeletes := 0
|
expectedDeletes := 0
|
||||||
if tc.expectDelete {
|
if tc.expectDelete {
|
||||||
|
@ -180,6 +180,17 @@ func getRecentUnmetScheduleTimes(sj batchv2alpha1.CronJob, now time.Time) ([]tim
|
|||||||
return starts, nil
|
return starts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newControllerRef(sj *batchv2alpha1.CronJob) *metav1.OwnerReference {
|
||||||
|
isController := true
|
||||||
|
return &metav1.OwnerReference{
|
||||||
|
APIVersion: controllerKind.GroupVersion().String(),
|
||||||
|
Kind: controllerKind.Kind,
|
||||||
|
Name: sj.Name,
|
||||||
|
UID: sj.UID,
|
||||||
|
Controller: &isController,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// XXX unit test this
|
// XXX unit test this
|
||||||
|
|
||||||
// getJobFromTemplate makes a Job from a CronJob
|
// getJobFromTemplate makes a Job from a CronJob
|
||||||
@ -199,9 +210,10 @@ func getJobFromTemplate(sj *batchv2alpha1.CronJob, scheduledTime time.Time) (*ba
|
|||||||
|
|
||||||
job := &batchv1.Job{
|
job := &batchv1.Job{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Labels: labels,
|
Labels: labels,
|
||||||
Annotations: annotations,
|
Annotations: annotations,
|
||||||
Name: name,
|
Name: name,
|
||||||
|
OwnerReferences: []metav1.OwnerReference{*newControllerRef(sj)},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := api.Scheme.Convert(&sj.Spec.JobTemplate.Spec, &job.Spec, nil); err != nil {
|
if err := api.Scheme.Convert(&sj.Spec.JobTemplate.Spec, &job.Spec, nil); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user