nuke_prefixed_buckets() ignores 404 from bucket delete

if a bucket delete request times out, the retry will likely get a 404
NoSuchBucket response. ignore that error and treat this as a success

Signed-off-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
Casey Bodley 2019-04-22 15:34:23 -04:00
parent 16393fb667
commit 28b793271f
2 changed files with 15 additions and 2 deletions

View file

@ -91,7 +91,13 @@ def nuke_prefixed_buckets_on_conn(prefix, name, conn):
)) ))
# key.set_canned_acl('private') # key.set_canned_acl('private')
bucket.delete_key(key.name, version_id = key.version_id) bucket.delete_key(key.name, version_id = key.version_id)
try:
bucket.delete() bucket.delete()
except boto.exception.S3ResponseError as e:
# if DELETE times out, the retry may see NoSuchBucket
if e.error_code != 'NoSuchBucket':
raise e
pass
success = True success = True
except boto.exception.S3ResponseError as e: except boto.exception.S3ResponseError as e:
if e.error_code != 'AccessDenied': if e.error_code != 'AccessDenied':

View file

@ -1,6 +1,7 @@
import boto3 import boto3
from botocore import UNSIGNED from botocore import UNSIGNED
from botocore.client import Config from botocore.client import Config
from botocore.exceptions import ClientError
from botocore.handlers import disable_signing from botocore.handlers import disable_signing
import ConfigParser import ConfigParser
import os import os
@ -123,7 +124,13 @@ def nuke_prefixed_buckets(prefix, client=None):
delete_markers = get_delete_markers_list(bucket_name, client) delete_markers = get_delete_markers_list(bucket_name, client)
for obj in delete_markers: for obj in delete_markers:
response = client.delete_object(Bucket=bucket_name,Key=obj[0],VersionId=obj[1]) response = client.delete_object(Bucket=bucket_name,Key=obj[0],VersionId=obj[1])
try:
client.delete_bucket(Bucket=bucket_name) client.delete_bucket(Bucket=bucket_name)
except ClientError, e:
# if DELETE times out, the retry may see NoSuchBucket
if e.response['Error']['Code'] != 'NoSuchBucket':
raise e
pass
print('Done with cleanup of buckets in tests.') print('Done with cleanup of buckets in tests.')