enable multicluster sync for groups

Signed-off-by: Roland.Ma <rolandma@yunify.com>
This commit is contained in:
Roland.Ma
2020-12-03 07:19:31 +00:00
parent c5de21af4a
commit 5248e622f2
25 changed files with 2158 additions and 54 deletions

View File

@@ -149,6 +149,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
return &genericInformer{resource: resource.GroupResource(), informer: f.Types().V1beta1().FederatedConfigMaps().Informer()}, nil
case v1beta1.SchemeGroupVersion.WithResource("federateddeployments"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Types().V1beta1().FederatedDeployments().Informer()}, nil
case v1beta1.SchemeGroupVersion.WithResource("federatedgroups"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Types().V1beta1().FederatedGroups().Informer()}, nil
case v1beta1.SchemeGroupVersion.WithResource("federatedgroupbindings"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Types().V1beta1().FederatedGroupBindings().Informer()}, nil
case v1beta1.SchemeGroupVersion.WithResource("federatedingresses"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Types().V1beta1().FederatedIngresses().Informer()}, nil
case v1beta1.SchemeGroupVersion.WithResource("federatedjobs"):

View File

@@ -0,0 +1,88 @@
/*
Copyright 2020 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by informer-gen. DO NOT EDIT.
package v1beta1
import (
time "time"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
typesv1beta1 "kubesphere.io/kubesphere/pkg/apis/types/v1beta1"
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
v1beta1 "kubesphere.io/kubesphere/pkg/client/listers/types/v1beta1"
)
// FederatedGroupInformer provides access to a shared informer and lister for
// FederatedGroups.
type FederatedGroupInformer interface {
Informer() cache.SharedIndexInformer
Lister() v1beta1.FederatedGroupLister
}
type federatedGroupInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewFederatedGroupInformer constructs a new informer for FederatedGroup type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFederatedGroupInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewFilteredFederatedGroupInformer(client, resyncPeriod, indexers, nil)
}
// NewFilteredFederatedGroupInformer constructs a new informer for FederatedGroup type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFilteredFederatedGroupInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
tweakListOptions(&options)
}
return client.TypesV1beta1().FederatedGroups().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
if tweakListOptions != nil {
tweakListOptions(&options)
}
return client.TypesV1beta1().FederatedGroups().Watch(options)
},
},
&typesv1beta1.FederatedGroup{},
resyncPeriod,
indexers,
)
}
func (f *federatedGroupInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewFilteredFederatedGroupInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *federatedGroupInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&typesv1beta1.FederatedGroup{}, f.defaultInformer)
}
func (f *federatedGroupInformer) Lister() v1beta1.FederatedGroupLister {
return v1beta1.NewFederatedGroupLister(f.Informer().GetIndexer())
}

View File

@@ -0,0 +1,88 @@
/*
Copyright 2020 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by informer-gen. DO NOT EDIT.
package v1beta1
import (
time "time"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
typesv1beta1 "kubesphere.io/kubesphere/pkg/apis/types/v1beta1"
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
v1beta1 "kubesphere.io/kubesphere/pkg/client/listers/types/v1beta1"
)
// FederatedGroupBindingInformer provides access to a shared informer and lister for
// FederatedGroupBindings.
type FederatedGroupBindingInformer interface {
Informer() cache.SharedIndexInformer
Lister() v1beta1.FederatedGroupBindingLister
}
type federatedGroupBindingInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewFederatedGroupBindingInformer constructs a new informer for FederatedGroupBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFederatedGroupBindingInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewFilteredFederatedGroupBindingInformer(client, resyncPeriod, indexers, nil)
}
// NewFilteredFederatedGroupBindingInformer constructs a new informer for FederatedGroupBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFilteredFederatedGroupBindingInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
tweakListOptions(&options)
}
return client.TypesV1beta1().FederatedGroupBindings().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
if tweakListOptions != nil {
tweakListOptions(&options)
}
return client.TypesV1beta1().FederatedGroupBindings().Watch(options)
},
},
&typesv1beta1.FederatedGroupBinding{},
resyncPeriod,
indexers,
)
}
func (f *federatedGroupBindingInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewFilteredFederatedGroupBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *federatedGroupBindingInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&typesv1beta1.FederatedGroupBinding{}, f.defaultInformer)
}
func (f *federatedGroupBindingInformer) Lister() v1beta1.FederatedGroupBindingLister {
return v1beta1.NewFederatedGroupBindingLister(f.Informer().GetIndexer())
}

View File

@@ -34,6 +34,10 @@ type Interface interface {
FederatedConfigMaps() FederatedConfigMapInformer
// FederatedDeployments returns a FederatedDeploymentInformer.
FederatedDeployments() FederatedDeploymentInformer
// FederatedGroups returns a FederatedGroupInformer.
FederatedGroups() FederatedGroupInformer
// FederatedGroupBindings returns a FederatedGroupBindingInformer.
FederatedGroupBindings() FederatedGroupBindingInformer
// FederatedIngresses returns a FederatedIngressInformer.
FederatedIngresses() FederatedIngressInformer
// FederatedJobs returns a FederatedJobInformer.
@@ -94,6 +98,16 @@ func (v *version) FederatedDeployments() FederatedDeploymentInformer {
return &federatedDeploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// FederatedGroups returns a FederatedGroupInformer.
func (v *version) FederatedGroups() FederatedGroupInformer {
return &federatedGroupInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// FederatedGroupBindings returns a FederatedGroupBindingInformer.
func (v *version) FederatedGroupBindings() FederatedGroupBindingInformer {
return &federatedGroupBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// FederatedIngresses returns a FederatedIngressInformer.
func (v *version) FederatedIngresses() FederatedIngressInformer {
return &federatedIngressInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}