Skip to content

Commit

Permalink
operator: decouple CES controller from main Clientset
Browse files Browse the repository at this point in the history
Create a new Clientset for the CiliumEndpointSlice controller using the
ClientBuilderFunc to decouple it from the other controllers.

Signed-off-by: Tim Horner <timothy.horner@isovalent.com>
  • Loading branch information
thorn3r authored and ldelossa committed May 10, 2024
1 parent c329806 commit b7e2ec9
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
7 changes: 4 additions & 3 deletions operator/pkg/ciliumendpointslice/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type params struct {
Logger logrus.FieldLogger
Lifecycle cell.Lifecycle

Clientset k8sClient.Clientset
NewClient k8sClient.ClientBuilderFunc
CiliumEndpoint resource.Resource[*v2.CiliumEndpoint]
CiliumEndpointSlice resource.Resource[*v2alpha1.CiliumEndpointSlice]
CiliumNodes resource.Resource[*v2.CiliumNode]
Expand Down Expand Up @@ -76,13 +76,14 @@ type Controller struct {

// registerController creates and initializes the CES controller
func registerController(p params) {
if !p.Clientset.IsEnabled() || !p.SharedCfg.EnableCiliumEndpointSlice {
clientset, err := p.NewClient("ciliumendpointslice-controller")
if err != nil || !clientset.IsEnabled() || !p.SharedCfg.EnableCiliumEndpointSlice {
return
}

cesController := &Controller{
logger: p.Logger,
clientset: p.Clientset,
clientset: clientset,
ciliumEndpoint: p.CiliumEndpoint,
ciliumEndpointSlice: p.CiliumEndpointSlice,
ciliumNodes: p.CiliumNodes,
Expand Down
26 changes: 17 additions & 9 deletions operator/pkg/ciliumendpointslice/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ func TestRegisterController(t *testing.T) {
// no longer than 0.5s after the workqueue is stopped.
goleak.IgnoreTopFunction("k8s.io/client-go/util/workqueue.(*Type).updateUnfinishedWorkLoop"),
)
var fakeClient k8sClient.FakeClientset
var fakeClient k8sClient.Clientset
var ciliumEndpoint resource.Resource[*cilium_v2.CiliumEndpoint]
var ciliumEndpointSlice resource.Resource[*cilium_v2a1.CiliumEndpointSlice]
hive := hive.New(
k8sClient.FakeClientCell,
k8sClient.FakeClientBuilderCell,
k8s.ResourcesCell,
cell.Provide(func() Config {
return defaultConfig
Expand All @@ -53,8 +53,12 @@ func TestRegisterController(t *testing.T) {
registerController(p)
return nil
}),
cell.Invoke(func(c *k8sClient.FakeClientset, cep resource.Resource[*cilium_v2.CiliumEndpoint], ces resource.Resource[*cilium_v2a1.CiliumEndpointSlice]) error {
fakeClient = *c
cell.Provide(func(f k8sClient.ClientBuilderFunc) k8sClient.Clientset {
clientset, _ := f("test-ces-registered")
return clientset
}),
cell.Invoke(func(c k8sClient.Clientset, cep resource.Resource[*cilium_v2.CiliumEndpoint], ces resource.Resource[*cilium_v2a1.CiliumEndpointSlice]) error {
fakeClient = c
ciliumEndpoint = cep
ciliumEndpointSlice = ces
return nil
Expand Down Expand Up @@ -83,11 +87,11 @@ func TestNotRegisterControllerWithCESDisabled(t *testing.T) {
// no longer than 0.5s after the workqueue is stopped.
goleak.IgnoreTopFunction("k8s.io/client-go/util/workqueue.(*Type).updateUnfinishedWorkLoop"),
)
var fakeClient k8sClient.FakeClientset
var fakeClient k8sClient.Clientset
var ciliumEndpoint resource.Resource[*cilium_v2.CiliumEndpoint]
var ciliumEndpointSlice resource.Resource[*cilium_v2a1.CiliumEndpointSlice]
h := hive.New(
k8sClient.FakeClientCell,
k8sClient.FakeClientBuilderCell,
k8s.ResourcesCell,
cell.Provide(func() Config {
return defaultConfig
Expand All @@ -102,8 +106,12 @@ func TestNotRegisterControllerWithCESDisabled(t *testing.T) {
registerController(p)
return nil
}),
cell.Invoke(func(c *k8sClient.FakeClientset, cep resource.Resource[*cilium_v2.CiliumEndpoint], ces resource.Resource[*cilium_v2a1.CiliumEndpointSlice]) error {
fakeClient = *c
cell.Provide(func(f k8sClient.ClientBuilderFunc) k8sClient.Clientset {
clientset, _ := f("test-ces-unregistered")
return clientset
}),
cell.Invoke(func(c k8sClient.Clientset, cep resource.Resource[*cilium_v2.CiliumEndpoint], ces resource.Resource[*cilium_v2a1.CiliumEndpointSlice]) error {
fakeClient = c
ciliumEndpoint = cep
ciliumEndpointSlice = ces
return nil
Expand All @@ -124,7 +132,7 @@ func TestNotRegisterControllerWithCESDisabled(t *testing.T) {
}
}

func createCEPandVerifyCESCreated(fakeClient k8sClient.FakeClientset, ciliumEndpoint resource.Resource[*cilium_v2.CiliumEndpoint], ciliumEndpointSlice resource.Resource[*cilium_v2a1.CiliumEndpointSlice]) (bool, error) {
func createCEPandVerifyCESCreated(fakeClient k8sClient.Clientset, ciliumEndpoint resource.Resource[*cilium_v2.CiliumEndpoint], ciliumEndpointSlice resource.Resource[*cilium_v2a1.CiliumEndpointSlice]) (bool, error) {
cep := tu.CreateStoreEndpoint("cep1", "ns", 1)
fakeClient.CiliumV2().CiliumEndpoints("ns").Create(context.Background(), cep, meta_v1.CreateOptions{})
cepStore, _ := ciliumEndpoint.Store(context.Background())
Expand Down

0 comments on commit b7e2ec9

Please sign in to comment.