]> git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/commitdiff
s3tests: cleanup, set bucket acls if permission denied
authorYehuda Sadeh <yehuda@redhat.com>
Fri, 24 Apr 2015 20:49:59 +0000 (13:49 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 24 Apr 2015 20:51:21 +0000 (13:51 -0700)
retry bucket removal after setting the bucket permissions if we're
getting pemission denied. This will make sure the bucket gets removed.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
s3tests/functional/__init__.py

index 6d0d680a897735937aa3c16785649af00295743a..a575cebf4a2491b551eb97dd74e6fdc6bd25e2c1 100644 (file)
@@ -64,22 +64,31 @@ def nuke_prefixed_buckets_on_conn(prefix, name, conn):
         print 'prefix=',prefix
         if bucket.name.startswith(prefix):
             print 'Cleaning bucket {bucket}'.format(bucket=bucket)
-            try:
-                # bucket.set_canned_acl('private')
-                for key in bucket.list_versions():
-                    print 'Cleaning bucket {bucket} key {key}'.format(
-                        bucket=bucket,
-                        key=key,
-                        )
-                    # key.set_canned_acl('private')
-                    bucket.delete_key(key.name, version_id = key.version_id)
-                bucket.delete()
-            except boto.exception.S3ResponseError as e:
-                if e.error_code != 'AccessDenied':
-                    print 'GOT UNWANTED ERROR', e.error_code
-                    raise
-                # seems like we're not the owner of the bucket; ignore
-                pass
+            success = False
+            for i in xrange(2):
+                try:
+                    for key in bucket.list_versions():
+                        print 'Cleaning bucket {bucket} key {key}'.format(
+                            bucket=bucket,
+                            key=key,
+                            )
+                        # key.set_canned_acl('private')
+                        bucket.delete_key(key.name, version_id = key.version_id)
+                    bucket.delete()
+                    success = True
+                except boto.exception.S3ResponseError as e:
+                    if e.error_code != 'AccessDenied':
+                        print 'GOT UNWANTED ERROR', e.error_code
+                        raise
+                    # seems like we don't have permissions set appropriately, we'll
+                    # modify permissions and retry
+                    pass
+
+                if success:
+                    return
+
+                bucket.set_canned_acl('private')
+
 
 def nuke_prefixed_buckets(prefix):
     # If no regions are specified, use the simple method
@@ -106,7 +115,6 @@ def nuke_prefixed_buckets(prefix):
 
     print 'Done with cleanup of test buckets.'
 
-
 class TargetConfig:
     def __init__(self, cfg, section):
         self.port = None