Address review input.

This commit is contained in:
Jan Mußler 2021-01-22 17:07:20 +01:00
parent cccf36931f
commit d7f2e588f0
3 changed files with 21 additions and 19 deletions

View File

@ -237,7 +237,7 @@ kubectl logs acid-minimal-cluster-0
## Unit tests with Mocks and K8s Fake API ## Unit tests with Mocks and K8s Fake API
When ever possible you should rely on leveraging proper mocks and K8s fake client that allows full fledged testing of K8s objects in your unit tests. Whenever possible you should rely on leveraging proper mocks and K8s fake client that allows full fledged testing of K8s objects in your unit tests.
To enable mocks, a code annotation is needed: To enable mocks, a code annotation is needed:
[Mock code gen annotation](https://github.com/zalando/postgres-operator/blob/master/pkg/util/volumes/volumes.go#L3) [Mock code gen annotation](https://github.com/zalando/postgres-operator/blob/master/pkg/util/volumes/volumes.go#L3)

View File

@ -373,12 +373,13 @@ configuration they are grouped under the `kubernetes` key.
possible value is `parallel`. possible value is `parallel`.
* **storage_resize_mode** * **storage_resize_mode**
defines how operator handels the difference between requested volume size and defines how operator handles the difference between the requested volume size and
actual size. Available options are: ebs - tries to resize EBS volume, pvc - the actual size. Available options are:
changes PVC definition, off - disables resize of the volumes. And "mixed" mode. 1. `ebs` : operator resizes EBS volumes directly and executes `resizefs` within a pod
Where mixed mode is needed to support AWS EBS gp3 volumes, to adjust IOPS and Throughput. 2. `pvc` : operator only changes PVC definition
It relies on pvc resize to deal with file system extension. Default is "pvc". 3. `off` : disables resize of the volumes.
When using OpenShift please use one of the other available options. 4. `mixed` :operator uses AWS API to adjust size, throughput, and IOPS, and calls pvc change for file system resize
Default is "pvc".
## Kubernetes resource requests ## Kubernetes resource requests

View File

@ -23,7 +23,7 @@ func (c *Cluster) syncVolumes() error {
c.logger.Debugf("syncing volumes using %q storage resize mode", c.OpConfig.StorageResizeMode) c.logger.Debugf("syncing volumes using %q storage resize mode", c.OpConfig.StorageResizeMode)
var err error var err error
// check quantity string once, and not bother with it anymore everywhwere // check quantity string once, and do not bother with it anymore anywhere else
_, err = resource.ParseQuantity(c.Spec.Volume.Size) _, err = resource.ParseQuantity(c.Spec.Volume.Size)
if err != nil { if err != nil {
return fmt.Errorf("could not parse volume size from the manifest: %v", err) return fmt.Errorf("could not parse volume size from the manifest: %v", err)
@ -157,18 +157,18 @@ func (c *Cluster) populateVolumeMetaData() error {
volumeIds = append(volumeIds, volumeID) volumeIds = append(volumeIds, volumeID)
} }
awsVolumes, err := c.VolumeResizer.DescribeVolumes(volumeIds) currentVolumes, err := c.VolumeResizer.DescribeVolumes(volumeIds)
if nil != err { if nil != err {
return err return err
} }
if len(awsVolumes) != len(c.EBSVolumes) { if len(currentVolumes) != len(c.EBSVolumes) {
c.logger.Debugf("number of ebs volumes (%d) differs from known volumes (%d)", len(awsVolumes), len(c.EBSVolumes)) c.logger.Debugf("number of ebs volumes (%d) discovered differs from already known volumes (%d)", len(currentVolumes), len(c.EBSVolumes))
} }
// reset map, operator is not responsible for dangling ebs volumes // reset map, operator is not responsible for dangling ebs volumes
c.EBSVolumes = make(map[string]volumes.VolumeProperties) c.EBSVolumes = make(map[string]volumes.VolumeProperties)
for _, volume := range awsVolumes { for _, volume := range currentVolumes {
c.EBSVolumes[volume.VolumeID] = volume c.EBSVolumes[volume.VolumeID] = volume
} }
@ -179,14 +179,16 @@ func (c *Cluster) populateVolumeMetaData() error {
func (c *Cluster) syncVolumeClaims() error { func (c *Cluster) syncVolumeClaims() error {
c.setProcessName("syncing volume claims") c.setProcessName("syncing volume claims")
act, err := c.volumeClaimsNeedResizing(c.Spec.Volume) needsResizing, err := c.volumeClaimsNeedResizing(c.Spec.Volume)
if err != nil { if err != nil {
return fmt.Errorf("could not compare size of the volume claims: %v", err) return fmt.Errorf("could not compare size of the volume claims: %v", err)
} }
if !act {
if !needsResizing {
c.logger.Infof("volume claims do not require changes") c.logger.Infof("volume claims do not require changes")
return nil return nil
} }
if err := c.resizeVolumeClaims(c.Spec.Volume); err != nil { if err := c.resizeVolumeClaims(c.Spec.Volume); err != nil {
return fmt.Errorf("could not sync volume claims: %v", err) return fmt.Errorf("could not sync volume claims: %v", err)
} }
@ -325,16 +327,15 @@ func (c *Cluster) resizeVolumes() error {
c.setProcessName("resizing EBS volumes") c.setProcessName("resizing EBS volumes")
newQuantity, _ := resource.ParseQuantity(c.Spec.Volume.Size)
newSize := quantityToGigabyte(newQuantity)
resizer := c.VolumeResizer
var totalIncompatible int
newQuantity, err := resource.ParseQuantity(c.Spec.Volume.Size) newQuantity, err := resource.ParseQuantity(c.Spec.Volume.Size)
if err != nil { if err != nil {
return fmt.Errorf("could not parse volume size: %v", err) return fmt.Errorf("could not parse volume size: %v", err)
} }
newSize := quantityToGigabyte(newQuantity)
resizer := c.VolumeResizer
var totalIncompatible int
pvs, err := c.listPersistentVolumes() pvs, err := c.listPersistentVolumes()
if err != nil { if err != nil {
return fmt.Errorf("could not list persistent volumes: %v", err) return fmt.Errorf("could not list persistent volumes: %v", err)