/
default.go
95 lines (78 loc) · 2.35 KB
/
default.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package v1alpha1
import (
"github.com/gogo/protobuf/proto"
kapiv1 "k8s.io/api/core/v1"
)
var (
defaultNumberOfPrimaries = proto.Int32(3)
defaultReplicationFactor = proto.Int32(1)
defaultKeyBatchSize = proto.Int32(10000)
defaultSlotBatchSize = proto.Int32(16)
defaultIdleTimeoutMillis = proto.Int32(30000)
)
// IsRedisClusterDefaulted check if the RedisCluster is already defaulted
func IsRedisClusterDefaulted(rc *RedisCluster) bool {
if rc.Spec.NumberOfPrimaries == nil {
return false
}
if rc.Spec.ReplicationFactor == nil {
return false
}
if rc.Spec.RollingUpdate == nil {
return false
}
if rc.Spec.Scaling == nil {
return false
}
return true
}
// DefaultRedisCluster defaults RedisCluster
func DefaultRedisCluster(baseRedisCluster *RedisCluster) *RedisCluster {
rc := baseRedisCluster.DeepCopy()
if rc.Spec.NumberOfPrimaries == nil {
rc.Spec.NumberOfPrimaries = defaultNumberOfPrimaries
}
if rc.Spec.ReplicationFactor == nil {
rc.Spec.ReplicationFactor = defaultReplicationFactor
}
if rc.Spec.PodTemplate == nil {
rc.Spec.PodTemplate = &kapiv1.PodTemplateSpec{}
}
rc.Status.Cluster.NumberOfPrimaries = 0
rc.Status.Cluster.MinReplicationFactor = 0
rc.Status.Cluster.MaxReplicationFactor = 0
rc.Status.Cluster.NumberOfPods = 0
rc.Status.Cluster.NumberOfPodsReady = 0
rc.Status.Cluster.NumberOfRedisNodesRunning = 0
if rc.Spec.ZoneAwareReplication == nil {
rc.Spec.ZoneAwareReplication = proto.Bool(true)
}
if rc.Spec.RollingUpdate == nil {
rc.Spec.RollingUpdate = &RollingUpdate{}
}
if rc.Spec.RollingUpdate.KeyMigration == nil {
rc.Spec.RollingUpdate.KeyMigration = proto.Bool(true)
}
if rc.Spec.RollingUpdate.KeyBatchSize == nil {
rc.Spec.RollingUpdate.KeyBatchSize = defaultKeyBatchSize
}
if rc.Spec.RollingUpdate.SlotBatchSize == nil {
rc.Spec.RollingUpdate.SlotBatchSize = defaultSlotBatchSize
}
if rc.Spec.RollingUpdate.IdleTimeoutMillis == nil {
rc.Spec.RollingUpdate.IdleTimeoutMillis = defaultIdleTimeoutMillis
}
if rc.Spec.Scaling == nil {
rc.Spec.Scaling = &Migration{}
}
if rc.Spec.Scaling.KeyBatchSize == nil {
rc.Spec.Scaling.KeyBatchSize = defaultKeyBatchSize
}
if rc.Spec.Scaling.SlotBatchSize == nil {
rc.Spec.Scaling.SlotBatchSize = defaultSlotBatchSize
}
if rc.Spec.Scaling.IdleTimeoutMillis == nil {
rc.Spec.Scaling.IdleTimeoutMillis = defaultIdleTimeoutMillis
}
return rc
}