4
4
"errors"
5
5
"fmt"
6
6
"log"
7
+ "regexp"
7
8
"strconv"
8
9
9
10
appsv1 "k8s.io/api/apps/v1"
@@ -26,6 +27,8 @@ type DatabaseStatefulSetBuilder struct {
26
27
Storage * v1alpha1.Storage
27
28
}
28
29
30
+ var annotationDataCenterPattern = regexp .MustCompile ("^[a-zA-Z]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$" )
31
+
29
32
func (b * DatabaseStatefulSetBuilder ) Build (obj client.Object ) error {
30
33
sts , ok := obj .(* appsv1.StatefulSet )
31
34
if ! ok {
@@ -49,6 +52,12 @@ func (b *DatabaseStatefulSetBuilder) Build(obj client.Object) error {
49
52
Template : b .buildPodTemplateSpec (),
50
53
}
51
54
55
+ if value , ok := b .ObjectMeta .Annotations [v1alpha1 .AnnotationUpdateStrategyOnDelete ]; ok && value == v1alpha1 .AnnotationValueTrue {
56
+ sts .Spec .UpdateStrategy = appsv1.StatefulSetUpdateStrategy {
57
+ Type : "OnDelete" ,
58
+ }
59
+ }
60
+
52
61
return nil
53
62
}
54
63
@@ -342,13 +351,7 @@ func (b *DatabaseStatefulSetBuilder) buildContainer() corev1.Container {
342
351
Command : command ,
343
352
Args : args ,
344
353
Env : b .buildEnv (),
345
- LivenessProbe : & corev1.Probe {
346
- ProbeHandler : corev1.ProbeHandler {
347
- TCPSocket : & corev1.TCPSocketAction {
348
- Port : intstr .FromInt (v1alpha1 .GRPCPort ),
349
- },
350
- },
351
- },
354
+
352
355
VolumeMounts : b .buildVolumeMounts (),
353
356
SecurityContext : & corev1.SecurityContext {
354
357
Privileged : ptr .Bool (false ),
@@ -358,6 +361,16 @@ func (b *DatabaseStatefulSetBuilder) buildContainer() corev1.Container {
358
361
},
359
362
}
360
363
364
+ if value , ok := b .ObjectMeta .Annotations [v1alpha1 .AnnotationDisableLivenessProbe ]; ! ok || value != v1alpha1 .AnnotationValueTrue {
365
+ container .LivenessProbe = & corev1.Probe {
366
+ ProbeHandler : corev1.ProbeHandler {
367
+ TCPSocket : & corev1.TCPSocketAction {
368
+ Port : intstr .FromInt (v1alpha1 .GRPCPort ),
369
+ },
370
+ },
371
+ }
372
+ }
373
+
361
374
ports := []corev1.ContainerPort {{
362
375
Name : "grpc" , ContainerPort : v1alpha1 .GRPCPort ,
363
376
}, {
@@ -553,6 +566,15 @@ func (b *DatabaseStatefulSetBuilder) buildContainerArgs() ([]string, []string) {
553
566
strconv .Itoa (v1alpha1 .GRPCPort ),
554
567
)
555
568
569
+ if value , ok := b .ObjectMeta .Annotations [v1alpha1 .AnnotationDataCenter ]; ok {
570
+ if annotationDataCenterPattern .MatchString (value ) {
571
+ args = append (args ,
572
+ "--data-center" ,
573
+ value ,
574
+ )
575
+ }
576
+ }
577
+
556
578
return command , args
557
579
}
558
580
0 commit comments