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()
|
err = c.populateVolumeMetaData()
|
||||||
if err != nil {
|
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 {
|
} else {
|
||||||
err = c.syncUnderlyingEBSVolume()
|
err = c.syncUnderlyingEBSVolume()
|
||||||
if err != nil {
|
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
|
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) {
|
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
|
idx := strings.LastIndex(volumeID, constants.EBSVolumeIDStart) + 1
|
||||||
if idx == 0 {
|
if idx == 0 {
|
||||||
return "", fmt.Errorf("malformed EBS volume id %q", volumeID)
|
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