Skip to content

Commit 0a9a777

Browse files
authored
Construct the typed clients we need (#1637)
The pattern of constructing all the clients to get a kubernetes.Interface, only to extract one or two typed clients has the side-effect of importing a lot of packages that are otherwise unneeded. Avoid doing so by constructing the clients we need. This isn't sufficient to remove all these extra dependencies (because of the use of scheme.Scheme as default), but it is a step closer.
1 parent 4e7f0c9 commit 0a9a777

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

pkg/internal/recorder/recorder.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ import (
2424
"github.com/go-logr/logr"
2525
corev1 "k8s.io/api/core/v1"
2626
"k8s.io/apimachinery/pkg/runtime"
27-
"k8s.io/client-go/kubernetes"
28-
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
27+
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
2928
"k8s.io/client-go/rest"
3029
"k8s.io/client-go/tools/record"
3130
)
@@ -45,7 +44,7 @@ type Provider struct {
4544
scheme *runtime.Scheme
4645
// logger is the logger to use when logging diagnostic event info
4746
logger logr.Logger
48-
evtClient typedcorev1.EventInterface
47+
evtClient corev1client.EventInterface
4948
makeBroadcaster EventBroadcasterProducer
5049

5150
broadcasterOnce sync.Once
@@ -98,7 +97,7 @@ func (p *Provider) getBroadcaster() record.EventBroadcaster {
9897

9998
p.broadcasterOnce.Do(func() {
10099
broadcaster, stop := p.makeBroadcaster()
101-
broadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: p.evtClient})
100+
broadcaster.StartRecordingToSink(&corev1client.EventSinkImpl{Interface: p.evtClient})
102101
broadcaster.StartEventWatcher(
103102
func(e *corev1.Event) {
104103
p.logger.V(1).Info(e.Type, "object", e.InvolvedObject, "reason", e.Reason, "message", e.Message)
@@ -112,12 +111,12 @@ func (p *Provider) getBroadcaster() record.EventBroadcaster {
112111

113112
// NewProvider create a new Provider instance.
114113
func NewProvider(config *rest.Config, scheme *runtime.Scheme, logger logr.Logger, makeBroadcaster EventBroadcasterProducer) (*Provider, error) {
115-
clientSet, err := kubernetes.NewForConfig(config)
114+
corev1Client, err := corev1client.NewForConfig(config)
116115
if err != nil {
117-
return nil, fmt.Errorf("failed to init clientSet: %w", err)
116+
return nil, fmt.Errorf("failed to init client: %w", err)
118117
}
119118

120-
p := &Provider{scheme: scheme, logger: logger, makeBroadcaster: makeBroadcaster, evtClient: clientSet.CoreV1().Events("")}
119+
p := &Provider{scheme: scheme, logger: logger, makeBroadcaster: makeBroadcaster, evtClient: corev1Client.Events("")}
121120
return p, nil
122121
}
123122

pkg/internal/recorder/recorder_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ var _ = Describe("recorder.Provider", func() {
3434
Expect(err).NotTo(HaveOccurred())
3535
})
3636

37-
It("should return an error if failed to init clientSet.", func() {
37+
It("should return an error if failed to init client.", func() {
3838
// Invalid the config
3939
cfg1 := *cfg
4040
cfg1.Host = "invalid host"
4141
_, err := recorder.NewProvider(&cfg1, scheme.Scheme, logr.DiscardLogger{}, makeBroadcaster)
4242
Expect(err).NotTo(BeNil())
43-
Expect(err.Error()).To(ContainSubstring("failed to init clientSet"))
43+
Expect(err.Error()).To(ContainSubstring("failed to init client"))
4444
})
4545
})
4646
Describe("GetEventRecorder", func() {

pkg/leaderelection/leader_election.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ import (
2323
"os"
2424

2525
"k8s.io/apimachinery/pkg/util/uuid"
26-
"k8s.io/client-go/kubernetes"
26+
coordinationv1client "k8s.io/client-go/kubernetes/typed/coordination/v1"
27+
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
2728
"k8s.io/client-go/rest"
2829
"k8s.io/client-go/tools/leaderelection/resourcelock"
2930
"sigs.k8s.io/controller-runtime/pkg/recorder"
@@ -84,17 +85,23 @@ func NewResourceLock(config *rest.Config, recorderProvider recorder.Provider, op
8485
}
8586
id = id + "_" + string(uuid.NewUUID())
8687

87-
// Construct client for leader election
88-
client, err := kubernetes.NewForConfig(rest.AddUserAgent(config, "leader-election"))
88+
// Construct clients for leader election
89+
rest.AddUserAgent(config, "leader-election")
90+
corev1Client, err := corev1client.NewForConfig(config)
91+
if err != nil {
92+
return nil, err
93+
}
94+
95+
coordinationClient, err := coordinationv1client.NewForConfig(config)
8996
if err != nil {
9097
return nil, err
9198
}
9299

93100
return resourcelock.New(options.LeaderElectionResourceLock,
94101
options.LeaderElectionNamespace,
95102
options.LeaderElectionID,
96-
client.CoreV1(),
97-
client.CoordinationV1(),
103+
corev1Client,
104+
coordinationClient,
98105
resourcelock.ResourceLockConfig{
99106
Identity: id,
100107
EventRecorder: recorderProvider.GetEventRecorderFor(id),

0 commit comments

Comments
 (0)