)]}'
{"id":"openstack%2Fswift~998821","triplet_id":"openstack%2Fswift~master~I22076c1c16890cf8e0276cdc46eba7e43b03d4cc","project":"openstack/swift","branch":"master","attention_set":{},"removed_from_attention_set":{"39146":{"account":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"last_update":"2026-07-27 17:10:58.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I22076c1c16890cf8e0276cdc46eba7e43b03d4cc","subject":"s3api: Make checksum rules configurable","status":"ABANDONED","created":"2026-07-27 15:34:33.000000000","updated":"2026-07-27 17:10:58.000000000","total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"53bc1f8df82e784a07e8bc691b568448841069cc","_number":998821,"virtual_id_number":998821,"owner":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-07-27 16:51:02.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-07-27 16:51:02.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"95975dd2cedab93927db3f60642ef8a4d9cb6bfc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"date":"2026-07-27 15:34:33.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"03c2c71f8aad7ce2e823159fcf87a8d00cc9673e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-27 16:51:02.000000000","message":"Patch Set 1: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/b49566146ffb40f7b41d7bf9280b4f11\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c850c68d295b4b769a20c48b2221deb7 : SUCCESS in 13m 37s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/ad1d5ea8e5404757a3033fd096a01e77 : SUCCESS in 9m 51s\n- grenade https://zuul.opendev.org/t/openstack/build/e71e59661f79410992a13f88e67e3cd0 : SUCCESS in 1h 04m 14s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/ee0d792a4917424093e56ad5863f1206 : SUCCESS in 46m 28s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/c49b6a49f6324f16bb6182d43310c1a7 : SUCCESS in 55m 19s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/b1167ff571ca40cd8dcf8325fb99a109 : SUCCESS in 56m 35s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6163686583664c41a78e5e2edebbb73e : SUCCESS in 25m 19s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0eaa59bca5d74b3f8176e2d5f3aef592 : SUCCESS in 22m 06s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/9d9873b9db3342c3955419ff085c7b03 : SUCCESS in 20m 47s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/3aa5f8192a554270bf41685d44cb0c4a : SUCCESS in 10m 38s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/76d9aa89bd2841e791af74dff5889824 : SUCCESS in 23m 36s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/2aac17c5eefa4a478ac382e2a01fc1ac : SUCCESS in 20m 14s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/3d1704d67835400fabc16ceb75683b00 : SUCCESS in 28m 01s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/4b35b66dd8874dc5a712a56946790fd6 : SUCCESS in 23m 38s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/650193f104b74e169d84d02f6c5a9755 : SUCCESS in 14m 25s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/661cd151487a4e009a9705d0b74746ba : SUCCESS in 15m 12s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/97ab2c324d5e4adcb4049c6689cd76f7 : SUCCESS in 17m 06s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/3c578caade2f4d46a766e88ec1810462 : SUCCESS in 19m 38s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/b76bb0f8ec95420d8dbcc170085c1064 : SUCCESS in 7m 32s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/83eaf8cb338c46fcadc58f58552460aa : FAILURE in 8m 06s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/81acb2a2d78d4c009a6455dd996dc743 : SUCCESS in 8m 48s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/d403de11a8ca4a088942700d1282407b : SUCCESS in 1h 00m 42s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/4f3423ef5a154b73bb957cae3724c268 : SUCCESS in 54m 04s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/3b0c217f2ca347ed8ae5216bb41e13bd : SUCCESS in 59m 51s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c3377e98a5c546c8b4d46fbdd67d34a3 : SUCCESS in 34m 05s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c0ed2021f7bb4d0ba35340379be6dff1 : FAILURE in 3m 58s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/ea0d3c4f036844b89de34d4e8d1d6ba6 : SUCCESS in 17m 09s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/741a6964e2c44c008a696a73662b1d04 : SUCCESS in 1h 06m 24s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  Comments left for invalid file test/s3api/test_object_checksums.py","accounts_in_message":[],"_revision_number":1},{"id":"53bc1f8df82e784a07e8bc691b568448841069cc","tag":"autogenerated:gerrit:abandon","author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"date":"2026-07-27 17:10:58.000000000","message":"Abandoned\n\nWe really need to be more like S3, if that means breaking clients that are sending S3 requests that would be DENIED by S3, then we should do the same.","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"1c40775e6e5c2db49a3be3df87bb3075a2a1b7d7","revisions":{"1c40775e6e5c2db49a3be3df87bb3075a2a1b7d7":{"kind":"REWORK","_number":1,"created":"2026-07-27 15:34:33.000000000","uploader":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"ref":"refs/changes/21/998821/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/21/998821/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/21/998821/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/21/998821/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/21/998821/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/21/998821/1"}}},"commit":{"parents":[{"commit":"ec149cf11a388d06847beeb09b7f69ce02d59b13","subject":"s3api: User Checksum Persistence on MPUs","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ec149cf11a388d06847beeb09b7f69ce02d59b13"}]}],"author":{"name":"Nathaniel Martes","email":"nmartes@NVIDIA.com","date":"2026-07-25 04:58:44.000000000","tz":-420},"committer":{"name":"Nathaniel Martes","email":"nmartes@NVIDIA.com","date":"2026-07-25 05:10:13.000000000","tz":-420},"subject":"s3api: Make checksum rules configurable","message":"s3api: Make checksum rules configurable\n\nAdd an \u0027enforce_checksum_rules\u0027 option to S3API. The option is disabled by\ndefault so legacy clients and mixed-version clusters retain the existing\nbest-effort checksum persistence behavior.\n\nThese rules are gathered from AWS S3\u0027s checksum rules.\nWhen enforcement is enabled:\n\n* Reject unsupported x-amz-checksum-mode values on GetObject and\n  HeadObject. ENABLED is the only supported value.\n* Return NotImplemented when CopyObject supplies\n  x-amz-checksum-algorithm, since Swift cannot recalculate a checksum\n  during that operation.\n* Validate CreateMultipartUpload checksum algorithms and types,\n  including unsupported algorithms, incompatible FULL_OBJECT and\n  COMPOSITE combinations, and unavailable full-object CRC combining.\n* Require UploadPart checksums for COMPOSITE uploads and reject checksum\n  algorithms that differ from the algorithm selected when the MPU was\n  created. FULL_OBJECT uploads may omit the part checksum, but supplied\n  checksums are still validated.\n* Reject checksum-aware UploadPartCopy requests that use a byte range or\n  whose source is missing a reusable FULL_OBJECT checksum with the same\n  algorithm as the destination MPU.\n* Require COMPOSITE completion manifests to start at part 1 and use\n  consecutive part numbers.\n* Validate CompleteMultipartUpload checksum type and algorithm against\n  the MPU configuration.\n* Validate client-provided part checksums against stored part checksum\n  metadata and reject missing, malformed, mismatched, or unexpected\n  checksum values.\n* Validate a supplied final checksum against the checksum calculated\n  from the selected parts, including repeated completion requests.\n\nWhen enforcement is disabled, continue validating checksums supplied for\nuploaded bytes, but fall back to completing requests without final\nchecksum metadata whenever MPU or part metadata cannot be safely used.\n\nAPIImpact\n\nAssisted-by: Codex:gpt-5.6-sol\nChange-Id: I22076c1c16890cf8e0276cdc46eba7e43b03d4cc\nSigned-off-by: Nathaniel Martes \u003cnmartes@NVIDIA.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1c40775e6e5c2db49a3be3df87bb3075a2a1b7d7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1c40775e6e5c2db49a3be3df87bb3075a2a1b7d7"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
