Skip to content

Commit 0613300

Browse files
committed
feat: add persistentVolumeClaimRetentionPolicy
1 parent 95f954d commit 0613300

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

pkg/kube/statefulset/merge_statefulset_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,17 @@ func TestGetLabelSelectorRequirementByKey(t *testing.T) {
6060
}
6161

6262
func TestMergeSpec(t *testing.T) {
63+
var overridePersistentVolumeClaimRetentionPolicy appsv1.StatefulSetPersistentVolumeClaimRetentionPolicy
64+
overridePersistentVolumeClaimRetentionPolicy.WhenDeleted = "Deleted"
65+
overridePersistentVolumeClaimRetentionPolicy.WhenScaled = "Deleted"
6366

6467
original := New(
6568
WithName("original"),
6669
WithServiceName("original-svc-name"),
6770
WithReplicas(3),
6871
WithRevisionHistoryLimit(10),
6972
WithPodManagementPolicyType(appsv1.OrderedReadyPodManagement),
73+
WithPersistentVolumeClaimRetentionPolicy(appsv1.StatefulSetPersistentVolumeClaimRetentionPolicy{}),
7074
WithSelector(&metav1.LabelSelector{
7175
MatchLabels: map[string]string{
7276
"a": "1",
@@ -95,6 +99,7 @@ func TestMergeSpec(t *testing.T) {
9599
WithReplicas(5),
96100
WithRevisionHistoryLimit(15),
97101
WithPodManagementPolicyType(appsv1.ParallelPodManagement),
102+
WithPersistentVolumeClaimRetentionPolicy(overridePersistentVolumeClaimRetentionPolicy),
98103
WithSelector(&metav1.LabelSelector{
99104
MatchLabels: map[string]string{
100105
"a": "10",
@@ -124,6 +129,7 @@ func TestMergeSpec(t *testing.T) {
124129
assert.Equal(t, int32(5), *mergedSpec.Replicas)
125130
assert.Equal(t, int32(15), *mergedSpec.RevisionHistoryLimit)
126131
assert.Equal(t, appsv1.ParallelPodManagement, mergedSpec.PodManagementPolicy)
132+
assert.Equal(t, overridePersistentVolumeClaimRetentionPolicy, *mergedSpec.PersistentVolumeClaimRetentionPolicy)
127133
})
128134

129135
matchLabels := mergedSpec.Selector.MatchLabels

pkg/kube/statefulset/statefulset.go

+6
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,12 @@ func WithObjectMetadata(labels map[string]string, annotations map[string]string)
315315
}
316316
}
317317

318+
func WithPersistentVolumeClaimRetentionPolicy(persistentVolumeClaimRetentionPolicy appsv1.StatefulSetPersistentVolumeClaimRetentionPolicy) Modification {
319+
return func(set *appsv1.StatefulSet) {
320+
set.Spec.PersistentVolumeClaimRetentionPolicy = &persistentVolumeClaimRetentionPolicy
321+
}
322+
}
323+
318324
func findVolumeClaimIndexByName(name string, pvcs []corev1.PersistentVolumeClaim) int {
319325
for idx, pvc := range pvcs {
320326
if pvc.Name == name {

pkg/util/merge/merge_statefulset.go

+7
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ func StatefulSetSpecs(defaultSpec, overrideSpec appsv1.StatefulSetSpec) appsv1.S
5353
mergedSpec.ServiceName = overrideSpec.ServiceName
5454
}
5555

56+
if overrideSpec.PersistentVolumeClaimRetentionPolicy.WhenDeleted != "" {
57+
mergedSpec.PersistentVolumeClaimRetentionPolicy.WhenDeleted = overrideSpec.PersistentVolumeClaimRetentionPolicy.WhenDeleted
58+
}
59+
60+
if overrideSpec.PersistentVolumeClaimRetentionPolicy.WhenScaled != "" {
61+
mergedSpec.PersistentVolumeClaimRetentionPolicy.WhenScaled = overrideSpec.PersistentVolumeClaimRetentionPolicy.WhenScaled
62+
}
5663
mergedSpec.Template = PodTemplateSpecs(defaultSpec.Template, overrideSpec.Template)
5764
mergedSpec.VolumeClaimTemplates = VolumeClaimTemplates(defaultSpec.VolumeClaimTemplates, overrideSpec.VolumeClaimTemplates)
5865
return mergedSpec

0 commit comments

Comments
 (0)