Files
kt-connect/pkg/apiserver/cluster/namespaces.go
T
2019-10-08 18:08:22 +08:00

34 lines
787 B
Go

package cluster
import (
"fmt"
"time"
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/informers"
v1 "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
)
// Namespaces informor
func (w *Watcher) Namespaces() (lister v1.NamespaceLister, err error) {
resyncPeriod := 30 * time.Minute
stopCh := wait.NeverStop
factory := informers.NewSharedInformerFactory(w.Client, resyncPeriod)
informerFactory := factory.Core().V1().Namespaces()
informer := informerFactory.Informer()
defer runtime.HandleCrash()
factory.Start(stopCh)
if !cache.WaitForCacheSync(stopCh, informer.HasSynced) {
runtime.HandleError(fmt.Errorf("Timed out waiting for caches to sync"))
return
}
lister = informerFactory.Lister()
return
}