diff --git a/esti/s3_gateway_test.go b/esti/s3_gateway_test.go index a38f393442c..7059c32a693 100644 --- a/esti/s3_gateway_test.go +++ b/esti/s3_gateway_test.go @@ -347,6 +347,7 @@ func TestListMultipartUploads(t *testing.T) { require.Contains(t, keys, obj1) require.Contains(t, keys, obj2) + // testing maxuploads - only first upload should return maxUploads := aws.Int32(1) output, err = s3Client.ListMultipartUploads(ctx, &s3.ListMultipartUploadsInput{Bucket: resp1.Bucket, MaxUploads: maxUploads}) require.NoError(t, err, "failed to list multipart uploads") @@ -354,9 +355,9 @@ func TestListMultipartUploads(t *testing.T) { require.Contains(t, keys, obj1) require.NotContains(t, keys, obj2) - keyMarker := output.KeyMarker - uploadIDMarker := output.UploadIdMarker - + // testing key marker and upload id marker for pagination. only records after marker should return + keyMarker := output.NextKeyMarker + uploadIDMarker := output.NextUploadIdMarker output, err = s3Client.ListMultipartUploads(ctx, &s3.ListMultipartUploadsInput{Bucket: resp1.Bucket, MaxUploads: maxUploads, KeyMarker: keyMarker, UploadIdMarker: uploadIDMarker}) require.NoError(t, err, "failed to list multipart uploads") keys = extractUploadKeys(output) diff --git a/pkg/block/adapter.go b/pkg/block/adapter.go index e7c438c69d6..8815f4fe569 100644 --- a/pkg/block/adapter.go +++ b/pkg/block/adapter.go @@ -127,6 +127,7 @@ type ListMultipartUploadsResponse struct { Uploads []types.MultipartUpload NextUploadIDMarker *string NextKeyMarker *string + IsTruncated bool } // CreateMultiPartUploadOpts contains optional arguments for diff --git a/pkg/block/s3/adapter.go b/pkg/block/s3/adapter.go index 97b395b70ff..3a4b2e4fbba 100644 --- a/pkg/block/s3/adapter.go +++ b/pkg/block/s3/adapter.go @@ -881,6 +881,7 @@ func (a *Adapter) ListMultipartUploads(ctx context.Context, obj block.ObjectPoin Uploads: resp.Uploads, NextUploadIDMarker: resp.NextUploadIdMarker, NextKeyMarker: resp.NextKeyMarker, + IsTruncated: *resp.IsTruncated, } return &mpuResp, nil } diff --git a/pkg/gateway/operations/listobjects.go b/pkg/gateway/operations/listobjects.go index a1d21e99ec9..2a40b0578a3 100644 --- a/pkg/gateway/operations/listobjects.go +++ b/pkg/gateway/operations/listobjects.go @@ -462,6 +462,7 @@ func handleListMultipartUploads(w http.ResponseWriter, req *http.Request, o *Rep Uploads: uploads, NextKeyMarker: *mpuResp.NextKeyMarker, NextUploadIDMarker: *mpuResp.NextUploadIDMarker, + IsTruncted: mpuResp.IsTruncated, } o.EncodeResponse(w, req, resp, http.StatusOK) } diff --git a/pkg/gateway/serde/xml.go b/pkg/gateway/serde/xml.go index f45fe7da21d..e7fbae2ea03 100644 --- a/pkg/gateway/serde/xml.go +++ b/pkg/gateway/serde/xml.go @@ -170,6 +170,7 @@ type ListMultipartUploadsOutput struct { Uploads []Upload `xml:"Upload"` NextKeyMarker string `xml:"NextKeyMarker"` NextUploadIDMarker string `xml:"NextUploadIDMarker"` + IsTruncted bool `xml:"IsTruncted"` } type VersioningConfiguration struct {