Skip to content

Commit

Permalink
Merge pull request #2257 from stevekuznetsov/skuznets/migrate-apiexte…
Browse files Browse the repository at this point in the history
…nsions-clientset

✨ *: migrate to use cluster-aware apiextensions-apiserver clients, listers and informers
  • Loading branch information
openshift-merge-robot authored Oct 24, 2022
2 parents bb0332e + 0066464 commit 2459721
Show file tree
Hide file tree
Showing 55 changed files with 134 additions and 216 deletions.
8 changes: 4 additions & 4 deletions cmd/cluster-controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ import (
"time"

kcpclienthelper "github.com/kcp-dev/apimachinery/pkg/client"
kcpapiextensionsclientset "github.com/kcp-dev/client-go/apiextensions/clients/clientset/versioned"
kcpapiextensionsinformers "github.com/kcp-dev/client-go/apiextensions/clients/informers"
"github.com/spf13/pflag"

apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
crdexternalversions "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions"
genericapiserver "k8s.io/apiserver/pkg/server"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
Expand Down Expand Up @@ -87,7 +87,7 @@ func main() {
}
clusterConfig := kcpclienthelper.SetMultiClusterRoundTripper(rest.CopyConfig(config))

crdClusterClient, err := apiextensionsclient.NewForConfig(clusterConfig)
crdClusterClient, err := kcpapiextensionsclientset.NewForConfig(clusterConfig)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
Expand All @@ -99,7 +99,7 @@ func main() {
}

kcpSharedInformerFactory := kcpinformers.NewSharedInformerFactoryWithOptions(kcpclient.NewForConfigOrDie(config), resyncPeriod)
crdSharedInformerFactory := crdexternalversions.NewSharedInformerFactoryWithOptions(apiextensionsclient.NewForConfigOrDie(config), resyncPeriod)
crdSharedInformerFactory := kcpapiextensionsinformers.NewSharedInformerFactoryWithOptions(kcpapiextensionsclientset.NewForConfigOrDie(config), resyncPeriod)

apiResource, err := apiresource.NewController(
crdClusterClient,
Expand Down
2 changes: 2 additions & 0 deletions cmd/crd-puller/pull-crds.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package main

import (
Expand Down
2 changes: 2 additions & 0 deletions config/crds/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package crds

import (
Expand Down
4 changes: 2 additions & 2 deletions config/rootcompute/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import (
"context"
"embed"

kcpapiextensionsclientset "github.com/kcp-dev/client-go/apiextensions/clients/clientset/versioned"
kcpdynamic "github.com/kcp-dev/client-go/clients/dynamic"
"github.com/kcp-dev/logicalcluster/v2"

apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/util/sets"

confighelpers "github.com/kcp-dev/kcp/config/helpers"
Expand All @@ -40,7 +40,7 @@ var RootComputeWorkspace = logicalcluster.New("root:compute")
// Bootstrap creates resources in this package by continuously retrying the list.
// This is blocking, i.e. it only returns (with error) when the context is closed or with nil when
// the bootstrapping is successfully completed.
func Bootstrap(ctx context.Context, apiExtensionClusterClient apiextensionsclient.ClusterInterface, dynamicClusterClient kcpdynamic.ClusterInterface, batteriesIncluded sets.String) error {
func Bootstrap(ctx context.Context, apiExtensionClusterClient kcpapiextensionsclientset.ClusterInterface, dynamicClusterClient kcpdynamic.ClusterInterface, batteriesIncluded sets.String) error {
rootDiscoveryClient := apiExtensionClusterClient.Cluster(tenancyv1alpha1.RootCluster).Discovery()
rootDynamicClient := dynamicClusterClient.Cluster(tenancyv1alpha1.RootCluster)
if err := confighelpers.Bootstrap(ctx, rootDiscoveryClient, rootDynamicClient, batteriesIncluded, fs); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ require (
github.com/google/go-cmp v0.5.8
github.com/google/uuid v1.3.0
github.com/kcp-dev/apimachinery v0.0.0-20221019133255-9e1e13940519
github.com/kcp-dev/client-go v0.0.0-20221019184858-60e56386a574
github.com/kcp-dev/client-go v0.0.0-20221023141420-aa2709fd364f
github.com/kcp-dev/kcp/pkg/apis v0.0.0-00010101000000-000000000000
github.com/kcp-dev/logicalcluster/v2 v2.0.0-alpha.3
github.com/martinlindhe/base36 v1.1.1
Expand Down
3 changes: 2 additions & 1 deletion go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -460,8 +460,9 @@ github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E
github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
github.com/kcp-dev/apimachinery v0.0.0-20221019133255-9e1e13940519 h1:eU1HvmmP8TbzS2pB9IX2Spky20n6V79/KgX4ssiG/A8=
github.com/kcp-dev/apimachinery v0.0.0-20221019133255-9e1e13940519/go.mod h1:qnvUHkdxOrNzX17yX+z8r81CZEBuFdveNzWqFlwZ55w=
github.com/kcp-dev/client-go v0.0.0-20221019184858-60e56386a574 h1:M73BZSrOxfUkSJ58ckwuTebpQDNuX5UG5s16k2Xl4vY=
github.com/kcp-dev/client-go v0.0.0-20221019184858-60e56386a574/go.mod h1:Qmq1OxUOSdVQ8YIGnjbya5Xt04KMJ5fN41QvErl/XnI=
github.com/kcp-dev/client-go v0.0.0-20221023141420-aa2709fd364f h1:8fXuqk1fTBIQv0/k6OhrafVWddxEI8w26rHtsBup92I=
github.com/kcp-dev/client-go v0.0.0-20221023141420-aa2709fd364f/go.mod h1:jo6aMHy7JglKs2YixRXr4DjVzQiqFSA7RPqHQCi3WNo=
github.com/kcp-dev/kubernetes v0.0.0-20221021135508-401e4f0fc370 h1:J7IgeABi7HDOkF7DHm1RyeV3uKXdMrbdXoLz0JaTfr8=
github.com/kcp-dev/kubernetes v0.0.0-20221021135508-401e4f0fc370/go.mod h1:2D6mZWHzz+u16P91KvbcSBrR2/6zwdp7mlkF4IH8fXU=
github.com/kcp-dev/kubernetes/staging/src/k8s.io/api v0.0.0-20221021135508-401e4f0fc370 h1:BTwFKxwRKzOr+/SgND/UuVRppcuITp2AYwaZxIQj/hM=
Expand Down
2 changes: 0 additions & 2 deletions pkg/admission/kubequota/kubequota_admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package kubequota

import (
Expand Down
2 changes: 0 additions & 2 deletions pkg/admission/limitranger/admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package limitranger

import (
Expand Down
2 changes: 0 additions & 2 deletions pkg/admission/mutatingwebhook/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package mutatingwebhook

import (
Expand Down
2 changes: 0 additions & 2 deletions pkg/admission/namespacelifecycle/admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package namespacelifecycle

import (
Expand Down
2 changes: 0 additions & 2 deletions pkg/admission/validatingwebhook/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package validatingwebhook

import (
Expand Down
4 changes: 2 additions & 2 deletions pkg/cache/server/bootstrap/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ import (
"fmt"
"time"

kcpapiextensionsclientset "github.com/kcp-dev/client-go/apiextensions/clients/clientset/versioned"
"github.com/kcp-dev/logicalcluster/v2"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
Expand All @@ -41,7 +41,7 @@ var SystemCRDLogicalCluster = logicalcluster.New("system:system-crds")
// SystemCacheServerShard holds a default shard name
const SystemCacheServerShard = "system:cache:server"

func Bootstrap(ctx context.Context, apiExtensionsClusterClient apiextensionsclient.ClusterInterface) error {
func Bootstrap(ctx context.Context, apiExtensionsClusterClient kcpapiextensionsclientset.ClusterInterface) error {
crds := []*apiextensionsv1.CustomResourceDefinition{}
for _, resource := range []string{"apiresourceschemas", "apiexports"} {
crd := &apiextensionsv1.CustomResourceDefinition{}
Expand Down
15 changes: 7 additions & 8 deletions pkg/cache/server/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,12 @@ import (
"time"

kcpclienthelper "github.com/kcp-dev/apimachinery/pkg/client"
"github.com/kcp-dev/logicalcluster/v2"
kcpapiextensionsclientset "github.com/kcp-dev/client-go/apiextensions/clients/clientset/versioned"
kcpapiextensionsinformers "github.com/kcp-dev/client-go/apiextensions/clients/informers"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
apiextensionsapiserver "k8s.io/apiextensions-apiserver/pkg/apiserver"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apiextensionsexternalversions "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions"
apiextensionsoptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
Expand Down Expand Up @@ -68,9 +67,9 @@ type completedConfig struct {
}

type ExtraConfig struct {
ApiExtensionsClusterClient apiextensionsclient.ClusterInterface
ApiExtensionsClusterClient kcpapiextensionsclientset.ClusterInterface

ApiExtensionsSharedInformerFactory apiextensionsexternalversions.SharedInformerFactory
ApiExtensionsSharedInformerFactory kcpapiextensionsinformers.SharedInformerFactory
}

type CompletedConfig struct {
Expand Down Expand Up @@ -195,13 +194,13 @@ func NewConfig(opts *cacheserveroptions.CompletedOptions, optionalLocalShardRest
clientutils.EnableMultiCluster(rt, &serverConfig.Config, "namespaces", "apiservices", "customresourcedefinitions", "clusterroles", "clusterrolebindings", "roles", "rolebindings", "serviceaccounts", "secrets")

var err error
c.ApiExtensionsClusterClient, err = apiextensionsclient.NewClusterForConfig(rt)
c.ApiExtensionsClusterClient, err = kcpapiextensionsclientset.NewForConfig(rt)
if err != nil {
return nil, err
}

c.ApiExtensionsSharedInformerFactory = apiextensionsexternalversions.NewSharedInformerFactoryWithOptions(
c.ApiExtensionsClusterClient.Cluster(logicalcluster.Wildcard),
c.ApiExtensionsSharedInformerFactory = kcpapiextensionsinformers.NewSharedInformerFactoryWithOptions(
c.ApiExtensionsClusterClient,
resyncPeriod,
)

Expand Down
7 changes: 3 additions & 4 deletions pkg/cache/server/crd_lister.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,20 @@ import (
"context"
"fmt"

kcpapiextensionsv1listers "github.com/kcp-dev/client-go/apiextensions/clients/listers/apiextensions/v1"
"github.com/kcp-dev/logicalcluster/v2"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionslisters "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1"
"k8s.io/apiextensions-apiserver/pkg/kcp"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/klog/v2"

"github.com/kcp-dev/kcp/pkg/cache/server/bootstrap"
"github.com/kcp-dev/kcp/pkg/client"
)

// crdClusterLister is a CRD lister
type crdClusterLister struct {
lister apiextensionslisters.CustomResourceDefinitionLister
lister kcpapiextensionsv1listers.CustomResourceDefinitionClusterLister
}

func (c *crdClusterLister) Cluster(name logicalcluster.Name) kcp.ClusterAwareCRDLister {
Expand Down Expand Up @@ -70,5 +69,5 @@ func (c *crdLister) Refresh(crd *apiextensionsv1.CustomResourceDefinition) (*api
// Get gets a CustomResourceDefinition
func (c *crdLister) Get(ctx context.Context, name string) (*apiextensionsv1.CustomResourceDefinition, error) {
// TODO: make it shard and cluster aware, for now just return what we have in the system ws
return c.lister.Get(client.ToClusterAwareKey(c.cluster, name))
return c.lister.Cluster(c.cluster).Get(name)
}
2 changes: 0 additions & 2 deletions pkg/cliplugins/workload/plugin/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package plugin

import (
Expand Down
6 changes: 2 additions & 4 deletions pkg/informer/informer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

// +kcp-code-generator:skip

package informer

import (
Expand All @@ -28,14 +26,14 @@ import (
"time"

kcpcache "github.com/kcp-dev/apimachinery/pkg/cache"
kcpapiextensionsv1informers "github.com/kcp-dev/client-go/apiextensions/clients/informers/apiextensions/v1"
kcpdynamic "github.com/kcp-dev/client-go/clients/dynamic"
kcpdynamicinformer "github.com/kcp-dev/client-go/clients/dynamic/dynamicinformer"
kcpkubernetesinformers "github.com/kcp-dev/client-go/clients/informers"
"github.com/kcp-dev/logicalcluster/v2"

"k8s.io/apiextensions-apiserver/pkg/apihelpers"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsinformers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
Expand Down Expand Up @@ -89,7 +87,7 @@ type DynamicDiscoverySharedInformerFactory struct {
func NewDynamicDiscoverySharedInformerFactory(
cfg *rest.Config,
filterFunc func(obj interface{}) bool,
crdInformer apiextensionsinformers.CustomResourceDefinitionInformer,
crdInformer kcpapiextensionsv1informers.CustomResourceDefinitionClusterInformer,
indexers cache.Indexers,
) (*DynamicDiscoverySharedInformerFactory, error) {
cfg = rest.AddUserAgent(rest.CopyConfig(cfg), "kcp-partial-metadata-informers")
Expand Down
14 changes: 7 additions & 7 deletions pkg/reconciler/apis/apibinding/apibinding_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ import (

"github.com/go-logr/logr"
kcpcache "github.com/kcp-dev/apimachinery/pkg/cache"
kcpapiextensionsclientset "github.com/kcp-dev/client-go/apiextensions/clients/clientset/versioned"
kcpapiextensionsv1informers "github.com/kcp-dev/client-go/apiextensions/clients/informers/apiextensions/v1"
kcpdynamic "github.com/kcp-dev/client-go/clients/dynamic"
"github.com/kcp-dev/logicalcluster/v2"

"k8s.io/apiextensions-apiserver/pkg/apihelpers"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apiextensionsinformers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -60,7 +60,7 @@ var (

// NewController returns a new controller for APIBindings.
func NewController(
crdClusterClient apiextensionsclient.Interface,
crdClusterClient kcpapiextensionsclientset.ClusterInterface,
kcpClusterClient kcpclient.Interface,
dynamicClusterClient kcpdynamic.ClusterInterface,
dynamicDiscoverySharedInformerFactory *informer.DynamicDiscoverySharedInformerFactory,
Expand All @@ -69,7 +69,7 @@ func NewController(
apiResourceSchemaInformer apisinformers.APIResourceSchemaInformer,
temporaryRemoteShardApiExportInformer apisinformers.APIExportInformer, /*TODO(p0lyn0mial): replace with multi-shard informers*/
temporaryRemoteShardApiResourceSchemaInformer apisinformers.APIResourceSchemaInformer, /*TODO(p0lyn0mial): replace with multi-shard informers*/
crdInformer apiextensionsinformers.CustomResourceDefinitionInformer,
crdInformer kcpapiextensionsv1informers.CustomResourceDefinitionClusterInformer,
) (*controller, error) {
queue := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), ControllerName)

Expand Down Expand Up @@ -120,10 +120,10 @@ func NewController(
},

createCRD: func(ctx context.Context, clusterName logicalcluster.Name, crd *apiextensionsv1.CustomResourceDefinition) (*apiextensionsv1.CustomResourceDefinition, error) {
return crdClusterClient.ApiextensionsV1().CustomResourceDefinitions().Create(logicalcluster.WithCluster(ctx, clusterName), crd, metav1.CreateOptions{})
return crdClusterClient.Cluster(clusterName).ApiextensionsV1().CustomResourceDefinitions().Create(ctx, crd, metav1.CreateOptions{})
},
getCRD: func(clusterName logicalcluster.Name, name string) (*apiextensionsv1.CustomResourceDefinition, error) {
return crdInformer.Lister().Get(client.ToClusterAwareKey(clusterName, name))
return crdInformer.Lister().Cluster(clusterName).Get(name)
},
crdIndexer: crdInformer.Informer().GetIndexer(),
deletedCRDTracker: newLockedStringSet(),
Expand Down Expand Up @@ -226,7 +226,7 @@ type CommitFunc = func(context.Context, *Resource, *Resource) error
type controller struct {
queue workqueue.RateLimitingInterface

crdClusterClient apiextensionsclient.Interface
crdClusterClient kcpapiextensionsclientset.ClusterInterface
kcpClusterClient kcpclient.Interface
dynamicClusterClient kcpdynamic.ClusterInterface
ddsif *informer.DynamicDiscoverySharedInformerFactory
Expand Down
14 changes: 7 additions & 7 deletions pkg/reconciler/apis/apiresource/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ import (
"time"

kcpcache "github.com/kcp-dev/apimachinery/pkg/cache"
kcpapiextensionsclientset "github.com/kcp-dev/client-go/apiextensions/clients/clientset/versioned"
kcpapiextensionsv1informers "github.com/kcp-dev/client-go/apiextensions/clients/informers/apiextensions/v1"
kcpapiextensionsv1listers "github.com/kcp-dev/client-go/apiextensions/clients/listers/apiextensions/v1"
"github.com/kcp-dev/logicalcluster/v2"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apiextensionsinformers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1"
apiextensionslisters "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1"
"k8s.io/apimachinery/pkg/api/equality"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/runtime"
Expand All @@ -51,12 +51,12 @@ func GetClusterNameAndGVRIndexKey(clusterName logicalcluster.Name, gvr metav1.Gr
}

func NewController(
crdClusterClient apiextensionsclient.Interface,
crdClusterClient kcpapiextensionsclientset.ClusterInterface,
kcpClusterClient kcpclient.Interface,
autoPublishNegotiatedAPIResource bool,
negotiatedAPIResourceInformer apiresourceinformer.NegotiatedAPIResourceInformer,
apiResourceImportInformer apiresourceinformer.APIResourceImportInformer,
crdInformer apiextensionsinformers.CustomResourceDefinitionInformer,
crdInformer kcpapiextensionsv1informers.CustomResourceDefinitionClusterInformer,
) (*Controller, error) {
queue := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "kcp-apiresource")

Expand Down Expand Up @@ -130,7 +130,7 @@ func NewController(
type Controller struct {
queue workqueue.RateLimitingInterface

crdClusterClient apiextensionsclient.Interface
crdClusterClient kcpapiextensionsclientset.ClusterInterface
kcpClusterClient kcpclient.Interface
negotiatedApiResourceIndexer cache.Indexer
negotiatedApiResourceLister apiresourcelisters.NegotiatedAPIResourceLister
Expand All @@ -139,7 +139,7 @@ type Controller struct {
apiResourceImportLister apiresourcelisters.APIResourceImportLister

crdIndexer cache.Indexer
crdLister apiextensionslisters.CustomResourceDefinitionLister
crdLister kcpapiextensionsv1listers.CustomResourceDefinitionClusterLister

AutoPublishNegotiatedAPIResource bool
}
Expand Down
Loading

0 comments on commit 2459721

Please sign in to comment.