diff --git a/pkg/cluster/volumes.go b/pkg/cluster/volumes.go index 6b22ed54c..5b7ab948c 100644 --- a/pkg/cluster/volumes.go +++ b/pkg/cluster/volumes.go @@ -35,7 +35,7 @@ func (c *Cluster) syncVolumes() error { err = c.populateVolumeMetaData() if err != nil { - c.logger.Errorf("populating EBS meta data failed, skipping potential adjustements: %v", err) + c.logger.Errorf("populating EBS meta data failed, skipping potential adjustments: %v", err) } else { err = c.syncUnderlyingEBSVolume() if err != nil { diff --git a/pkg/util/volumes/ebs.go b/pkg/util/volumes/ebs.go index 8f998b4cb..f625dab2f 100644 --- a/pkg/util/volumes/ebs.go +++ b/pkg/util/volumes/ebs.go @@ -39,8 +39,12 @@ func (r *EBSVolumeResizer) VolumeBelongsToProvider(pv *v1.PersistentVolume) bool return pv.Spec.AWSElasticBlockStore != nil && pv.Annotations[constants.VolumeStorateProvisionerAnnotation] == constants.EBSProvisioner } -// ExtractVolumeID extracts volumeID +// ExtractVolumeID extracts volumeID from "aws://eu-central-1a/vol-075ddfc4a127d0bd4" +// or return only the vol-075ddfc4a127d0bd4 when it doesn't have "aws://" func (r *EBSVolumeResizer) ExtractVolumeID(volumeID string) (string, error) { + if (strings.HasPrefix(volumeID, "vol-")) && !(strings.HasPrefix(volumeID, "aws://")) { + return volumeID, nil + } idx := strings.LastIndex(volumeID, constants.EBSVolumeIDStart) + 1 if idx == 0 { return "", fmt.Errorf("malformed EBS volume id %q", volumeID) diff --git a/pkg/util/volumes/volumes_test.go b/pkg/util/volumes/volumes_test.go new file mode 100644 index 000000000..6bf39924e --- /dev/null +++ b/pkg/util/volumes/volumes_test.go @@ -0,0 +1,49 @@ +package volumes + +import ( + "fmt" + "testing" +) + +func TestExtractVolumeID(t *testing.T) { + var tests = []struct { + input string + expectedResult string + expectedErr error + }{ + { + input: "aws://eu-central-1c/vol-01234a5b6c78df9gh", + expectedResult: "vol-01234a5b6c78df9gh", + expectedErr: nil, + }, + { + input: "vol-0g9fd87c6b5a43210", + expectedResult: "vol-0g9fd87c6b5a43210", + expectedErr: nil, + }, + { + input: "aws://eu-central-1c/01234a5b6c78df9g0", + expectedResult: "", + expectedErr: fmt.Errorf("malformed EBS volume id %q", "aws://eu-central-1c/01234a5b6c78df9g0"), + }, + { + input: "hg9fd87c6b5a43210", + expectedResult: "", + expectedErr: fmt.Errorf("malformed EBS volume id %q", "hg9fd87c6b5a43210"), + }, + } + + resizer := EBSVolumeResizer{} + + for _, tt := range tests { + volumeId, err := resizer.ExtractVolumeID(tt.input) + if volumeId != tt.expectedResult { + t.Errorf("%s expected: %s, got %s", t.Name(), tt.expectedResult, volumeId) + } + if err != tt.expectedErr { + if tt.expectedErr != nil && err.Error() != tt.expectedErr.Error() { + t.Errorf("%s unexpected error: got %v", t.Name(), err) + } + } + } +}