Finalizing ebs migration.

This commit is contained in:
Jan Mußler 2020-12-09 15:18:15 +01:00
parent 88aab59332
commit 7a89a7c39f
4 changed files with 18 additions and 7 deletions

View File

@ -267,7 +267,7 @@ func (c *Cluster) executeEBSMigration() error {
volumeIds := []string{} volumeIds := []string{}
var volumeID string var volumeID string
for _, pv := range pvs { for _, pv := range pvs {
volumeID, err = c.VolumeResizer.GetProviderVolumeID(pv) volumeID, err = c.VolumeResizer.ExtractVolumeID(pv.Spec.AWSElasticBlockStore.VolumeID)
if err != nil { if err != nil {
continue continue
} }

View File

@ -289,6 +289,10 @@ func TestMigrateEBS(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
resizer := mocks.NewMockVolumeResizer(ctrl) resizer := mocks.NewMockVolumeResizer(ctrl)
resizer.EXPECT().ExtractVolumeID(gomock.Eq("aws://eu-central-1b/ebs-volume-1")).Return("ebs-volume-1", nil)
resizer.EXPECT().ExtractVolumeID(gomock.Eq("aws://eu-central-1b/ebs-volume-2")).Return("ebs-volume-2", nil)
resizer.EXPECT().DescribeVolumes(gomock.Eq([]string{"ebs-volume-1", "ebs-volume-2"})).Return( resizer.EXPECT().DescribeVolumes(gomock.Eq([]string{"ebs-volume-1", "ebs-volume-2"})).Return(
[]volumes.VolumeProperties{ []volumes.VolumeProperties{
{VolumeID: "ebs-volume-1", VolumeType: "gp2", Size: 100}, {VolumeID: "ebs-volume-1", VolumeType: "gp2", Size: 100},

View File

@ -39,12 +39,8 @@ 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
} }
// GetProviderVolumeID converts aws://eu-central-1b/vol-00f93d4827217c629 to vol-00f93d4827217c629 for EBS volumes // ExtractVolumeID extracts volumeID
func (r *EBSVolumeResizer) GetProviderVolumeID(pv *v1.PersistentVolume) (string, error) { func (r *EBSVolumeResizer) ExtractVolumeID(volumeID string) (string, error) {
volumeID := pv.Spec.AWSElasticBlockStore.VolumeID
if volumeID == "" {
return "", fmt.Errorf("volume id is empty for volume %q", pv.Name)
}
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)
@ -52,6 +48,16 @@ func (r *EBSVolumeResizer) GetProviderVolumeID(pv *v1.PersistentVolume) (string,
return volumeID[idx:], nil return volumeID[idx:], nil
} }
// GetProviderVolumeID converts aws://eu-central-1b/vol-00f93d4827217c629 to vol-00f93d4827217c629 for EBS volumes
func (r *EBSVolumeResizer) GetProviderVolumeID(pv *v1.PersistentVolume) (string, error) {
volumeID := pv.Spec.AWSElasticBlockStore.VolumeID
if volumeID == "" {
return "", fmt.Errorf("got empty volume id for volume %v", pv)
}
return r.ExtractVolumeID(volumeID)
}
// DescribeVolumes ... // DescribeVolumes ...
func (r *EBSVolumeResizer) DescribeVolumes(volumeIds []string) ([]VolumeProperties, error) { func (r *EBSVolumeResizer) DescribeVolumes(volumeIds []string) ([]VolumeProperties, error) {
if !r.IsConnectedToProvider() { if !r.IsConnectedToProvider() {

View File

@ -19,6 +19,7 @@ type VolumeResizer interface {
IsConnectedToProvider() bool IsConnectedToProvider() bool
VolumeBelongsToProvider(pv *v1.PersistentVolume) bool VolumeBelongsToProvider(pv *v1.PersistentVolume) bool
GetProviderVolumeID(pv *v1.PersistentVolume) (string, error) GetProviderVolumeID(pv *v1.PersistentVolume) (string, error)
ExtractVolumeID(volumeID string) (string, error)
ResizeVolume(providerVolumeID string, newSize int64) error ResizeVolume(providerVolumeID string, newSize int64) error
ModifyVolume(providerVolumeID string, newType string, newSize int64, iops int64, throughput int64) error ModifyVolume(providerVolumeID string, newType string, newSize int64, iops int64, throughput int64) error
DisconnectFromProvider() error DisconnectFromProvider() error