Skip to content

Commit ea8b1ef

Browse files
committed
lint and test fixes
Signed-off-by: Jukie <[email protected]>
1 parent df0d88d commit ea8b1ef

File tree

3 files changed

+32
-40
lines changed

3 files changed

+32
-40
lines changed

internal/cmd/certgen.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import (
1111
"errors"
1212
"fmt"
1313
"io"
14-
corev1 "k8s.io/api/core/v1"
15-
"k8s.io/apimachinery/pkg/types"
1614
"path"
1715

1816
"github.com/spf13/cobra"
1917
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
18+
corev1 "k8s.io/api/core/v1"
19+
"k8s.io/apimachinery/pkg/types"
2020
"sigs.k8s.io/controller-runtime/pkg/client"
2121
clicfg "sigs.k8s.io/controller-runtime/pkg/client/config"
2222

@@ -82,7 +82,7 @@ func certGen(ctx context.Context, logOut io.Writer, local bool) error {
8282
if err = outputCertsForKubernetes(ctx, cli, cfg, overwriteControlPlaneCerts, certs); err != nil {
8383
return fmt.Errorf("failed to output certificates: %w", err)
8484
}
85-
if err = patchTopologyInjectorWebhook(ctx, cli, cfg, certs.CACertificate); err != nil {
85+
if err = patchTopologyInjectorWebhook(ctx, cli, cfg); err != nil {
8686
return fmt.Errorf("failed to patch webhook: %w", err)
8787
}
8888
} else {
@@ -118,7 +118,7 @@ func outputCertsForKubernetes(ctx context.Context, cli client.Client, cfg *confi
118118
return nil
119119
}
120120

121-
func patchTopologyInjectorWebhook(ctx context.Context, cli client.Client, cfg *config.Server, caBundle []byte) error {
121+
func patchTopologyInjectorWebhook(ctx context.Context, cli client.Client, cfg *config.Server) error {
122122
if disableTopologyInjector {
123123
return nil
124124
}

internal/provider/kubernetes/topology_injector.go

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"context"
1010
"encoding/json"
1111
"fmt"
12+
1213
corev1 "k8s.io/api/core/v1"
1314
"k8s.io/apimachinery/pkg/types"
1415
"k8s.io/klog/v2"

internal/provider/kubernetes/topology_injector_test.go

+27-36
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"testing"
1212

1313
"github.com/stretchr/testify/require"
14+
"gomodules.xyz/jsonpatch/v2"
1415
admissionv1 "k8s.io/api/admission/v1"
1516
corev1 "k8s.io/api/core/v1"
1617
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -45,11 +46,11 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
4546
}
4647

4748
cases := []struct {
48-
caseName string
49-
obj client.Object
50-
node *corev1.Node
51-
pod *corev1.Pod
52-
wantErr bool
49+
caseName string
50+
obj client.Object
51+
node *corev1.Node
52+
pod *corev1.Pod
53+
expectedPatchResp []jsonpatch.JsonPatchOperation
5354
}{
5455
{
5556
caseName: "valid binding",
@@ -60,9 +61,15 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
6061
},
6162
Target: corev1.ObjectReference{Name: defaultNode.Name},
6263
},
63-
node: defaultNode,
64-
pod: defaultPod,
65-
wantErr: false,
64+
node: defaultNode,
65+
pod: defaultPod,
66+
expectedPatchResp: []jsonpatch.JsonPatchOperation{{
67+
Operation: "add",
68+
Path: "/metadata/annotations",
69+
Value: map[string]interface{}{
70+
"topology.kubernetes.io/zone": "zone1",
71+
},
72+
}},
6673
},
6774
{
6875
caseName: "empty target",
@@ -72,9 +79,9 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
7279
Namespace: defaultPod.Namespace,
7380
},
7481
},
75-
node: defaultNode,
76-
pod: defaultPod,
77-
wantErr: true,
82+
node: defaultNode,
83+
pod: defaultPod,
84+
expectedPatchResp: nil,
7885
},
7986
{
8087
caseName: "skip binding - no label",
@@ -84,9 +91,9 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
8491
Namespace: "bar",
8592
},
8693
},
87-
node: defaultNode,
88-
pod: &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "bar", Name: "baz"}},
89-
wantErr: true,
94+
node: defaultNode,
95+
pod: &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "bar", Name: "baz"}},
96+
expectedPatchResp: nil,
9097
},
9198
{
9299
caseName: "no matching pod",
@@ -96,9 +103,9 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
96103
Namespace: "bar",
97104
},
98105
},
99-
node: defaultNode,
100-
pod: defaultPod,
101-
wantErr: true,
106+
node: defaultNode,
107+
pod: defaultPod,
108+
expectedPatchResp: nil,
102109
},
103110
}
104111
for _, tc := range cases {
@@ -120,9 +127,7 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
120127
}
121128

122129
objBytes, err := json.Marshal(tc.obj)
123-
if err != nil {
124-
t.Fatalf("failed to marshal object: %v", err)
125-
}
130+
require.NoError(t, err)
126131

127132
req := admission.Request{
128133
AdmissionRequest: admissionv1.AdmissionRequest{
@@ -135,23 +140,9 @@ func TestProxyTopologyInjector_Handle(t *testing.T) {
135140
}
136141

137142
resp := mutator.Handle(context.Background(), req)
143+
require.True(t, resp.Allowed)
138144

139-
if !resp.Allowed && tc.wantErr {
140-
t.Fatalf("expected Allowed response, got: %v", resp.Result)
141-
}
142-
143-
updatedPod := &corev1.Pod{}
144-
if err = fakeClient.Get(context.Background(), types.NamespacedName{Name: tc.pod.Name, Namespace: tc.pod.Namespace}, updatedPod); err != nil {
145-
t.Fatalf("get pod: %v", err)
146-
}
147-
148-
zone, ok := updatedPod.Labels[corev1.LabelTopologyZone]
149-
if tc.wantErr {
150-
require.False(t, ok, "pod has unexpected topology label: %v", updatedPod)
151-
} else {
152-
require.True(t, ok, "pod does not have expected topology label: %v", updatedPod)
153-
require.Equal(t, zone, tc.node.Labels[corev1.LabelTopologyZone])
154-
}
145+
require.Equal(t, tc.expectedPatchResp, resp.Patches)
155146
})
156147
}
157148
}

0 commit comments

Comments
 (0)