mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Volume deletion should be idempotent
- Describe* calls should return aws.Error so caller can handle individual errors. aws.Error already has enough context ("InvalidVolume.NotFound: The volume 'vol-0a06cc096e989c5a2' does not exist") - Deletion of already deleted volume should succeed.
This commit is contained in:
parent
e30b6634c3
commit
38c0ce75c3
@ -809,7 +809,7 @@ func (s *awsSdkEC2) DescribeVolumes(request *ec2.DescribeVolumesInput) ([]*ec2.V
|
||||
|
||||
if err != nil {
|
||||
recordAwsMetric("describe_volume", 0, err)
|
||||
return nil, fmt.Errorf("error listing AWS volumes: %q", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
results = append(results, response.Volumes...)
|
||||
@ -1891,10 +1891,10 @@ func (d *awsDisk) deleteVolume() (bool, error) {
|
||||
request := &ec2.DeleteVolumeInput{VolumeId: d.awsID.awsString()}
|
||||
_, err := d.ec2.DeleteVolume(request)
|
||||
if err != nil {
|
||||
if isAWSErrorVolumeNotFound(err) {
|
||||
return false, nil
|
||||
}
|
||||
if awsError, ok := err.(awserr.Error); ok {
|
||||
if awsError.Code() == "InvalidVolume.NotFound" {
|
||||
return false, nil
|
||||
}
|
||||
if awsError.Code() == "VolumeInUse" {
|
||||
return false, volume.NewDeletedVolumeInUseError(err.Error())
|
||||
}
|
||||
@ -2266,6 +2266,10 @@ func (c *Cloud) DeleteDisk(volumeName KubernetesVolumeID) (bool, error) {
|
||||
}
|
||||
available, err := c.checkIfAvailable(awsDisk, "deleting", "")
|
||||
if err != nil {
|
||||
if isAWSErrorVolumeNotFound(err) {
|
||||
glog.V(2).Infof("Volume %s not found when deleting it, assuming it's deleted", awsDisk.awsID)
|
||||
return false, nil
|
||||
}
|
||||
glog.Error(err)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user