Use unversioned client in scheduledjobs and set group version to batch/v2alpha1

This commit is contained in:
Janet Kuo 2016-08-09 17:43:38 -07:00 committed by Maciej Szulik
parent cc7d509e47
commit fe53ec34cf
3 changed files with 13 additions and 12 deletions

View File

@ -36,6 +36,7 @@ import (
"k8s.io/kubernetes/cmd/kube-controller-manager/app/options" "k8s.io/kubernetes/cmd/kube-controller-manager/app/options"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/batch"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/leaderelection" "k8s.io/kubernetes/pkg/client/leaderelection"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
@ -128,6 +129,7 @@ func Run(s *options.CMServer) error {
} }
kubeconfig.ContentConfig.ContentType = s.ContentType kubeconfig.ContentConfig.ContentType = s.ContentType
kubeconfig.ContentConfig.GroupVersion = &unversioned.GroupVersion{Group: batch.GroupName, Version: "v2alpha1"}
// Override kubeconfig qps/burst settings from flags // Override kubeconfig qps/burst settings from flags
kubeconfig.QPS = s.KubeAPIQPS kubeconfig.QPS = s.KubeAPIQPS
kubeconfig.Burst = int(s.KubeAPIBurst) kubeconfig.Burst = int(s.KubeAPIBurst)
@ -390,7 +392,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
glog.Infof("Starting %s apis", groupVersion) glog.Infof("Starting %s apis", groupVersion)
if containsResource(resources, "scheduledjobs") { if containsResource(resources, "scheduledjobs") {
glog.Infof("Starting scheduledjob controller") glog.Infof("Starting scheduledjob controller")
go scheduledjob.NewScheduledJobController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "scheduledjob-controller"))). go scheduledjob.NewScheduledJobController(kubeClient).
Run(wait.NeverStop) Run(wait.NeverStop)
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter)) time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter)) time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))

View File

@ -37,9 +37,8 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/batch" "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" "k8s.io/kubernetes/pkg/client/record"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/controller/job" "k8s.io/kubernetes/pkg/controller/job"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/metrics" "k8s.io/kubernetes/pkg/util/metrics"
@ -50,20 +49,20 @@ import (
// Utilities for dealing with Jobs and ScheduledJobs and time. // Utilities for dealing with Jobs and ScheduledJobs and time.
type ScheduledJobController struct { type ScheduledJobController struct {
kubeClient clientset.Interface kubeClient *client.Client
jobControl jobControlInterface jobControl jobControlInterface
sjControl sjControlInterface sjControl sjControlInterface
recorder record.EventRecorder recorder record.EventRecorder
} }
func NewScheduledJobController(kubeClient clientset.Interface) *ScheduledJobController { func NewScheduledJobController(kubeClient *client.Client) *ScheduledJobController {
eventBroadcaster := record.NewBroadcaster() eventBroadcaster := record.NewBroadcaster()
eventBroadcaster.StartLogging(glog.Infof) eventBroadcaster.StartLogging(glog.Infof)
// TODO: remove the wrapper when every clients have moved to use the clientset. // TODO: remove the wrapper when every clients have moved to use the clientset.
eventBroadcaster.StartRecordingToSink(&unversionedcore.EventSinkImpl{Interface: kubeClient.Core().Events("")}) eventBroadcaster.StartRecordingToSink(kubeClient.Events(""))
if kubeClient != nil && kubeClient.Batch().GetRESTClient().GetRateLimiter() != nil { if kubeClient != nil && kubeClient.GetRateLimiter() != nil {
metrics.RegisterMetricAndTrackRateLimiterUsage("scheduledjob_controller", kubeClient.Batch().GetRESTClient().GetRateLimiter()) metrics.RegisterMetricAndTrackRateLimiterUsage("scheduledjob_controller", kubeClient.GetRateLimiter())
} }
jm := &ScheduledJobController{ jm := &ScheduledJobController{
@ -76,7 +75,7 @@ func NewScheduledJobController(kubeClient clientset.Interface) *ScheduledJobCont
return jm return jm
} }
func NewScheduledJobControllerFromClient(kubeClient clientset.Interface) *ScheduledJobController { func NewScheduledJobControllerFromClient(kubeClient *client.Client) *ScheduledJobController {
jm := NewScheduledJobController(kubeClient) jm := NewScheduledJobController(kubeClient)
return jm return jm
} }

View File

@ -20,8 +20,8 @@ import (
"sync" "sync"
"k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/batch"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
) )
@ -33,7 +33,7 @@ type sjControlInterface interface {
// realSJControl is the default implementation of sjControlInterface. // realSJControl is the default implementation of sjControlInterface.
type realSJControl struct { type realSJControl struct {
KubeClient clientset.Interface KubeClient *client.Client
} }
var _ sjControlInterface = &realSJControl{} var _ sjControlInterface = &realSJControl{}
@ -69,7 +69,7 @@ type jobControlInterface interface {
// realJobControl is the default implementation of jobControlInterface. // realJobControl is the default implementation of jobControlInterface.
type realJobControl struct { type realJobControl struct {
KubeClient clientset.Interface KubeClient *client.Client
Recorder record.EventRecorder Recorder record.EventRecorder
} }