Commit e3eaba37 authored by Erik Wilson's avatar Erik Wilson Committed by Brad Davidson

Add network policy controller CacheSyncOrTimeout

parent ec015c9b
...@@ -1683,6 +1683,10 @@ func NewNetworkPolicyController( ...@@ -1683,6 +1683,10 @@ func NewNetworkPolicyController(
npInformer := informerFactory.Networking().V1().NetworkPolicies().Informer() npInformer := informerFactory.Networking().V1().NetworkPolicies().Informer()
informerFactory.Start(stopCh) informerFactory.Start(stopCh)
if err := CacheSyncOrTimeout(informerFactory, stopCh, 1*time.Minute); err != nil {
return nil, errors.New("Failed to synchronize cache: " + err.Error())
}
// if config.MetricsEnabled { // if config.MetricsEnabled {
// //Register the metrics for this controller // //Register the metrics for this controller
// prometheus.MustRegister(metrics.ControllerIPtablesSyncTime) // prometheus.MustRegister(metrics.ControllerIPtablesSyncTime)
......
...@@ -12,8 +12,10 @@ import ( ...@@ -12,8 +12,10 @@ import (
"net" "net"
"os/exec" "os/exec"
"strings" "strings"
"time"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
"k8s.io/client-go/informers"
) )
var ( var (
...@@ -537,3 +539,19 @@ func GetNodeIP(node *apiv1.Node) (net.IP, error) { ...@@ -537,3 +539,19 @@ func GetNodeIP(node *apiv1.Node) (net.IP, error) {
} }
return nil, errors.New("host IP unknown") return nil, errors.New("host IP unknown")
} }
// CacheSync performs cache synchronization under timeout limit
func CacheSyncOrTimeout(informerFactory informers.SharedInformerFactory, stopCh <-chan struct{}, cacheSyncTimeout time.Duration) error {
syncOverCh := make(chan struct{})
go func() {
informerFactory.WaitForCacheSync(stopCh)
close(syncOverCh)
}()
select {
case <-time.After(cacheSyncTimeout):
return errors.New(cacheSyncTimeout.String() + " timeout")
case <-syncOverCh:
return nil
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment