-
Notifications
You must be signed in to change notification settings - Fork 872
Generate ListBucketMetricsConfiguration #4103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: petesong/phase-3-pr-1-pt2
Are you sure you want to change the base?
Conversation
|
I'm pasting the results of the AI analysis done on the larger PR here The added validation isn't a breaking change because the request will fail and throw Now I have all the information needed to provide a comprehensive analysis. Let me compare the deleted custom files with the generated ones and examine all the marshaller changes: Task Completed Breaking Changes Analysis - S3 Custom to Generated MigrationAfter analyzing all deleted custom files, their generated replacements, and modified marshallers, I have identified the following breaking changes: BREAKING CHANGES IDENTIFIED:1. AbortMultipartUploadRequestMarshaller.cs - NEW VALIDATION ADDEDIssue: Added new required field validation that didn't exist before: if (string.IsNullOrEmpty(publicRequest.UploadId))
throw new AmazonS3Exception("Request object does not have required field UploadId set");Impact: Customer code that previously could make AbortMultipartUpload requests without UploadId set will now throw an exception. 2. CopyPartRequestMarshaller.cs - NEW VALIDATIONS ADDEDIssue: Added two new required field validations: if (publicRequest.PartNumber == null)
throw new AmazonS3Exception("Request object does not have required field PartNumber set");
if (string.IsNullOrEmpty(publicRequest.UploadId))
throw new AmazonS3Exception("Request object does not have required field UploadId set");Impact: Customer code that previously could make CopyPart requests without PartNumber or UploadId set will now throw exceptions. 3. ListPartsRequestMarshaller.cs - NEW VALIDATION ADDEDIssue: Added new required field validation: if (string.IsNullOrEmpty(publicRequest.UploadId))
throw new AmazonS3Exception("Request object does not have required field UploadId set");Impact: Customer code that previously could make ListParts requests without UploadId set will now throw an exception. NO BREAKING CHANGES FOUND IN:Model Files Migration (✅ SAFE)
Differences are non-breaking:
Marshaller Logic Preservation (✅ SAFE)
SUMMARY:
The breaking changes are all related to new validation logic being added to existing marshallers rather than logic being lost during migration. These validations enforce that required fields are set before making API calls, which technically makes the SDK more strict than before. |
| BucketName = accessPointArn, | ||
| Key = "foo.txt" | ||
| Key = "foo.txt", | ||
| UploadId = "testing" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was this supposed to be in this PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no, that should only be in the very first PR. this change is in both branches so not sure why it is showing up here😅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay i fixed it
| throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "ListBucketMetricsConfigurationsRequest.BucketName"); | ||
|
|
||
| if (publicRequest.IsSetContinuationToken()) | ||
| request.Parameters.Add("continuation-token", StringUtils.FromString(publicRequest.ContinuationToken)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similar to the other PR, we were doing sub resources before:
Line 51 in 62c261a
| request.AddSubResource("continuation-token", listBucketMetricsConfigurationRequest.ContinuationToken.ToString()); |
Is that intentional here too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yup, that is intentional. We were incorrectly adding these non static-query parameters to the subresources collection, even though they are modeled as querystring. 99% of the time it is fine, but when there are special characters in any of these query strings (for example a datetime), we wont percent encode it in the URL which is incorrect. Moving it to the Parameters section where it belongs ensures it is percent encoded in the url
Description
Continuation of #4102
Motivation and Context
Generates ListBucketMetricsConfiguration
Testing
All testng done in larger PR with all 4 operations which this PR is based off of.
dry run passed
Screenshots (if appropriate)
Types of changes
Checklist
License