mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	CronJob: Add ControllerRef on all created Jobs.
This commit is contained in:
		@@ -54,6 +54,7 @@ go_test(
 | 
			
		||||
        "//pkg/api/v1:go_default_library",
 | 
			
		||||
        "//pkg/apis/batch/v1: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/types: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.
 | 
			
		||||
 | 
			
		||||
// controllerKind contains the schema.GroupVersionKind for this controller type.
 | 
			
		||||
var controllerKind = batchv2alpha1.SchemeGroupVersion.WithKind("CronJob")
 | 
			
		||||
 | 
			
		||||
type CronJobController struct {
 | 
			
		||||
	kubeClient clientset.Interface
 | 
			
		||||
	jobControl jobControlInterface
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
			
		||||
	batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1"
 | 
			
		||||
	batchv2alpha1 "k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// schedule is hourly on the hour
 | 
			
		||||
@@ -289,6 +290,23 @@ func TestSyncOne_RunOrNot(t *testing.T) {
 | 
			
		||||
		if len(jc.Jobs) != expectedCreates {
 | 
			
		||||
			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
 | 
			
		||||
		if tc.expectDelete {
 | 
			
		||||
 
 | 
			
		||||
@@ -180,6 +180,17 @@ func getRecentUnmetScheduleTimes(sj batchv2alpha1.CronJob, now time.Time) ([]tim
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
// getJobFromTemplate makes a Job from a CronJob
 | 
			
		||||
@@ -202,6 +213,7 @@ func getJobFromTemplate(sj *batchv2alpha1.CronJob, scheduledTime time.Time) (*ba
 | 
			
		||||
			Labels:          labels,
 | 
			
		||||
			Annotations:     annotations,
 | 
			
		||||
			Name:            name,
 | 
			
		||||
			OwnerReferences: []metav1.OwnerReference{*newControllerRef(sj)},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	if err := api.Scheme.Convert(&sj.Spec.JobTemplate.Spec, &job.Spec, nil); err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user