)]}'
{"id":"openstack%2Fglance~970198","triplet_id":"openstack%2Fglance~master~I74473b304e974055cea47e550ffd4ba2dbbb663e","project":"openstack/glance","branch":"master","hashtags":[],"change_id":"I74473b304e974055cea47e550ffd4ba2dbbb663e","subject":"Fix S3 URL corruption on secret rotation","status":"ABANDONED","created":"2025-12-08 22:38:22.000000000","updated":"2025-12-08 22:42:41.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"74bf7380a52f12fa92841a63963e53d2c5830963","_number":970198,"virtual_id_number":970198,"owner":{"_account_id":38656,"name":"Vishnu C","display_name":"Vishnu Chandrasenan","email":"vischan2@cisco.com","username":"vischan2"},"actions":{},"labels":{"Verified":{"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"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":{"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Top Priority / Holds Gate"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{},"pending_reviewers":{},"reviewer_updates":[],"messages":[{"id":"00a3ad91083fcf96fac4d1115f403deea24c98cb","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":38656,"name":"Vishnu C","display_name":"Vishnu Chandrasenan","email":"vischan2@cisco.com","username":"vischan2"},"date":"2025-12-08 22:38:22.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"74bf7380a52f12fa92841a63963e53d2c5830963","tag":"autogenerated:gerrit:abandon","author":{"_account_id":38656,"name":"Vishnu C","display_name":"Vishnu Chandrasenan","email":"vischan2@cisco.com","username":"vischan2"},"date":"2025-12-08 22:42:41.000000000","message":"Abandoned\n\nAccidental duplicate of the following: https://review.opendev.org/c/openstack/glance/+/970048","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"698fddd2b439a8e2787e6e6cd5e1cc950be52d87","revisions":{"698fddd2b439a8e2787e6e6cd5e1cc950be52d87":{"kind":"REWORK","_number":1,"created":"2025-12-08 22:38:22.000000000","uploader":{"_account_id":38656,"name":"Vishnu C","display_name":"Vishnu Chandrasenan","email":"vischan2@cisco.com","username":"vischan2"},"ref":"refs/changes/98/970198/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/glance","ref":"refs/changes/98/970198/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/glance refs/changes/98/970198/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/glance refs/changes/98/970198/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/glance refs/changes/98/970198/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/glance refs/changes/98/970198/1"}}},"commit":{"parents":[{"commit":"955d086873b9368090134aa01d5226f9b9fa19df","subject":"Merge \"Correct read function in _UWSGIChunkFile not to exceed length\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/glance/commit/955d086873b9368090134aa01d5226f9b9fa19df"}]}],"author":{"name":"vischan2","email":"vischan2@cisco.com","date":"2025-12-07 09:56:17.000000000","tz":-480},"committer":{"name":"vischan2","email":"vischan2@cisco.com","date":"2025-12-08 22:26:39.000000000","tz":-480},"subject":"Fix S3 URL corruption on secret rotation","message":"Fix S3 URL corruption on secret rotation\n\nThe _update_s3_url() function uses urlparse which incorrectly parses\nURLs when the secret key contains a forward slash (/). urlparse\ninterprets the slash as the start of the path, corrupting the netloc.\n\nThis causes credential rotation to produce corrupted URLs in the\ndatabase by concatenating old and new credentials, resulting in image\ndownload failures. AWS S3 secret access keys can legitimately contain\nforward slash characters.\n\nThe fix uses a hybrid approach:\n- urlparse for query/fragment extraction\n- rfind(\u0027@\u0027) on the raw URL to locate credentials (to handle \u0027/\u0027\n  in secrets correctly)\n\nUnit test updates:\n- test_update_s3_url_helper_function\n- test_update_s3_url_with_slash_in_secret\n- test_update_s3_url_preserves_query_and_fragment\n- test_update_s3_url_with_port\n\nCloses-Bug: #2134325\nChange-Id: I74473b304e974055cea47e550ffd4ba2dbbb663e\nSigned-off-by: vischan2 \u003cvischan2@cisco.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/glance/commit/698fddd2b439a8e2787e6e6cd5e1cc950be52d87"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/glance/commit/698fddd2b439a8e2787e6e6cd5e1cc950be52d87"}]},"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":{}}},{"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":{}}},{"name":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{}}},{"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":{}}}]}
