@@ -16,13 +16,15 @@ limitations under the License.
16
16
package nfdmaster
17
17
18
18
import (
19
+ "fmt"
19
20
"time"
20
21
21
22
corev1 "k8s.io/api/core/v1"
22
23
"k8s.io/apimachinery/pkg/labels"
23
24
"k8s.io/client-go/informers"
24
25
k8sclient "k8s.io/client-go/kubernetes"
25
26
v1lister "k8s.io/client-go/listers/core/v1"
27
+ "k8s.io/klog/v2"
26
28
)
27
29
28
30
// NamespaceLister lists kubernetes namespaces.
@@ -32,19 +34,27 @@ type NamespaceLister struct {
32
34
stopChan chan struct {}
33
35
}
34
36
35
- func newNamespaceLister (k8sClient k8sclient.Interface , labelsSelector labels.Selector ) * NamespaceLister {
37
+ func newNamespaceLister (k8sClient k8sclient.Interface , labelsSelector labels.Selector ) ( * NamespaceLister , error ) {
36
38
factory := informers .NewSharedInformerFactory (k8sClient , time .Hour )
37
39
namespaceLister := factory .Core ().V1 ().Namespaces ().Lister ()
38
40
39
41
stopChan := make (chan struct {})
40
42
factory .Start (stopChan ) // runs in background
41
- factory .WaitForCacheSync (stopChan )
43
+
44
+ start := time .Now ()
45
+ ret := factory .WaitForCacheSync (stopChan )
46
+ for res , ok := range ret {
47
+ if ! ok {
48
+ return & NamespaceLister {}, fmt .Errorf ("namespace informer cache failed to sync (%s)" , res )
49
+ }
50
+ }
51
+ klog .InfoS ("namespace informer cache synced" , "duration" , time .Since (start ))
42
52
43
53
return & NamespaceLister {
44
54
namespaceLister : namespaceLister ,
45
55
labelsSelector : labelsSelector ,
46
56
stopChan : stopChan ,
47
- }
57
+ }, nil
48
58
}
49
59
50
60
// list returns all kubernetes namespaces.
0 commit comments