@@ -15,7 +15,6 @@ import (
1515 "github.com/zalando/postgres-operator/pkg/util"
1616 "github.com/zalando/postgres-operator/pkg/util/constants"
1717 "github.com/zalando/postgres-operator/pkg/util/filesystems"
18- "github.com/zalando/postgres-operator/pkg/util/volumes"
1918)
2019
2120func (c * Cluster ) listPersistentVolumeClaims () ([]v1.PersistentVolumeClaim , error ) {
@@ -119,19 +118,26 @@ func (c *Cluster) listPersistentVolumes() ([]*v1.PersistentVolume, error) {
119118}
120119
121120// resizeVolumes resize persistent volumes compatible with the given resizer interface
122- func (c * Cluster ) resizeVolumes (newVolume acidv1.Volume , resizers []volumes.VolumeResizer ) error {
123- c .setProcessName ("resizing volumes" )
121+ func (c * Cluster ) resizeVolumes () error {
122+ if c .VolumeResizer == nil {
123+ return fmt .Errorf ("no volume resizer set for EBS volume handling" )
124+ }
125+
126+ c .setProcessName ("resizing EBS volumes" )
124127
128+ resizer := c .VolumeResizer
125129 var totalIncompatible int
126130
127- newQuantity , err := resource .ParseQuantity (newVolume .Size )
131+ newQuantity , err := resource .ParseQuantity (c . Spec . Volume .Size )
128132 if err != nil {
129133 return fmt .Errorf ("could not parse volume size: %v" , err )
130134 }
131- pvs , newSize , err := c .listVolumesWithManifestSize (newVolume )
135+
136+ pvs , newSize , err := c .listVolumesWithManifestSize (c .Spec .Volume )
132137 if err != nil {
133138 return fmt .Errorf ("could not list persistent volumes: %v" , err )
134139 }
140+
135141 for _ , pv := range pvs {
136142 volumeSize := quantityToGigabyte (pv .Spec .Capacity [v1 .ResourceStorage ])
137143 if volumeSize >= newSize {
@@ -141,43 +147,43 @@ func (c *Cluster) resizeVolumes(newVolume acidv1.Volume, resizers []volumes.Volu
141147 continue
142148 }
143149 compatible := false
144- for _ , resizer := range resizers {
145- if ! resizer .VolumeBelongsToProvider (pv ) {
146- continue
147- }
148- compatible = true
149- if ! resizer .IsConnectedToProvider () {
150- err := resizer .ConnectToProvider ()
151- if err != nil {
152- return fmt .Errorf ("could not connect to the volume provider: %v" , err )
153- }
154- defer func () {
155- if err := resizer .DisconnectFromProvider (); err != nil {
156- c .logger .Errorf ("%v" , err )
157- }
158- }()
159- }
160- awsVolumeID , err := resizer .GetProviderVolumeID (pv )
150+
151+ if ! resizer .VolumeBelongsToProvider (pv ) {
152+ continue
153+ }
154+ compatible = true
155+ if ! resizer .IsConnectedToProvider () {
156+ err := resizer .ConnectToProvider ()
161157 if err != nil {
162- return err
163- }
164- c .logger .Debugf ("updating persistent volume %q to %d" , pv .Name , newSize )
165- if err := resizer .ResizeVolume (awsVolumeID , newSize ); err != nil {
166- return fmt .Errorf ("could not resize EBS volume %q: %v" , awsVolumeID , err )
167- }
168- c .logger .Debugf ("resizing the filesystem on the volume %q" , pv .Name )
169- podName := getPodNameFromPersistentVolume (pv )
170- if err := c .resizePostgresFilesystem (podName , []filesystems.FilesystemResizer {& filesystems.Ext234Resize {}}); err != nil {
171- return fmt .Errorf ("could not resize the filesystem on pod %q: %v" , podName , err )
158+ return fmt .Errorf ("could not connect to the volume provider: %v" , err )
172159 }
173- c .logger .Debugf ("filesystem resize successful on volume %q" , pv .Name )
174- pv .Spec .Capacity [v1 .ResourceStorage ] = newQuantity
175- c .logger .Debugf ("updating persistent volume definition for volume %q" , pv .Name )
176- if _ , err := c .KubeClient .PersistentVolumes ().Update (context .TODO (), pv , metav1.UpdateOptions {}); err != nil {
177- return fmt .Errorf ("could not update persistent volume: %q" , err )
178- }
179- c .logger .Debugf ("successfully updated persistent volume %q" , pv .Name )
160+ defer func () {
161+ if err := resizer .DisconnectFromProvider (); err != nil {
162+ c .logger .Errorf ("%v" , err )
163+ }
164+ }()
180165 }
166+ awsVolumeID , err := resizer .GetProviderVolumeID (pv )
167+ if err != nil {
168+ return err
169+ }
170+ c .logger .Debugf ("updating persistent volume %q to %d" , pv .Name , newSize )
171+ if err := resizer .ResizeVolume (awsVolumeID , newSize ); err != nil {
172+ return fmt .Errorf ("could not resize EBS volume %q: %v" , awsVolumeID , err )
173+ }
174+ c .logger .Debugf ("resizing the filesystem on the volume %q" , pv .Name )
175+ podName := getPodNameFromPersistentVolume (pv )
176+ if err := c .resizePostgresFilesystem (podName , []filesystems.FilesystemResizer {& filesystems.Ext234Resize {}}); err != nil {
177+ return fmt .Errorf ("could not resize the filesystem on pod %q: %v" , podName , err )
178+ }
179+ c .logger .Debugf ("filesystem resize successful on volume %q" , pv .Name )
180+ pv .Spec .Capacity [v1 .ResourceStorage ] = newQuantity
181+ c .logger .Debugf ("updating persistent volume definition for volume %q" , pv .Name )
182+ if _ , err := c .KubeClient .PersistentVolumes ().Update (context .TODO (), pv , metav1.UpdateOptions {}); err != nil {
183+ return fmt .Errorf ("could not update persistent volume: %q" , err )
184+ }
185+ c .logger .Debugf ("successfully updated persistent volume %q" , pv .Name )
186+
181187 if ! compatible {
182188 c .logger .Warningf ("volume %q is incompatible with all available resizing providers, consider switching storage_resize_mode to pvc or off" , pv .Name )
183189 totalIncompatible ++
0 commit comments