Skip to content

Commit 4645f0c

Browse files
authored
Allow to enable the PVC (#76)
1 parent 737c29d commit 4645f0c

File tree

5 files changed

+52
-0
lines changed

5 files changed

+52
-0
lines changed

pkg/client/k8s/pvc.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ func (c *Client) DeletePVC(pvc *corev1.PersistentVolumeClaim) error {
2828
return nil
2929
}
3030

31+
func (c *Client) ExpandPVC(pvc *corev1.PersistentVolumeClaim) error {
32+
if err := c.client.Update(ctx, pvc); err != nil {
33+
return err
34+
}
35+
c.logger.V(1).Info("expand pvc size successfully", "pvc", pvc.Name)
36+
return nil
37+
}
38+
3139
func (c *Client) ListPVC(namespace string, labels map[string]string) (*corev1.PersistentVolumeClaimList, error) {
3240
var pvcList corev1.PersistentVolumeClaimList
3341
if err := c.client.List(ctx, &pvcList, k8sApiClient.InNamespace(namespace), k8sApiClient.MatchingLabels(labels)); err != nil {

pkg/controllers/cluster/handler.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ func (h *KVRocksClusterHandler) Handle() (error, bool) {
8585
if err != nil || h.requeue {
8686
return err, false
8787
}
88+
err = h.expandPersistentVolumeClaim()
89+
if err != nil || h.requeue {
90+
return err, false
91+
}
8892
return nil, true
8993
}
9094

pkg/controllers/cluster/kubernetes.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cluster
22

33
import (
44
"fmt"
5+
v1 "k8s.io/api/core/v1"
56
"sort"
67
"strconv"
78
"strings"
@@ -317,3 +318,20 @@ func (h *KVRocksClusterHandler) cleanPersistentVolumeClaim() error {
317318
}
318319
return nil
319320
}
321+
322+
func (h *KVRocksClusterHandler) expandPersistentVolumeClaim() error {
323+
pvcList, err := h.k8s.ListStatefulSetPVC(h.key)
324+
if err != nil {
325+
return err
326+
}
327+
for _, pvc := range pvcList.Items {
328+
pvcSize := pvc.Spec.Resources.Requests[v1.ResourceStorage]
329+
if pvcSize.Cmp(h.instance.Spec.Storage.Size) < 0 {
330+
pvc.Spec.Resources.Requests[v1.ResourceStorage] = h.instance.Spec.Storage.Size
331+
if err := h.k8s.ExpandPVC(&pvc); err != nil {
332+
return err
333+
}
334+
}
335+
}
336+
return nil
337+
}

pkg/controllers/standard/handler.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ func (h *KVRocksStandardHandler) Handle() (error, bool) {
5656
if err != nil || h.requeue {
5757
return err, false
5858
}
59+
err = h.expandPersistentVolumeClaim()
60+
if err != nil || h.requeue {
61+
return err, false
62+
}
5963
return nil, true
6064
}
6165

pkg/controllers/standard/kubernetes.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package standard
22

33
import (
4+
v1 "k8s.io/api/core/v1"
45
"sort"
56

67
"k8s.io/apimachinery/pkg/api/errors"
@@ -141,3 +142,20 @@ func (h *KVRocksStandardHandler) cleanPersistentVolumeClaim() error {
141142
}
142143
return nil
143144
}
145+
146+
func (h *KVRocksStandardHandler) expandPersistentVolumeClaim() error {
147+
pvcList, err := h.k8s.ListStatefulSetPVC(h.key)
148+
if err != nil {
149+
return err
150+
}
151+
for _, pvc := range pvcList.Items {
152+
pvcSize := pvc.Spec.Resources.Requests[v1.ResourceStorage]
153+
if pvcSize.Cmp(h.instance.Spec.Storage.Size) < 0 {
154+
pvc.Spec.Resources.Requests[v1.ResourceStorage] = h.instance.Spec.Storage.Size
155+
if err := h.k8s.ExpandPVC(&pvc); err != nil {
156+
return err
157+
}
158+
}
159+
}
160+
return nil
161+
}

0 commit comments

Comments
 (0)