Skip to content

Commit 54d9e3d

Browse files
committed
Avoid to create an API client if not needed
1 parent bf6e9dd commit 54d9e3d

File tree

1 file changed

+78
-41
lines changed

1 file changed

+78
-41
lines changed

pkg/cmd/util/clientcmd/factory.go

+78-41
Original file line numberDiff line numberDiff line change
@@ -250,31 +250,41 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
250250
}
251251
kScalerFunc := w.Factory.Scaler
252252
w.Scaler = func(mapping *meta.RESTMapping) (kubectl.Scaler, error) {
253-
oc, kc, err := w.Clients()
254-
if err != nil {
255-
return nil, err
256-
}
257-
258253
if mapping.GroupVersionKind.GroupKind() == deployapi.Kind("DeploymentConfig") {
254+
oc, kc, err := w.Clients()
255+
if err != nil {
256+
return nil, err
257+
}
259258
return deploycmd.NewDeploymentConfigScaler(oc, kc), nil
260259
}
261260
return kScalerFunc(mapping)
262261
}
263262
kReaperFunc := w.Factory.Reaper
264263
w.Reaper = func(mapping *meta.RESTMapping) (kubectl.Reaper, error) {
265-
oc, kc, err := w.Clients()
266-
if err != nil {
267-
return nil, err
268-
}
269-
270264
switch mapping.GroupVersionKind.GroupKind() {
271265
case deployapi.Kind("DeploymentConfig"):
266+
oc, kc, err := w.Clients()
267+
if err != nil {
268+
return nil, err
269+
}
272270
return deploycmd.NewDeploymentConfigReaper(oc, kc), nil
273271
case authorizationapi.Kind("Role"):
272+
oc, _, err := w.Clients()
273+
if err != nil {
274+
return nil, err
275+
}
274276
return authorizationreaper.NewRoleReaper(oc, oc), nil
275277
case authorizationapi.Kind("ClusterRole"):
278+
oc, _, err := w.Clients()
279+
if err != nil {
280+
return nil, err
281+
}
276282
return authorizationreaper.NewClusterRoleReaper(oc, oc, oc), nil
277283
case userapi.Kind("User"):
284+
oc, kc, err := w.Clients()
285+
if err != nil {
286+
return nil, err
287+
}
278288
return authenticationreaper.NewUserReaper(
279289
client.UsersInterface(oc),
280290
client.GroupsInterface(oc),
@@ -283,13 +293,21 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
283293
kclient.SecurityContextConstraintsInterface(kc),
284294
), nil
285295
case userapi.Kind("Group"):
296+
oc, kc, err := w.Clients()
297+
if err != nil {
298+
return nil, err
299+
}
286300
return authenticationreaper.NewGroupReaper(
287301
client.GroupsInterface(oc),
288302
client.ClusterRoleBindingsInterface(oc),
289303
client.RoleBindingsNamespacer(oc),
290304
kclient.SecurityContextConstraintsInterface(kc),
291305
), nil
292306
case buildapi.Kind("BuildConfig"):
307+
oc, _, err := w.Clients()
308+
if err != nil {
309+
return nil, err
310+
}
293311
return buildreaper.NewBuildConfigReaper(oc), nil
294312
}
295313
return kReaperFunc(mapping)
@@ -328,17 +346,16 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
328346
}
329347
kLogsForObjectFunc := w.Factory.LogsForObject
330348
w.LogsForObject = func(object, options runtime.Object) (*restclient.Request, error) {
331-
oc, _, err := w.Clients()
332-
if err != nil {
333-
return nil, err
334-
}
335-
336349
switch t := object.(type) {
337350
case *deployapi.DeploymentConfig:
338351
dopts, ok := options.(*deployapi.DeploymentLogOptions)
339352
if !ok {
340353
return nil, errors.New("provided options object is not a DeploymentLogOptions")
341354
}
355+
oc, _, err := w.Clients()
356+
if err != nil {
357+
return nil, err
358+
}
342359
return oc.DeploymentLogs(t.Namespace).Get(t.Name, *dopts), nil
343360
case *buildapi.Build:
344361
bopts, ok := options.(*buildapi.BuildLogOptions)
@@ -348,12 +365,20 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
348365
if bopts.Version != nil {
349366
return nil, errors.New("cannot specify a version and a build")
350367
}
368+
oc, _, err := w.Clients()
369+
if err != nil {
370+
return nil, err
371+
}
351372
return oc.BuildLogs(t.Namespace).Get(t.Name, *bopts), nil
352373
case *buildapi.BuildConfig:
353374
bopts, ok := options.(*buildapi.BuildLogOptions)
354375
if !ok {
355376
return nil, errors.New("provided options object is not a BuildLogOptions")
356377
}
378+
oc, _, err := w.Clients()
379+
if err != nil {
380+
return nil, err
381+
}
357382
builds, err := oc.Builds(t.Namespace).List(api.ListOptions{})
358383
if err != nil {
359384
return nil, err
@@ -444,18 +469,17 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
444469
w.PrintObjectSpecificMessage = func(obj runtime.Object, out io.Writer) {}
445470
kPauseObjectFunc := w.Factory.PauseObject
446471
w.Factory.PauseObject = func(object runtime.Object) (bool, error) {
447-
oc, _, err := w.Clients()
448-
if err != nil {
449-
return false, err
450-
}
451-
452472
switch t := object.(type) {
453473
case *deployapi.DeploymentConfig:
454474
if t.Spec.Paused {
455475
return true, nil
456476
}
457477
t.Spec.Paused = true
458-
_, err := oc.DeploymentConfigs(t.Namespace).Update(t)
478+
oc, _, err := w.Clients()
479+
if err != nil {
480+
return false, err
481+
}
482+
_, err = oc.DeploymentConfigs(t.Namespace).Update(t)
459483
// TODO: Pause the deployer containers.
460484
return false, err
461485
default:
@@ -464,18 +488,17 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
464488
}
465489
kResumeObjectFunc := w.Factory.ResumeObject
466490
w.Factory.ResumeObject = func(object runtime.Object) (bool, error) {
467-
oc, _, err := w.Clients()
468-
if err != nil {
469-
return false, err
470-
}
471-
472491
switch t := object.(type) {
473492
case *deployapi.DeploymentConfig:
474493
if !t.Spec.Paused {
475494
return true, nil
476495
}
477496
t.Spec.Paused = false
478-
_, err := oc.DeploymentConfigs(t.Namespace).Update(t)
497+
oc, _, err := w.Clients()
498+
if err != nil {
499+
return false, err
500+
}
501+
_, err = oc.DeploymentConfigs(t.Namespace).Update(t)
479502
// TODO: Resume the deployer containers.
480503
return false, err
481504
default:
@@ -484,26 +507,24 @@ func NewFactory(clientConfig kclientcmd.ClientConfig) *Factory {
484507
}
485508
kHistoryViewerFunc := w.Factory.HistoryViewer
486509
w.Factory.HistoryViewer = func(mapping *meta.RESTMapping) (kubectl.HistoryViewer, error) {
487-
oc, kc, err := w.Clients()
488-
if err != nil {
489-
return nil, err
490-
}
491-
492510
switch mapping.GroupVersionKind.GroupKind() {
493511
case deployapi.Kind("DeploymentConfig"):
512+
oc, kc, err := w.Clients()
513+
if err != nil {
514+
return nil, err
515+
}
494516
return deploycmd.NewDeploymentConfigHistoryViewer(oc, kc), nil
495517
}
496518
return kHistoryViewerFunc(mapping)
497519
}
498520
kRollbackerFunc := w.Factory.Rollbacker
499521
w.Factory.Rollbacker = func(mapping *meta.RESTMapping) (kubectl.Rollbacker, error) {
500-
oc, _, err := w.Clients()
501-
if err != nil {
502-
return nil, err
503-
}
504-
505522
switch mapping.GroupVersionKind.GroupKind() {
506523
case deployapi.Kind("DeploymentConfig"):
524+
oc, _, err := w.Clients()
525+
if err != nil {
526+
return nil, err
527+
}
507528
return deploycmd.NewDeploymentConfigRollbacker(oc), nil
508529
}
509530
return kRollbackerFunc(mapping)
@@ -700,10 +721,6 @@ func (f *Factory) PodForResource(resource string, timeout time.Duration) (string
700721
if err != nil {
701722
return "", err
702723
}
703-
oc, kc, err := f.Clients()
704-
if err != nil {
705-
return "", err
706-
}
707724
mapper, _ := f.Object(false)
708725
resourceType, name, err := util.ResolveResource(api.Resource("pods"), resource, mapper)
709726
if err != nil {
@@ -714,6 +731,10 @@ func (f *Factory) PodForResource(resource string, timeout time.Duration) (string
714731
case api.Resource("pods"):
715732
return name, nil
716733
case api.Resource("replicationcontrollers"):
734+
_, kc, err := f.Clients()
735+
if err != nil {
736+
return "", err
737+
}
717738
rc, err := kc.ReplicationControllers(namespace).Get(name)
718739
if err != nil {
719740
return "", err
@@ -725,6 +746,10 @@ func (f *Factory) PodForResource(resource string, timeout time.Duration) (string
725746
}
726747
return pod.Name, nil
727748
case deployapi.Resource("deploymentconfigs"):
749+
oc, kc, err := f.Clients()
750+
if err != nil {
751+
return "", err
752+
}
728753
dc, err := oc.DeploymentConfigs(namespace).Get(name)
729754
if err != nil {
730755
return "", err
@@ -736,6 +761,10 @@ func (f *Factory) PodForResource(resource string, timeout time.Duration) (string
736761
}
737762
return pod.Name, nil
738763
case extensions.Resource("daemonsets"):
764+
_, kc, err := f.Clients()
765+
if err != nil {
766+
return "", err
767+
}
739768
ds, err := kc.Extensions().DaemonSets(namespace).Get(name)
740769
if err != nil {
741770
return "", err
@@ -750,12 +779,20 @@ func (f *Factory) PodForResource(resource string, timeout time.Duration) (string
750779
}
751780
return pod.Name, nil
752781
case extensions.Resource("jobs"):
782+
_, kc, err := f.Clients()
783+
if err != nil {
784+
return "", err
785+
}
753786
job, err := kc.Extensions().Jobs(namespace).Get(name)
754787
if err != nil {
755788
return "", err
756789
}
757790
return podNameForJob(job, kc, timeout, sortBy)
758791
case batch.Resource("jobs"):
792+
_, kc, err := f.Clients()
793+
if err != nil {
794+
return "", err
795+
}
759796
job, err := kc.Batch().Jobs(namespace).Get(name)
760797
if err != nil {
761798
return "", err

0 commit comments

Comments
 (0)