Skip to content

Commit 994fca7

Browse files
committed
Update storage capacity in StatefulSetBuilder
1 parent b784c3f commit 994fca7

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

internal/resource/statefulset.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
const (
3434
initContainerCPU string = "100m"
3535
initContainerMemory string = "500Mi"
36+
defaultPVCName string = "persistence"
3637
DeletionMarker string = "skipPreStopChecks"
3738
)
3839

@@ -121,6 +122,9 @@ func (builder *StatefulSetBuilder) Update(object client.Object) error {
121122
//Labels
122123
sts.Labels = metadata.GetLabels(builder.Instance.Name, builder.Instance.Labels)
123124

125+
// PVC storage capacity
126+
updatePersistenceStorageCapacity(&sts.Spec.VolumeClaimTemplates, builder.Instance.Spec.Persistence.Storage)
127+
124128
// pod template
125129
sts.Spec.Template = builder.podTemplateSpec(sts.Spec.Template.Annotations)
126130

@@ -141,6 +145,14 @@ func (builder *StatefulSetBuilder) Update(object client.Object) error {
141145
return nil
142146
}
143147

148+
func updatePersistenceStorageCapacity(templates *[]corev1.PersistentVolumeClaim, capacity *k8sresource.Quantity) {
149+
for _, t := range *templates {
150+
if t.Name == defaultPVCName {
151+
t.Spec.Resources.Requests[corev1.ResourceStorage] = *capacity
152+
}
153+
}
154+
}
155+
144156
func applyStsOverride(sts *appsv1.StatefulSet, stsOverride *rabbitmqv1beta1.StatefulSet) error {
145157
if stsOverride.EmbeddedLabelsAnnotations != nil {
146158
copyLabelsAnnotations(&sts.ObjectMeta, *stsOverride.EmbeddedLabelsAnnotations)
@@ -178,7 +190,7 @@ func applyStsOverride(sts *appsv1.StatefulSet, stsOverride *rabbitmqv1beta1.Stat
178190
func persistentVolumeClaim(instance *rabbitmqv1beta1.RabbitmqCluster, scheme *runtime.Scheme) ([]corev1.PersistentVolumeClaim, error) {
179191
pvc := corev1.PersistentVolumeClaim{
180192
ObjectMeta: metav1.ObjectMeta{
181-
Name: "persistence",
193+
Name: defaultPVCName,
182194
Namespace: instance.GetNamespace(),
183195
Labels: metadata.Label(instance.Name),
184196
Annotations: metadata.ReconcileAndFilterAnnotations(map[string]string{}, instance.Annotations),
@@ -275,7 +287,7 @@ func sortVolumeMounts(mounts []corev1.VolumeMount) {
275287
mounts[0], mounts[i] = mounts[i], mounts[0]
276288
continue
277289
}
278-
if m.Name == "persistence" {
290+
if m.Name == defaultPVCName {
279291
mounts[1], mounts[i] = mounts[i], mounts[1]
280292
}
281293
}

internal/resource/statefulset_test.go

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ var _ = Describe("StatefulSet", func() {
428428
Expect(statefulSet.Spec.UpdateStrategy).To(Equal(updateStrategy))
429429
})
430430

431-
It("updates tolerations", func() {
431+
It("updates toleration", func() {
432432
newToleration := corev1.Toleration{
433433
Key: "update",
434434
Operator: "equals",
@@ -1283,7 +1283,7 @@ var _ = Describe("StatefulSet", func() {
12831283
Expect(statefulSet.Spec.Template.Spec.Containers[0].Lifecycle.PreStop.Exec.Command).To(Equal(expectedPreStopCommand))
12841284
})
12851285

1286-
It("checks mirror and querum queue status in preStop hook", func() {
1286+
It("checks mirror and quorum queue status in preStop hook", func() {
12871287
stsBuilder := builder.StatefulSet()
12881288
Expect(stsBuilder.Update(statefulSet)).To(Succeed())
12891289

@@ -1372,6 +1372,32 @@ var _ = Describe("StatefulSet", func() {
13721372
Expect(*statefulSet.Spec.Replicas).To(Equal(int32(3)))
13731373
})
13741374

1375+
It("updates the PersistentVolumeClaim storage capacity", func() {
1376+
defaultCapacity, _ := k8sresource.ParseQuantity("10Gi")
1377+
1378+
statefulSet.Spec.VolumeClaimTemplates = []corev1.PersistentVolumeClaim{
1379+
{
1380+
ObjectMeta: v1.ObjectMeta{
1381+
Name: "persistence",
1382+
Namespace: instance.Namespace,
1383+
},
1384+
Spec: corev1.PersistentVolumeClaimSpec{
1385+
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
1386+
Resources: corev1.ResourceRequirements{
1387+
Requests: map[corev1.ResourceName]k8sresource.Quantity{
1388+
corev1.ResourceStorage: defaultCapacity,
1389+
},
1390+
},
1391+
},
1392+
},
1393+
}
1394+
1395+
newCapacity, _ := k8sresource.ParseQuantity("21Gi")
1396+
stsBuilder.Instance.Spec.Persistence.Storage = &newCapacity
1397+
Expect(stsBuilder.Update(statefulSet)).To(Succeed())
1398+
Expect(statefulSet.Spec.VolumeClaimTemplates[0].Spec.Resources.Requests["storage"]).To(Equal(newCapacity))
1399+
})
1400+
13751401
When("stateful set override are provided", func() {
13761402
It("overrides statefulSet.ObjectMeta.Annotations", func() {
13771403
instance.Annotations = map[string]string{

0 commit comments

Comments
 (0)