]> git.apps.os.sepia.ceph.com Git - s3-tests.git/commitdiff
boto3: list_versions() omits empty KeyMarker/VersionIdMarker
authorCasey Bodley <cbodley@redhat.com>
Fri, 17 Feb 2023 02:15:19 +0000 (21:15 -0500)
committerCasey Bodley <cbodley@redhat.com>
Mon, 6 Mar 2023 14:20:49 +0000 (09:20 -0500)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit a536dd0e88ac908cde07bf312c8db6fe4a0c9b69)

s3tests_boto3/functional/__init__.py

index 22b136cc80c77d68dba4b271fd0e13b2cdacc7b0..a65b54c6aeaeac500ca157dcf886fa7c65faf7ea 100644 (file)
@@ -82,18 +82,13 @@ def get_objects_list(bucket, client=None, prefix=None):
 # generator function that returns object listings in batches, where each
 # batch is a list of dicts compatible with delete_objects()
 def list_versions(client, bucket, batch_size):
-    key_marker = ''
-    version_marker = ''
+    kwargs = {'Bucket': bucket, 'MaxKeys': batch_size}
     truncated = True
     while truncated:
-        listing = client.list_object_versions(
-                Bucket=bucket,
-                KeyMarker=key_marker,
-                VersionIdMarker=version_marker,
-                MaxKeys=batch_size)
-
-        key_marker = listing.get('NextKeyMarker')
-        version_marker = listing.get('NextVersionIdMarker')
+        listing = client.list_object_versions(**kwargs)
+
+        kwargs['KeyMarker'] = listing.get('NextKeyMarker')
+        kwargs['VersionIdMarker'] = listing.get('NextVersionIdMarker')
         truncated = listing['IsTruncated']
 
         objs = listing.get('Versions', []) + listing.get('DeleteMarkers', [])