fix extraction of EBS volume id when there's no region prefix (#2351)
* add prefix /vol- on when EBS doesn't have * add new unit test for to get the volumeID * add a prefix to search in the string of volumeID --------- Co-authored-by: Jociele Padilha <jociele.padilha@zalando.de>
This commit is contained in:
parent
af084a5a65
commit
04f18b9716
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue