Skip to content

Commit

Permalink
Merge pull request #490 from cbodley/wip-489
Browse files Browse the repository at this point in the history
boto3: list_versions() omits empty KeyMarker/VersionIdMarker
  • Loading branch information
cbodley authored Mar 6, 2023
2 parents 359bde7 + a536dd0 commit 5b9652c
Showing 1 changed file with 5 additions and 10 deletions.
15 changes: 5 additions & 10 deletions s3tests_boto3/functional/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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', [])
Expand Down

0 comments on commit 5b9652c

Please sign in to comment.