Skip to content

Commit 104a212

Browse files
committed
Work around watch-list requests in gkenetworkparamset tests.
Reject watch-list options for the networking fake client so reflectors fall back to classic list+watch until upstream fake support lands.
1 parent d8e857f commit 104a212

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

pkg/controller/gkenetworkparamset/gkenetworkparamset_controller_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ import (
2020
"k8s.io/apimachinery/pkg/api/errors"
2121
condmeta "k8s.io/apimachinery/pkg/api/meta"
2222
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23+
"k8s.io/apimachinery/pkg/watch"
2324
"k8s.io/client-go/informers"
2425
"k8s.io/client-go/kubernetes/fake"
26+
clientgotesting "k8s.io/client-go/testing"
2527
"k8s.io/client-go/tools/cache"
2628
utilnode "k8s.io/cloud-provider-gcp/pkg/util/node"
2729
"k8s.io/cloud-provider-gcp/providers/gce"
@@ -54,6 +56,9 @@ const (
5456

5557
func setupGKENetworkParamSetController(ctx context.Context) *testGKENetworkParamSetController {
5658
fakeNetworking := networkfake.NewSimpleClientset()
59+
// Temporary workaround to disable watch list. It should be fixed properly by updating gke-networking-api
60+
// Pending PR: https://github.com/GoogleCloudPlatform/gke-networking-api/pull/75
61+
disableWatchListForFakeNetworkingClient(fakeNetworking)
5762
nwInfFactory := networkinformers.NewSharedInformerFactory(fakeNetworking, 0*time.Second)
5863
nwInformer := nwInfFactory.Networking().V1().Networks()
5964
gnpInformer := nwInfFactory.Networking().V1().GKENetworkParamSets()
@@ -104,6 +109,26 @@ func setupGKENetworkParamSetController(ctx context.Context) *testGKENetworkParam
104109
}
105110
}
106111

112+
// disableWatchListForFakeNetworkingClient rejects watch-list requests for this
113+
// fake client so reflector falls back to classic list+watch.
114+
func disableWatchListForFakeNetworkingClient(client *networkfake.Clientset) {
115+
client.PrependWatchReactor("*", func(action clientgotesting.Action) (bool, watch.Interface, error) {
116+
watchAction, ok := action.(interface {
117+
GetListOptions() metav1.ListOptions
118+
})
119+
if !ok {
120+
return false, nil, nil
121+
}
122+
123+
opts := watchAction.GetListOptions()
124+
if opts.SendInitialEvents != nil && *opts.SendInitialEvents {
125+
// Force reflector fallback to classic list+watch for this fake client only.
126+
return true, nil, errors.NewBadRequest("watch-list unsupported by gke-networking-api fake client")
127+
}
128+
return false, nil, nil
129+
})
130+
}
131+
107132
func (testVals *testGKENetworkParamSetController) runGKENetworkParamSetController(ctx context.Context) {
108133
go testVals.controller.Run(1, ctx.Done(), testVals.metrics)
109134
}

0 commit comments

Comments
 (0)