...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package jitter
16
17 import (
18 "time"
19
20 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/reconciliationinterval"
21 dclmetadata "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/dcl/metadata"
22 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/k8s"
23 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/servicemapping/servicemappingloader"
24
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 "k8s.io/apimachinery/pkg/runtime/schema"
27 "k8s.io/apimachinery/pkg/util/wait"
28 )
29
30
31
32
33 func GenerateWatchJitteredTimeoutPeriod() time.Duration {
34 return wait.Jitter(k8s.MeanReconcileReenqueuePeriod/2, k8s.JitterFactor)
35 }
36
37
38
39
40 func GenerateJitteredReenqueuePeriod(gvk schema.GroupVersionKind,
41 smLoader *servicemappingloader.ServiceMappingLoader,
42 serviceMetadataLoader dclmetadata.ServiceMetadataLoader, obj metav1.Object) (time.Duration, error) {
43 if val, ok := k8s.GetAnnotation(k8s.ReconcileIntervalInSecondsAnnotation, obj); ok {
44 reconcileInterval, err := reconciliationinterval.MeanReconcileReenqueuePeriodFromAnnotation(val)
45 if err != nil {
46 return 0, err
47 }
48 return wait.Jitter(reconcileInterval/2, k8s.JitterFactor), nil
49 }
50 return wait.Jitter(reconciliationinterval.MeanReconcileReenqueuePeriod(gvk, smLoader, serviceMetadataLoader)/2, k8s.JitterFactor), nil
51 }
52
View as plain text