)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38762,"name":"Sahil Kumbhar","display_name":"sakumbha","email":"sakumbha@redhat.com","username":"sakumbha"},"change_message_id":"d64af0394be82fbe2fcde07a10c8168a0f418b9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"456465dd_108fd54e","updated":"2026-06-26 09:34:23.000000000","message":"I think this patch is already solving the bug https://review.opendev.org/c/openstack/glance/+/993068 with minimal code changes","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"ed12ee770dacb5b6c4cfe6015c30dde50086de7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1f99b971_975b8236","updated":"2026-06-30 14:04:10.000000000","message":"We\u0027re about to merge https://review.opendev.org/c/openstack/glance/+/988385 which removes a lot of the \"lazy update\" code. Does this fix this issue (at least on master)?","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":39209,"name":"Anatoli Barzev","email":"anatoli.barzev@digits.schwarz","username":"abarzev"},"change_message_id":"d15dc873dfab9376aac50583ff0b4139c8495a3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fb601b66_9d142644","updated":"2026-06-25 23:07:16.000000000","message":"recheck","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":38762,"name":"Sahil Kumbhar","display_name":"sakumbha","email":"sakumbha@redhat.com","username":"sakumbha"},"change_message_id":"0082362f17776d1be027b31ef59fa40d2793ea9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"16cfb4e6_3cfde10f","in_reply_to":"131add9d_39ccda48","updated":"2026-06-30 09:16:48.000000000","message":"Acknowledged","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":39209,"name":"Anatoli Barzev","email":"anatoli.barzev@digits.schwarz","username":"abarzev"},"change_message_id":"a5ff81e3578abbfb060caa471d70f3a4a847a761","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"988874b9_fdb88c86","in_reply_to":"1f99b971_975b8236","updated":"2026-07-01 07:26:25.000000000","message":"Looks like it will fix the issue, but is it possible to be backported for 2025.1, 2025.2, 2026.1?","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":39209,"name":"Anatoli Barzev","email":"anatoli.barzev@digits.schwarz","username":"abarzev"},"change_message_id":"c65a64a616867f278676bdcc774796321f241e6b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"131add9d_39ccda48","in_reply_to":"456465dd_108fd54e","updated":"2026-06-26 09:57:38.000000000","message":"I agree that the other patch is smaller, but it\u0027s just adding a fix on top of the initial patch that introduced the bug. Additionally, it misses the issue in _update_location_for_legacy_store(). While this proposed change involves more lines of code initially, it tries to improve the underlying solution, which actually results in less code overall.","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"265cc51ed731b564b3bc21abfd1f2aacd2e80634","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e34c0342_1f3495bb","in_reply_to":"988874b9_fdb88c86","updated":"2026-07-07 14:10:43.000000000","message":"@anatoli.barzev@digits.schwarz So we\u0027ve discussed this with the team. We won\u0027t be backporting the feature, but we\u0027re ok with introducing your fix in 2026.1, and then backporting that to older releases. Could you send a patch to 2026.1?","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":39209,"name":"Anatoli Barzev","email":"anatoli.barzev@digits.schwarz","username":"abarzev"},"change_message_id":"4e2893b5614270075b95d5bac885c55e9c802773","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c842fb4d_0b6a17b2","in_reply_to":"d3b9f9f3_d9b75631","updated":"2026-07-07 20:39:09.000000000","message":"@cyril@redhat.com","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"},{"author":{"_account_id":39209,"name":"Anatoli Barzev","email":"anatoli.barzev@digits.schwarz","username":"abarzev"},"change_message_id":"504bd996ddb21bfadc0cffe79fd3395814a92294","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d3b9f9f3_d9b75631","in_reply_to":"e34c0342_1f3495bb","updated":"2026-07-07 20:27:37.000000000","message":"Here is the patch in 2026.1:\n\nhttps://review.opendev.org/c/openstack/glance/+/996357","commit_id":"6296a4b9f3d9328353c97ef6009e4a80aad1a3bf"}],"glance/common/store_utils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            loc[\u0027metadata\u0027][\u0027store\u0027] \u003d \"%s\" % store"},{"line_number":239,"context_line":"            return"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"def _find_store_by_bucket(bucket_name, location_map, scheme):"},{"line_number":242,"context_line":"    \"\"\"Find store instance by matching the bucket name.\"\"\""},{"line_number":243,"context_line":"    for store_name, store_info in location_map[scheme].items():"},{"line_number":244,"context_line":"        store_instance \u003d store_info[\u0027store\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"18355e64_5a628f57","line":241,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        if store_instance.bucket \u003d\u003d bucket_name:"},{"line_number":246,"context_line":"            return (store_name, store_instance)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"def _parse_s3_location(url):"},{"line_number":249,"context_line":"    \"\"\"Parse s3 url with respect to unencoded S3 credentials."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    S3 locations can embed unescaped credentials"}],"source_content_type":"text/x-python","patch_set":1,"id":"342eaee2_6456d6cc","line":248,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    S3 locations can embed unescaped credentials"},{"line_number":252,"context_line":"    (s3://access:se/cret@host/bucket/key) AWS secret key may contain \u0027/\u0027,"},{"line_number":253,"context_line":"    which makes urlparse mis-split netloc and path. We percent-encode the userinfo"},{"line_number":254,"context_line":"    (the substring between \u0027://\u0027 and the last \u0027@\u0027, splitting access and secret"},{"line_number":255,"context_line":"    on the first \u0027:\u0027."},{"line_number":256,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"e4d13d73_0946d9e3","line":253,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \u0027parsed\u0027: parsed"},{"line_number":275,"context_line":"    }"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"def _construct_s3_location(s3loc, store_instance):"},{"line_number":278,"context_line":"    \"\"\"The new location will reflect changes only in the credentials.\"\"\""},{"line_number":279,"context_line":"    key \u003d getattr(store_instance, \u0027access_key\u0027)"},{"line_number":280,"context_line":"    secret \u003d getattr(store_instance,\u0027secret_key\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e02678ad_042414f2","line":277,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":277,"context_line":"def _construct_s3_location(s3loc, store_instance):"},{"line_number":278,"context_line":"    \"\"\"The new location will reflect changes only in the credentials.\"\"\""},{"line_number":279,"context_line":"    key \u003d getattr(store_instance, \u0027access_key\u0027)"},{"line_number":280,"context_line":"    secret \u003d getattr(store_instance,\u0027secret_key\u0027)"},{"line_number":281,"context_line":"    new_netloc \u003d \"%s:%s@%s\" % (key, secret, s3loc[\u0027host\u0027])"},{"line_number":282,"context_line":"    return urlparse.urlunparse(("},{"line_number":283,"context_line":"        s3loc[\u0027parsed\u0027].scheme,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2e9f7db5_cedc7089","line":280,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        s3loc[\u0027parsed\u0027].fragment"},{"line_number":289,"context_line":"    ))"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"def _update_s3_location_and_store_id(context, loc):"},{"line_number":292,"context_line":"    \"\"\"Update S3 location and store ID for legacy images."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    :param context: The request context"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f87c35a_b6016276","line":291,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    if store_name:"},{"line_number":309,"context_line":"        # Multistore, find by store name"},{"line_number":310,"context_line":"        if store_name not in location_map[s3urlparsed.scheme]:"},{"line_number":311,"context_line":"            LOG.warning(\"No S3 store_name %(store)s found for image %(image_id)s\","},{"line_number":312,"context_line":"                        {\u0027image_id\u0027: s3loc[\u0027image_id\u0027], \u0027store\u0027: store_name})"},{"line_number":313,"context_line":"            return False"},{"line_number":314,"context_line":"        store_instance \u003d location_map[s3urlparsed.scheme][store_name][\u0027store\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"6733c8f7_e4a0cae0","line":311,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        loc[\u0027metadata\u0027][\u0027store\u0027] \u003d store_name"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    # Rotate only the credentials, preserving host, path, query and fragment."},{"line_number":328,"context_line":"    expected_url \u003d _construct_s3_location(s3loc, store_instance) # For debugging purposes only"},{"line_number":329,"context_line":"    if loc[\u0027url\u0027] !\u003d expected_url:"},{"line_number":330,"context_line":"        LOG.info(\"S3 URL mismatch for image %(image_id)s, updating URL\","},{"line_number":331,"context_line":"                 {\u0027image_id\u0027: s3loc[\u0027image_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b102aa4_c3247011","line":328,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E261 at least two spaces before inline comment","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        loc[\u0027metadata\u0027][\u0027store\u0027] \u003d store_name"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    # Rotate only the credentials, preserving host, path, query and fragment."},{"line_number":328,"context_line":"    expected_url \u003d _construct_s3_location(s3loc, store_instance) # For debugging purposes only"},{"line_number":329,"context_line":"    if loc[\u0027url\u0027] !\u003d expected_url:"},{"line_number":330,"context_line":"        LOG.info(\"S3 URL mismatch for image %(image_id)s, updating URL\","},{"line_number":331,"context_line":"                 {\u0027image_id\u0027: s3loc[\u0027image_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"6e1c3abe_4b3a0d64","line":328,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (94 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"}],"glance/location.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from collections import abc"},{"line_number":17,"context_line":"import copy"},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":"import urllib.parse as urlparse"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cryptography import exceptions as crypto_exception"},{"line_number":22,"context_line":"from cursive import exception as cursive_exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"31bffc31_6b1243ce","line":19,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: F401 \u0027urllib.parse as urlparse\u0027 imported but unused","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            continue"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        store_instance \u003d location_map[parsed.scheme][\u0027store\u0027]"},{"line_number":130,"context_line":"        expected_url \u003d store_utils._construct_s3_location(s3loc, store_instance)"},{"line_number":131,"context_line":"        # Check if credentials mismatch"},{"line_number":132,"context_line":"        if expected_url \u003d\u003d loc[\u0027url\u0027]:"},{"line_number":133,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"1325a9a7_7b5e978a","line":130,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"}],"glance/tests/unit/common/test_utils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import sqlite3"},{"line_number":21,"context_line":"import tempfile"},{"line_number":22,"context_line":"from unittest import mock"},{"line_number":23,"context_line":"from urllib.parse import urlparse"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import glance_store as store"},{"line_number":26,"context_line":"from glance_store._drivers import cinder"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac03f3d1_b8959c3b","line":23,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: F401 \u0027urllib.parse.urlparse\u0027 imported but unused","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"        s3key \u003d \u0027NEWKEY\u0027"},{"line_number":1492,"context_line":"        s3secret \u003d \u0027new_secret\u0027"},{"line_number":1493,"context_line":"        s3secret_fw_slash \u003d \u0027new_se///cret/slash\u0027"},{"line_number":1494,"context_line":"        s3host  \u003d \u0027host.com\u0027"},{"line_number":1495,"context_line":"        s3bucket \u003d \u0027bucket1\u0027"},{"line_number":1496,"context_line":"        stores \u003d {"},{"line_number":1497,"context_line":"            \u0027s3_store\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"255e9620_57f24039","line":1494,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E221 multiple spaces before operator","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        test_matrix \u003d ["},{"line_number":1520,"context_line":"            {"},{"line_number":1521,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s/%s/object1\u0027 % (s3host, s3bucket),"},{"line_number":1522,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s/%s/object1\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1523,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with fw slash secret\u0027"},{"line_number":1524,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":1,"id":"70bdad76_b940a59a","line":1521,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (92 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"        test_matrix \u003d ["},{"line_number":1520,"context_line":"            {"},{"line_number":1521,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s/%s/object1\u0027 % (s3host, s3bucket),"},{"line_number":1522,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s/%s/object1\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1523,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with fw slash secret\u0027"},{"line_number":1524,"context_line":"            },"},{"line_number":1525,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":1,"id":"a1999bf2_0f5e1c9f","line":1522,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (106 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"            {"},{"line_number":1521,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s/%s/object1\u0027 % (s3host, s3bucket),"},{"line_number":1522,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s/%s/object1\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1523,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with fw slash secret\u0027"},{"line_number":1524,"context_line":"            },"},{"line_number":1525,"context_line":"            {"},{"line_number":1526,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s:8080/%s/object2\u0027 % (s3host, s3bucket),"}],"source_content_type":"text/x-python","patch_set":1,"id":"18933d71_0c8d9e3d","line":1523,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (93 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with fw slash secret\u0027"},{"line_number":1524,"context_line":"            },"},{"line_number":1525,"context_line":"            {"},{"line_number":1526,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s:8080/%s/object2\u0027 % (s3host, s3bucket),"},{"line_number":1527,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object2\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1528,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with port\u0027"},{"line_number":1529,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":1,"id":"e4ccdd28_4a7f1da3","line":1526,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (97 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"            },"},{"line_number":1525,"context_line":"            {"},{"line_number":1526,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s:8080/%s/object2\u0027 % (s3host, s3bucket),"},{"line_number":1527,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object2\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1528,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with port\u0027"},{"line_number":1529,"context_line":"            },"},{"line_number":1530,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":1,"id":"010adcac_3c4aec72","line":1527,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (111 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1525,"context_line":"            {"},{"line_number":1526,"context_line":"                \u0027url\u0027: \u0027s3+https://old_key1:old_secret1@%s:8080/%s/object2\u0027 % (s3host, s3bucket),"},{"line_number":1527,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object2\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1528,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with port\u0027"},{"line_number":1529,"context_line":"            },"},{"line_number":1530,"context_line":"            {"},{"line_number":1531,"context_line":"                \u0027url\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"}],"source_content_type":"text/x-python","patch_set":1,"id":"a0e3acad_78295d44","line":1528,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1528,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url with port\u0027"},{"line_number":1529,"context_line":"            },"},{"line_number":1530,"context_line":"            {"},{"line_number":1531,"context_line":"                \u0027url\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1532,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1533,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fw slash secret\u0027"},{"line_number":1534,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":1,"id":"aafe726c_bce50d51","line":1531,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (108 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1529,"context_line":"            },"},{"line_number":1530,"context_line":"            {"},{"line_number":1531,"context_line":"                \u0027url\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1532,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1533,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fw slash secret\u0027"},{"line_number":1534,"context_line":"            },"},{"line_number":1535,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":1,"id":"b11a46cb_257974a9","line":1532,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (111 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"            {"},{"line_number":1531,"context_line":"                \u0027url\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1532,"context_line":"                \u0027expect\u0027: \u0027s3+https://%s:%s@%s:8080/%s/object3\u0027 % (s3key, s3secret_fw_slash, s3host, s3bucket),"},{"line_number":1533,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fw slash secret\u0027"},{"line_number":1534,"context_line":"            },"},{"line_number":1535,"context_line":"            {"},{"line_number":1536,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4a88921_44f5d4ae","line":1533,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (110 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"                \u0027store\u0027: \u0027s3_store_1\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fw slash secret\u0027"},{"line_number":1534,"context_line":"            },"},{"line_number":1535,"context_line":"            {"},{"line_number":1536,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1537,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1538,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment and query\u0027"},{"line_number":1539,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":1,"id":"f66e3286_fd413dd0","line":1536,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (104 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1534,"context_line":"            },"},{"line_number":1535,"context_line":"            {"},{"line_number":1536,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1537,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1538,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment and query\u0027"},{"line_number":1539,"context_line":"            },"},{"line_number":1540,"context_line":"                        {"}],"source_content_type":"text/x-python","patch_set":1,"id":"d6417dd8_4b67075c","line":1537,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (107 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1535,"context_line":"            {"},{"line_number":1536,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1537,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1538,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment and query\u0027"},{"line_number":1539,"context_line":"            },"},{"line_number":1540,"context_line":"                        {"},{"line_number":1541,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"}],"source_content_type":"text/x-python","patch_set":1,"id":"82a75192_2e2e4a03","line":1538,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (111 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1537,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object4?q\u003d1#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1538,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment and query\u0027"},{"line_number":1539,"context_line":"            },"},{"line_number":1540,"context_line":"                        {"},{"line_number":1541,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1542,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1543,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"0eb0fe0c_1b138f39","line":1540,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E131 continuation line unaligned for hanging indent","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1538,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment and query\u0027"},{"line_number":1539,"context_line":"            },"},{"line_number":1540,"context_line":"                        {"},{"line_number":1541,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1542,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1543,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment\u0027"},{"line_number":1544,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":1,"id":"6a1253fa_8b6aeba4","line":1541,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (100 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"            },"},{"line_number":1540,"context_line":"                        {"},{"line_number":1541,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1542,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1543,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment\u0027"},{"line_number":1544,"context_line":"            },"},{"line_number":1545,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":1,"id":"b5e9459c_3756327b","line":1542,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (103 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1540,"context_line":"                        {"},{"line_number":1541,"context_line":"                \u0027url\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1542,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s:8080/%s/object5#target\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1543,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment\u0027"},{"line_number":1544,"context_line":"            },"},{"line_number":1545,"context_line":"            {"},{"line_number":1546,"context_line":"                \u0027url\u0027: \u0027s3://old_key1:old_secret1@%s/s%s/object6\u0027 % (s3host, s3bucket),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5766df7f_42ca65f8","line":1543,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (101 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1543,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: False, \u0027desc\u0027: \u0027s3 url must not update with fragment\u0027"},{"line_number":1544,"context_line":"            },"},{"line_number":1545,"context_line":"            {"},{"line_number":1546,"context_line":"                \u0027url\u0027: \u0027s3://old_key1:old_secret1@%s/s%s/object6\u0027 % (s3host, s3bucket),"},{"line_number":1547,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s/s%s/object6\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1548,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url\u0027"},{"line_number":1549,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":1,"id":"c415034a_86432c21","line":1546,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"            },"},{"line_number":1545,"context_line":"            {"},{"line_number":1546,"context_line":"                \u0027url\u0027: \u0027s3://old_key1:old_secret1@%s/s%s/object6\u0027 % (s3host, s3bucket),"},{"line_number":1547,"context_line":"                \u0027expect\u0027: \u0027s3://%s:%s@%s/s%s/object6\u0027 % (s3key, s3secret, s3host, s3bucket),"},{"line_number":1548,"context_line":"                \u0027store\u0027: \u0027s3_store\u0027, \u0027changed\u0027: True, \u0027desc\u0027: \u0027s3 url\u0027"},{"line_number":1549,"context_line":"            },"},{"line_number":1550,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"048dfa75_552fc4cd","line":1547,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (92 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1555,"context_line":"            expected \u003d test_case[\u0027expect\u0027]"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"            loc \u003d self._create_s3_location(url, store_id)"},{"line_number":1558,"context_line":"            changed \u003d store_utils._update_s3_location_and_store_id(self.context, loc)"},{"line_number":1559,"context_line":""},{"line_number":1560,"context_line":"            self.assertEqual(changed, test_case[\u0027changed\u0027], \"test item [%s]\" % (test_case[\u0027desc\u0027]))"},{"line_number":1561,"context_line":"            self.assertEqual(loc[\u0027url\u0027], expected, \"test item [%s]\" % (test_case[\u0027desc\u0027]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"03f435d0_75d28eb6","line":1558,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (85 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"            loc \u003d self._create_s3_location(url, store_id)"},{"line_number":1558,"context_line":"            changed \u003d store_utils._update_s3_location_and_store_id(self.context, loc)"},{"line_number":1559,"context_line":""},{"line_number":1560,"context_line":"            self.assertEqual(changed, test_case[\u0027changed\u0027], \"test item [%s]\" % (test_case[\u0027desc\u0027]))"},{"line_number":1561,"context_line":"            self.assertEqual(loc[\u0027url\u0027], expected, \"test item [%s]\" % (test_case[\u0027desc\u0027]))"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fddca3b_a6cffc2d","line":1560,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (99 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"            changed \u003d store_utils._update_s3_location_and_store_id(self.context, loc)"},{"line_number":1559,"context_line":""},{"line_number":1560,"context_line":"            self.assertEqual(changed, test_case[\u0027changed\u0027], \"test item [%s]\" % (test_case[\u0027desc\u0027]))"},{"line_number":1561,"context_line":"            self.assertEqual(loc[\u0027url\u0027], expected, \"test item [%s]\" % (test_case[\u0027desc\u0027]))"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    @mock.patch(\u0027glance.common.store_utils.store_api\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f52c9129_9a1cff49","line":1561,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E501 line too long (90 \u003e 79 characters)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a028ef4a67ba556994f8537ec49ed88f809559bb","unresolved":false,"context_lines":[{"line_number":1561,"context_line":"            self.assertEqual(loc[\u0027url\u0027], expected, \"test item [%s]\" % (test_case[\u0027desc\u0027]))"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    @mock.patch(\u0027glance.common.store_utils.store_api\u0027)"},{"line_number":1565,"context_line":"    @mock.patch(\u0027glance.common.store_utils.CONF\u0027)"},{"line_number":1566,"context_line":"    def test_update_s3_credentials_different_object_path("},{"line_number":1567,"context_line":"            self, mock_conf, mock_store_api):"}],"source_content_type":"text/x-python","patch_set":1,"id":"8ca43a49_c60aaae2","line":1564,"updated":"2026-06-25 17:02:15.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"c7cb8c1aa5c6c4f2eb375438ca0ff4a58428bb77"}]}
