From 7a34347f7f7503dea787c6cb0f27c5e97b1c49d2 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Tue, 13 Sep 2016 11:24:01 +0200 Subject: [PATCH] Move ScheduledJob controller to use generated clientset --- .../app/controllermanager.go | 8 ++------ pkg/controller/scheduledjob/controller.go | 17 +++++++++-------- pkg/controller/scheduledjob/injection.go | 12 ++++++------ 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index bbc6d2e7984..bedc3256367 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -404,13 +404,9 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig glog.Infof("Starting %s apis", groupVersion) if containsResource(resources, "scheduledjobs") { glog.Infof("Starting scheduledjob controller") - // TODO: this is a temp fix for allowing kubeClient list v2alpha1 sj, should switch to using clientset + // // TODO: this is a temp fix for allowing kubeClient list v2alpha1 sj, should switch to using clientset kubeconfig.ContentConfig.GroupVersion = &unversioned.GroupVersion{Group: batch.GroupName, Version: "v2alpha1"} - kubeClient, err := client.New(kubeconfig) - if err != nil { - glog.Fatalf("Invalid API configuration: %v", err) - } - go scheduledjob.NewScheduledJobController(kubeClient). + go scheduledjob.NewScheduledJobController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "scheduledjob-controller"))). Run(wait.NeverStop) time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter)) time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter)) diff --git a/pkg/controller/scheduledjob/controller.go b/pkg/controller/scheduledjob/controller.go index 45680ab82df..27f711c6c53 100644 --- a/pkg/controller/scheduledjob/controller.go +++ b/pkg/controller/scheduledjob/controller.go @@ -38,8 +38,9 @@ import ( "k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/apis/batch" + clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned" "k8s.io/kubernetes/pkg/client/record" - client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/controller/job" "k8s.io/kubernetes/pkg/runtime" utilerrors "k8s.io/kubernetes/pkg/util/errors" @@ -51,21 +52,21 @@ import ( // Utilities for dealing with Jobs and ScheduledJobs and time. type ScheduledJobController struct { - kubeClient *client.Client + kubeClient clientset.Interface jobControl jobControlInterface sjControl sjControlInterface podControl podControlInterface recorder record.EventRecorder } -func NewScheduledJobController(kubeClient *client.Client) *ScheduledJobController { +func NewScheduledJobController(kubeClient clientset.Interface) *ScheduledJobController { eventBroadcaster := record.NewBroadcaster() eventBroadcaster.StartLogging(glog.Infof) // TODO: remove the wrapper when every clients have moved to use the clientset. - eventBroadcaster.StartRecordingToSink(kubeClient.Events("")) + eventBroadcaster.StartRecordingToSink(&unversionedcore.EventSinkImpl{Interface: kubeClient.Core().Events("")}) - if kubeClient != nil && kubeClient.GetRateLimiter() != nil { - metrics.RegisterMetricAndTrackRateLimiterUsage("scheduledjob_controller", kubeClient.GetRateLimiter()) + if kubeClient != nil && kubeClient.Core().GetRESTClient().GetRateLimiter() != nil { + metrics.RegisterMetricAndTrackRateLimiterUsage("scheduledjob_controller", kubeClient.Core().GetRESTClient().GetRateLimiter()) } jm := &ScheduledJobController{ @@ -73,13 +74,13 @@ func NewScheduledJobController(kubeClient *client.Client) *ScheduledJobControlle jobControl: realJobControl{KubeClient: kubeClient}, sjControl: &realSJControl{KubeClient: kubeClient}, podControl: &realPodControl{KubeClient: kubeClient}, - recorder: eventBroadcaster.NewRecorder(api.EventSource{Component: "scheduled-job-controller"}), + recorder: eventBroadcaster.NewRecorder(api.EventSource{Component: "scheduledjob-controller"}), } return jm } -func NewScheduledJobControllerFromClient(kubeClient *client.Client) *ScheduledJobController { +func NewScheduledJobControllerFromClient(kubeClient clientset.Interface) *ScheduledJobController { jm := NewScheduledJobController(kubeClient) return jm } diff --git a/pkg/controller/scheduledjob/injection.go b/pkg/controller/scheduledjob/injection.go index 26715df9783..15f7ba95f9f 100644 --- a/pkg/controller/scheduledjob/injection.go +++ b/pkg/controller/scheduledjob/injection.go @@ -21,8 +21,8 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/batch" + clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/client/record" - client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/labels" ) @@ -34,7 +34,7 @@ type sjControlInterface interface { // realSJControl is the default implementation of sjControlInterface. type realSJControl struct { - KubeClient *client.Client + KubeClient clientset.Interface } var _ sjControlInterface = &realSJControl{} @@ -73,7 +73,7 @@ type jobControlInterface interface { // realJobControl is the default implementation of jobControlInterface. type realJobControl struct { - KubeClient *client.Client + KubeClient clientset.Interface Recorder record.EventRecorder } @@ -182,18 +182,18 @@ type podControlInterface interface { // realPodControl is the default implementation of podControlInterface. type realPodControl struct { - KubeClient *client.Client + KubeClient clientset.Interface Recorder record.EventRecorder } var _ podControlInterface = &realPodControl{} func (r realPodControl) ListPods(namespace string, opts api.ListOptions) (*api.PodList, error) { - return r.KubeClient.Pods(namespace).List(opts) + return r.KubeClient.Core().Pods(namespace).List(opts) } func (r realPodControl) DeletePod(namespace string, name string) error { - return r.KubeClient.Pods(namespace).Delete(name, nil) + return r.KubeClient.Core().Pods(namespace).Delete(name, nil) } type fakePodControl struct {