From 36ebf0cd4e7433ef74f7ce50ad0c949e13e11d46 Mon Sep 17 00:00:00 2001 From: Shaun Crampton Date: Tue, 7 Jan 2025 10:53:44 +0000 Subject: [PATCH] Use interfaces for k8s clients in resources package. Allows for mocking later. --- libcalico-go/lib/backend/k8s/resources/bgpconfig.go | 2 +- libcalico-go/lib/backend/k8s/resources/bgpfilter.go | 2 +- libcalico-go/lib/backend/k8s/resources/bgppeer.go | 2 +- libcalico-go/lib/backend/k8s/resources/caliconodestatus.go | 2 +- libcalico-go/lib/backend/k8s/resources/clusterinfo.go | 2 +- libcalico-go/lib/backend/k8s/resources/customresource.go | 4 ++-- libcalico-go/lib/backend/k8s/resources/felixconfig.go | 2 +- .../lib/backend/k8s/resources/globalnetworkpolicies.go | 2 +- libcalico-go/lib/backend/k8s/resources/globalnetworkset.go | 2 +- libcalico-go/lib/backend/k8s/resources/hostendpoint.go | 2 +- libcalico-go/lib/backend/k8s/resources/ipam_affinity.go | 2 +- libcalico-go/lib/backend/k8s/resources/ipam_block.go | 2 +- libcalico-go/lib/backend/k8s/resources/ipam_config.go | 2 +- libcalico-go/lib/backend/k8s/resources/ipam_handle.go | 2 +- libcalico-go/lib/backend/k8s/resources/ippool.go | 2 +- libcalico-go/lib/backend/k8s/resources/ipreservation.go | 2 +- libcalico-go/lib/backend/k8s/resources/k8sservice.go | 4 ++-- .../lib/backend/k8s/resources/kubecontrollersconfig.go | 2 +- libcalico-go/lib/backend/k8s/resources/kubeendpointslice.go | 4 ++-- libcalico-go/lib/backend/k8s/resources/kubenetworkpolicy.go | 4 ++-- libcalico-go/lib/backend/k8s/resources/networkpolicy.go | 2 +- libcalico-go/lib/backend/k8s/resources/networkset.go | 2 +- libcalico-go/lib/backend/k8s/resources/node.go | 4 ++-- libcalico-go/lib/backend/k8s/resources/profile.go | 4 ++-- libcalico-go/lib/backend/k8s/resources/tiers.go | 2 +- 25 files changed, 31 insertions(+), 31 deletions(-) diff --git a/libcalico-go/lib/backend/k8s/resources/bgpconfig.go b/libcalico-go/lib/backend/k8s/resources/bgpconfig.go index d5f3e24aa5a..7e7cea215ab 100644 --- a/libcalico-go/lib/backend/k8s/resources/bgpconfig.go +++ b/libcalico-go/lib/backend/k8s/resources/bgpconfig.go @@ -28,7 +28,7 @@ const ( BGPConfigCRDName = "bgpconfigurations.crd.projectcalico.org" ) -func NewBGPConfigClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewBGPConfigClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/bgpfilter.go b/libcalico-go/lib/backend/k8s/resources/bgpfilter.go index c4fac77afcd..b382641b55b 100644 --- a/libcalico-go/lib/backend/k8s/resources/bgpfilter.go +++ b/libcalico-go/lib/backend/k8s/resources/bgpfilter.go @@ -28,7 +28,7 @@ const ( BGPFilterCRDName = "BGPFilters.crd.projectcalico.org" ) -func NewBGPFilterClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewBGPFilterClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/bgppeer.go b/libcalico-go/lib/backend/k8s/resources/bgppeer.go index 2f87d216649..072fa6c08ae 100644 --- a/libcalico-go/lib/backend/k8s/resources/bgppeer.go +++ b/libcalico-go/lib/backend/k8s/resources/bgppeer.go @@ -28,7 +28,7 @@ const ( BGPPeerCRDName = "bgppeers.crd.projectcalico.org" ) -func NewBGPPeerClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewBGPPeerClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/caliconodestatus.go b/libcalico-go/lib/backend/k8s/resources/caliconodestatus.go index e01d67fddec..08787b35208 100644 --- a/libcalico-go/lib/backend/k8s/resources/caliconodestatus.go +++ b/libcalico-go/lib/backend/k8s/resources/caliconodestatus.go @@ -28,7 +28,7 @@ const ( CalicoNodeStatusCRDName = "CalicoNodeStatuses.crd.projectcalico.org" ) -func NewCalicoNodeStatusClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewCalicoNodeStatusClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/clusterinfo.go b/libcalico-go/lib/backend/k8s/resources/clusterinfo.go index 0fd00e4e84b..2c12b1a81ee 100644 --- a/libcalico-go/lib/backend/k8s/resources/clusterinfo.go +++ b/libcalico-go/lib/backend/k8s/resources/clusterinfo.go @@ -28,7 +28,7 @@ const ( ClusterInfoCRDName = "clusterinformations.crd.projectcalico.org" ) -func NewClusterInfoClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewClusterInfoClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/customresource.go b/libcalico-go/lib/backend/k8s/resources/customresource.go index 48f2b330259..674a003649c 100644 --- a/libcalico-go/lib/backend/k8s/resources/customresource.go +++ b/libcalico-go/lib/backend/k8s/resources/customresource.go @@ -42,8 +42,8 @@ import ( // mechanism for a 1:1 mapping between a Calico Resource and an equivalent Kubernetes // custom resource type. type customK8sResourceClient struct { - clientSet *kubernetes.Clientset - restClient *rest.RESTClient + clientSet kubernetes.Interface + restClient rest.Interface // Name of the CRD. Not used. name string diff --git a/libcalico-go/lib/backend/k8s/resources/felixconfig.go b/libcalico-go/lib/backend/k8s/resources/felixconfig.go index 3734c79d58c..9cef53d7812 100644 --- a/libcalico-go/lib/backend/k8s/resources/felixconfig.go +++ b/libcalico-go/lib/backend/k8s/resources/felixconfig.go @@ -28,7 +28,7 @@ const ( FelixConfigCRDName = "felixconfigurations.crd.projectcalico.org" ) -func NewFelixConfigClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewFelixConfigClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/globalnetworkpolicies.go b/libcalico-go/lib/backend/k8s/resources/globalnetworkpolicies.go index cdc1e290531..bd1c067a2e7 100644 --- a/libcalico-go/lib/backend/k8s/resources/globalnetworkpolicies.go +++ b/libcalico-go/lib/backend/k8s/resources/globalnetworkpolicies.go @@ -28,7 +28,7 @@ const ( GlobalNetworkPolicyCRDName = "globalnetworkpolicies.crd.projectcalico.org" ) -func NewGlobalNetworkPolicyClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewGlobalNetworkPolicyClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/globalnetworkset.go b/libcalico-go/lib/backend/k8s/resources/globalnetworkset.go index 2257db137e8..5db74143534 100644 --- a/libcalico-go/lib/backend/k8s/resources/globalnetworkset.go +++ b/libcalico-go/lib/backend/k8s/resources/globalnetworkset.go @@ -28,7 +28,7 @@ const ( GlobalNetworkSetCRDName = "globalnetworksets.crd.projectcalico.org" ) -func NewGlobalNetworkSetClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewGlobalNetworkSetClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/hostendpoint.go b/libcalico-go/lib/backend/k8s/resources/hostendpoint.go index 13c94069f28..2ac287103a1 100644 --- a/libcalico-go/lib/backend/k8s/resources/hostendpoint.go +++ b/libcalico-go/lib/backend/k8s/resources/hostendpoint.go @@ -28,7 +28,7 @@ const ( HostEndpointCRDName = "hostendpoints.crd.projectcalico.org" ) -func NewHostEndpointClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewHostEndpointClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/ipam_affinity.go b/libcalico-go/lib/backend/k8s/resources/ipam_affinity.go index 73a9b5e3b4e..699d5daf62a 100644 --- a/libcalico-go/lib/backend/k8s/resources/ipam_affinity.go +++ b/libcalico-go/lib/backend/k8s/resources/ipam_affinity.go @@ -44,7 +44,7 @@ const ( BlockAffinityCRDName = "blockaffinities.crd.projectcalico.org" ) -func NewBlockAffinityClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewBlockAffinityClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { // Create a resource client which manages k8s CRDs. rc := customK8sResourceClient{ clientSet: c, diff --git a/libcalico-go/lib/backend/k8s/resources/ipam_block.go b/libcalico-go/lib/backend/k8s/resources/ipam_block.go index 37c860fd9e8..d6ff3bee8dc 100644 --- a/libcalico-go/lib/backend/k8s/resources/ipam_block.go +++ b/libcalico-go/lib/backend/k8s/resources/ipam_block.go @@ -41,7 +41,7 @@ const ( IPAMBlockCRDName = "ipamblocks.crd.projectcalico.org" ) -func NewIPAMBlockClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewIPAMBlockClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { // Create a resource client which manages k8s CRDs. rc := customK8sResourceClient{ clientSet: c, diff --git a/libcalico-go/lib/backend/k8s/resources/ipam_config.go b/libcalico-go/lib/backend/k8s/resources/ipam_config.go index d282083ab8a..e67eec30bdf 100644 --- a/libcalico-go/lib/backend/k8s/resources/ipam_config.go +++ b/libcalico-go/lib/backend/k8s/resources/ipam_config.go @@ -35,7 +35,7 @@ const ( IPAMConfigCRDName = "ipamconfigs.crd.projectcalico.org" ) -func NewIPAMConfigClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewIPAMConfigClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &ipamConfigClient{ rc: customK8sResourceClient{ clientSet: c, diff --git a/libcalico-go/lib/backend/k8s/resources/ipam_handle.go b/libcalico-go/lib/backend/k8s/resources/ipam_handle.go index 021ec51cab4..4021387b0a9 100644 --- a/libcalico-go/lib/backend/k8s/resources/ipam_handle.go +++ b/libcalico-go/lib/backend/k8s/resources/ipam_handle.go @@ -38,7 +38,7 @@ const ( IPAMHandleCRDName = "ipamhandles.crd.projectcalico.org" ) -func NewIPAMHandleClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewIPAMHandleClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { // Create a resource client which manages k8s CRDs. rc := customK8sResourceClient{ clientSet: c, diff --git a/libcalico-go/lib/backend/k8s/resources/ippool.go b/libcalico-go/lib/backend/k8s/resources/ippool.go index 6fe73e294c4..a073b65f7f4 100644 --- a/libcalico-go/lib/backend/k8s/resources/ippool.go +++ b/libcalico-go/lib/backend/k8s/resources/ippool.go @@ -33,7 +33,7 @@ const ( IPPoolCRDName = "ippools.crd.projectcalico.org" ) -func NewIPPoolClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewIPPoolClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/ipreservation.go b/libcalico-go/lib/backend/k8s/resources/ipreservation.go index 1bce6731b22..6f2b323930a 100644 --- a/libcalico-go/lib/backend/k8s/resources/ipreservation.go +++ b/libcalico-go/lib/backend/k8s/resources/ipreservation.go @@ -28,7 +28,7 @@ const ( IPReservationCRDName = "ipreservations.crd.projectcalico.org" ) -func NewIPReservationClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewIPReservationClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/k8sservice.go b/libcalico-go/lib/backend/k8s/resources/k8sservice.go index 99d445eb7f1..be7b9beb464 100644 --- a/libcalico-go/lib/backend/k8s/resources/k8sservice.go +++ b/libcalico-go/lib/backend/k8s/resources/k8sservice.go @@ -37,7 +37,7 @@ import ( // resources. This allows a syncer to return the kubernetes resources that are included in this client, // These resource types are only accessible through the backend client API. -func NewServiceClient(c *kubernetes.Clientset) K8sResourceClient { +func NewServiceClient(c kubernetes.Interface) K8sResourceClient { return &serviceClient{ Converter: conversion.NewConverter(), clientSet: c, @@ -47,7 +47,7 @@ func NewServiceClient(c *kubernetes.Clientset) K8sResourceClient { // Implements the api.Client interface for Kubernetes Service. type serviceClient struct { conversion.Converter - clientSet *kubernetes.Clientset + clientSet kubernetes.Interface } // Create is not supported. diff --git a/libcalico-go/lib/backend/k8s/resources/kubecontrollersconfig.go b/libcalico-go/lib/backend/k8s/resources/kubecontrollersconfig.go index a71272598e5..9244997aa61 100644 --- a/libcalico-go/lib/backend/k8s/resources/kubecontrollersconfig.go +++ b/libcalico-go/lib/backend/k8s/resources/kubecontrollersconfig.go @@ -30,7 +30,7 @@ const ( KubeControllersConfigCRDName = "kubecontrollersconfigurations.crd.projectcalico.org" ) -func NewKubeControllersConfigClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewKubeControllersConfigClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/kubeendpointslice.go b/libcalico-go/lib/backend/k8s/resources/kubeendpointslice.go index eb0eada542d..b9e4880f02f 100644 --- a/libcalico-go/lib/backend/k8s/resources/kubeendpointslice.go +++ b/libcalico-go/lib/backend/k8s/resources/kubeendpointslice.go @@ -35,7 +35,7 @@ import ( // NewKubernetesEndpointSliceClient returns a new client for interacting with Kubernetes EndpointSlice objects. // Note that this client is only intended for use by the felix syncer in KDD mode, and as such is largely unimplemented // except for the functions required by the syncer. -func NewKubernetesEndpointSliceClient(c *kubernetes.Clientset) K8sResourceClient { +func NewKubernetesEndpointSliceClient(c kubernetes.Interface) K8sResourceClient { return &endpointSliceClient{ Converter: conversion.NewConverter(), clientSet: c, @@ -45,7 +45,7 @@ func NewKubernetesEndpointSliceClient(c *kubernetes.Clientset) K8sResourceClient // Implements the api.Client interface for Kubernetes EndpointSlice. type endpointSliceClient struct { conversion.Converter - clientSet *kubernetes.Clientset + clientSet kubernetes.Interface } func (c *endpointSliceClient) Create(ctx context.Context, kvp *model.KVPair) (*model.KVPair, error) { diff --git a/libcalico-go/lib/backend/k8s/resources/kubenetworkpolicy.go b/libcalico-go/lib/backend/k8s/resources/kubenetworkpolicy.go index 5f6308ca1ae..f902d381484 100644 --- a/libcalico-go/lib/backend/k8s/resources/kubenetworkpolicy.go +++ b/libcalico-go/lib/backend/k8s/resources/kubenetworkpolicy.go @@ -35,7 +35,7 @@ import ( // NewKubernetesNetworkPolicyClient returns a new client for interacting with Kubernetes NetworkPolicy objects. // Note that this client is only intended for use by the felix syncer in KDD mode, and as such is largely unimplemented // except for the functions required by the syncer. -func NewKubernetesNetworkPolicyClient(c *kubernetes.Clientset) K8sResourceClient { +func NewKubernetesNetworkPolicyClient(c kubernetes.Interface) K8sResourceClient { return &networkPolicyClient{ Converter: conversion.NewConverter(), clientSet: c, @@ -45,7 +45,7 @@ func NewKubernetesNetworkPolicyClient(c *kubernetes.Clientset) K8sResourceClient // Implements the api.Client interface for Kubernetes NetworkPolicy. type networkPolicyClient struct { conversion.Converter - clientSet *kubernetes.Clientset + clientSet kubernetes.Interface } func (c *networkPolicyClient) Create(ctx context.Context, kvp *model.KVPair) (*model.KVPair, error) { diff --git a/libcalico-go/lib/backend/k8s/resources/networkpolicy.go b/libcalico-go/lib/backend/k8s/resources/networkpolicy.go index f25ebcbfbc2..5cd68b5d4de 100644 --- a/libcalico-go/lib/backend/k8s/resources/networkpolicy.go +++ b/libcalico-go/lib/backend/k8s/resources/networkpolicy.go @@ -28,7 +28,7 @@ const ( NetworkPolicyCRDName = "networkpolicies.crd.projectcalico.org" ) -func NewNetworkPolicyClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewNetworkPolicyClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/networkset.go b/libcalico-go/lib/backend/k8s/resources/networkset.go index a666f44a2bc..7154cf10156 100644 --- a/libcalico-go/lib/backend/k8s/resources/networkset.go +++ b/libcalico-go/lib/backend/k8s/resources/networkset.go @@ -28,7 +28,7 @@ const ( NetworkSetCRDName = "networksets.crd.projectcalico.org" ) -func NewNetworkSetClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewNetworkSetClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r, diff --git a/libcalico-go/lib/backend/k8s/resources/node.go b/libcalico-go/lib/backend/k8s/resources/node.go index f635b4999ff..32f4451960d 100644 --- a/libcalico-go/lib/backend/k8s/resources/node.go +++ b/libcalico-go/lib/backend/k8s/resources/node.go @@ -57,7 +57,7 @@ const ( nodeWireguardPublicKeyV6Annotation = "projectcalico.org/WireguardPublicKeyV6" ) -func NewNodeClient(c *kubernetes.Clientset, usePodCIDR bool) K8sResourceClient { +func NewNodeClient(c kubernetes.Interface, usePodCIDR bool) K8sResourceClient { return &nodeClient{ clientSet: c, usePodCIDR: usePodCIDR, @@ -68,7 +68,7 @@ type validatorFunc func(string) error // Implements the api.Client interface for Nodes. type nodeClient struct { - clientSet *kubernetes.Clientset + clientSet kubernetes.Interface usePodCIDR bool } diff --git a/libcalico-go/lib/backend/k8s/resources/profile.go b/libcalico-go/lib/backend/k8s/resources/profile.go index 43ddf6e9c77..2f3e4142cce 100644 --- a/libcalico-go/lib/backend/k8s/resources/profile.go +++ b/libcalico-go/lib/backend/k8s/resources/profile.go @@ -37,7 +37,7 @@ import ( "github.com/projectcalico/calico/libcalico-go/lib/resources" ) -func NewProfileClient(c *kubernetes.Clientset) K8sResourceClient { +func NewProfileClient(c kubernetes.Interface) K8sResourceClient { return &profileClient{ clientSet: c, Converter: conversion.NewConverter(), @@ -46,7 +46,7 @@ func NewProfileClient(c *kubernetes.Clientset) K8sResourceClient { // Implements the api.Client interface for Profiles. type profileClient struct { - clientSet *kubernetes.Clientset + clientSet kubernetes.Interface conversion.Converter } diff --git a/libcalico-go/lib/backend/k8s/resources/tiers.go b/libcalico-go/lib/backend/k8s/resources/tiers.go index aec7f9081f3..2948f89d1b3 100644 --- a/libcalico-go/lib/backend/k8s/resources/tiers.go +++ b/libcalico-go/lib/backend/k8s/resources/tiers.go @@ -31,7 +31,7 @@ const ( TierCRDName = "tiers.crd.projectcalico.org" ) -func NewTierClient(c *kubernetes.Clientset, r *rest.RESTClient) K8sResourceClient { +func NewTierClient(c kubernetes.Interface, r rest.Interface) K8sResourceClient { return &customK8sResourceClient{ clientSet: c, restClient: r,