From 0dfcbc7da6ce2b625aa2c3d65a71f36f481a4134 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Fri, 24 Apr 2015 14:35:35 -0700 Subject: [PATCH] Fall back when nuking buckets Some S3 implementations do not support object versioning - fall back to listing without versions. Signed-off-by: Andrew Gaul --- s3tests/functional/__init__.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/s3tests/functional/__init__.py b/s3tests/functional/__init__.py index a575cebf..9681099c 100644 --- a/s3tests/functional/__init__.py +++ b/s3tests/functional/__init__.py @@ -67,7 +67,17 @@ def nuke_prefixed_buckets_on_conn(prefix, name, conn): success = False for i in xrange(2): try: - for key in bucket.list_versions(): + try: + iterator = iter(bucket.list_versions()) + # peek into iterator to issue list operation + keys = itertools.chain([next(iterator)], iterator) + except boto.exception.S3ResponseError as e: + # some S3 implementations do not support object + # versioning - fall back to listing without versions + if e.error_code != 'NotImplemented': + raise e + keys = bucket.list(); + for key in keys: print 'Cleaning bucket {bucket} key {key}'.format( bucket=bucket, key=key, -- 2.47.3