Finalizing ebs migration.
This commit is contained in:
parent
88aab59332
commit
7a89a7c39f
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue