)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aaf43bf83e7387650841033b6683458b1705c21b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2020-03-03 07:01:39 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Revive the S3 driver and support multiple store"},{"line_number":8,"context_line":"configuration"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"* Change the SDK version(boto to boto3) that used"},{"line_number":11,"context_line":"  when connecting to S3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1fa4df85_d2632c41","line":8,"updated":"2020-03-05 14:03:20.000000000","message":"Keep summary on one line with a blank line between the summary and the more detailed description.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"c0a2283991727c5b95663a432b99f79a62ccf492","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2020-03-03 07:01:39 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Revive the S3 driver and support multiple store"},{"line_number":8,"context_line":"configuration"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"* Change the SDK version(boto to boto3) that used"},{"line_number":11,"context_line":"  when connecting to S3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1fa4df85_761567e4","line":8,"in_reply_to":"1fa4df85_d2632c41","updated":"2020-03-08 12:28:17.000000000","message":"Drop items and add detail description.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3d2a3d59712366e2d4285820f76ec4a0684d22a3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to use the new version."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I203134837319080ead96da69048baf90086d2117"},{"line_number":16,"context_line":"Implements: blueprint bp/re-support-s3-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1fa4df85_84944938","line":16,"range":{"start_line":16,"start_character":22,"end_line":16,"end_character":25},"updated":"2020-03-13 09:18:39.000000000","message":"remove this","commit_id":"b259bad03aca60d785fa51701efd147d5e5095ae"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"ac1b486178ccce6ed782d55fa2336fde34d3ed45","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to use the new version."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I203134837319080ead96da69048baf90086d2117"},{"line_number":16,"context_line":"Implements: blueprint bp/re-support-s3-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1fa4df85_64723f7f","line":16,"range":{"start_line":16,"start_character":22,"end_line":16,"end_character":25},"in_reply_to":"1fa4df85_84944938","updated":"2020-03-13 10:04:15.000000000","message":"deleted","commit_id":"b259bad03aca60d785fa51701efd147d5e5095ae"}],"glance_store/_drivers/s3.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b423e142bbf54ec5beb41614b8082a70824d03d9","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        return (\u0027s3\u0027, \u0027s3+http\u0027, \u0027s3+https\u0027)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def _set_url_prefix(self):"},{"line_number":410,"context_line":"        self._url_prefix \u003d \"s3://\""},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def configure_add(self):"},{"line_number":413,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_fb4a8caa","line":410,"range":{"start_line":410,"start_character":8,"end_line":410,"end_character":33},"updated":"2019-11-25 07:39:51.000000000","message":"if multiple s3 stores are configured then how this will help to retrieve which store is requested as url prefix will be same for all stores?","commit_id":"19b4e114b5b011a442f20bbdea05243030d839d0"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"7319d4070095e82700c166fd217549ad93ee2270","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        return (\u0027s3\u0027, \u0027s3+http\u0027, \u0027s3+https\u0027)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def _set_url_prefix(self):"},{"line_number":410,"context_line":"        self._url_prefix \u003d \"s3://\""},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def configure_add(self):"},{"line_number":413,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5d06f1cf","line":410,"range":{"start_line":410,"start_character":8,"end_line":410,"end_character":33},"in_reply_to":"3fa7e38b_fb4a8caa","updated":"2019-12-16 11:58:26.000000000","message":"Sorry for the late reply.\nIndeed, url_prefix is the same for all stores, so it was not possible to determine which store is required.\nTherefore, I change the information to be given to url_prefix.\nThank you.","commit_id":"19b4e114b5b011a442f20bbdea05243030d839d0"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import tempfile"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from boto3.session import Session"},{"line_number":25,"context_line":"from botocore.client import Config"},{"line_number":26,"context_line":"from botocore.utils import LABEL_RE"},{"line_number":27,"context_line":"from botocore.exceptions import ClientError, InvalidDNSNameError"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import eventlet"},{"line_number":30,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_cc3bf1ce","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":64},"updated":"2020-02-28 06:36:25.000000000","message":"These imports are not as per openstack standards, please follow guidelines form https://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import tempfile"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from boto3.session import Session"},{"line_number":25,"context_line":"from botocore.client import Config"},{"line_number":26,"context_line":"from botocore.utils import LABEL_RE"},{"line_number":27,"context_line":"from botocore.exceptions import ClientError, InvalidDNSNameError"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import eventlet"},{"line_number":30,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_943b97e9","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":64},"in_reply_to":"1fa4df85_cc3bf1ce","updated":"2020-03-02 23:50:10.000000000","message":"Done","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from botocore.client import Config"},{"line_number":26,"context_line":"from botocore.utils import LABEL_RE"},{"line_number":27,"context_line":"from botocore.exceptions import ClientError, InvalidDNSNameError"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import eventlet"},{"line_number":30,"context_line":"from oslo_config import cfg"},{"line_number":31,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_d1886ac7","line":28,"updated":"2020-02-28 06:36:25.000000000","message":"why this separation?","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from botocore.client import Config"},{"line_number":26,"context_line":"from botocore.utils import LABEL_RE"},{"line_number":27,"context_line":"from botocore.exceptions import ClientError, InvalidDNSNameError"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import eventlet"},{"line_number":30,"context_line":"from oslo_config import cfg"},{"line_number":31,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_342ae38f","line":28,"in_reply_to":"1fa4df85_d1886ac7","updated":"2020-03-02 23:50:10.000000000","message":"sorry, remove a line.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    * s3_store_bucket_url_format"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"\"\"\"),"},{"line_number":123,"context_line":"    cfg.StrOpt(\u0027s3_store_object_buffer_dir\u0027,"},{"line_number":124,"context_line":"               help\u003d\"\"\""},{"line_number":125,"context_line":"The local directory where uploads will be staged before they are transferred"},{"line_number":126,"context_line":"into S3."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This configuration option takes an absolute directory path to buffer image"},{"line_number":129,"context_line":"segments before upload to S3."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Possible values:"},{"line_number":132,"context_line":"    * Any string value representing an absolute directory path"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Related Options:"},{"line_number":135,"context_line":"    * None"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"\"\"\"),"},{"line_number":138,"context_line":"    cfg.BoolOpt(\u0027s3_store_create_bucket_on_put\u0027,"},{"line_number":139,"context_line":"                default\u003dFalse,"},{"line_number":140,"context_line":"                help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_b18daed4","line":137,"range":{"start_line":123,"start_character":4,"end_line":137,"end_character":5},"updated":"2020-02-28 06:36:25.000000000","message":"New import workflow already has staging mechanism where it stages the data in local directory and then imported to glance backend. IMO we should document it very clearly to avoid double staging of the data in local machine. For normal create image workflow this is ok.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    * s3_store_bucket_url_format"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"\"\"\"),"},{"line_number":123,"context_line":"    cfg.StrOpt(\u0027s3_store_object_buffer_dir\u0027,"},{"line_number":124,"context_line":"               help\u003d\"\"\""},{"line_number":125,"context_line":"The local directory where uploads will be staged before they are transferred"},{"line_number":126,"context_line":"into S3."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This configuration option takes an absolute directory path to buffer image"},{"line_number":129,"context_line":"segments before upload to S3."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Possible values:"},{"line_number":132,"context_line":"    * Any string value representing an absolute directory path"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Related Options:"},{"line_number":135,"context_line":"    * None"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"\"\"\"),"},{"line_number":138,"context_line":"    cfg.BoolOpt(\u0027s3_store_create_bucket_on_put\u0027,"},{"line_number":139,"context_line":"                default\u003dFalse,"},{"line_number":140,"context_line":"                help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_ef023609","line":137,"range":{"start_line":123,"start_character":4,"end_line":137,"end_character":5},"in_reply_to":"1fa4df85_b18daed4","updated":"2020-03-02 23:50:10.000000000","message":"thanks for information. this is no longer needed so deleted it.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Note: You can only split up to 10,000 images."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Possible values:"},{"line_number":185,"context_line":"    * s3_store_large_object_chunk_size"},{"line_number":186,"context_line":"    * s3_store_thread_pools"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Related Options:"},{"line_number":189,"context_line":"    * None"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_31bbfe72","line":186,"range":{"start_line":185,"start_character":6,"end_line":186,"end_character":27},"updated":"2020-02-28 06:36:25.000000000","message":"This should come under related options section.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Note: You can only split up to 10,000 images."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Possible values:"},{"line_number":185,"context_line":"    * s3_store_large_object_chunk_size"},{"line_number":186,"context_line":"    * s3_store_thread_pools"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Related Options:"},{"line_number":189,"context_line":"    * None"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_2f184e73","line":186,"range":{"start_line":185,"start_character":6,"end_line":186,"end_character":27},"in_reply_to":"1fa4df85_31bbfe72","updated":"2020-03-02 23:50:10.000000000","message":"fix it","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def run_upload(s3_client, bucket, key, part):"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    Upload the upload part into S3 and set returned etag and size"},{"line_number":246,"context_line":"    to its part info."},{"line_number":247,"context_line":"    \"\"\""},{"line_number":248,"context_line":"    pnum \u003d part.partnum"},{"line_number":249,"context_line":"    bsize \u003d part.chunks"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_3170dedc","line":246,"range":{"start_line":245,"start_character":4,"end_line":246,"end_character":21},"updated":"2020-02-28 06:36:25.000000000","message":"Kindly follow the openstack standards for docstrings.\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#docstrings","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def run_upload(s3_client, bucket, key, part):"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    Upload the upload part into S3 and set returned etag and size"},{"line_number":246,"context_line":"    to its part info."},{"line_number":247,"context_line":"    \"\"\""},{"line_number":248,"context_line":"    pnum \u003d part.partnum"},{"line_number":249,"context_line":"    bsize \u003d part.chunks"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_6f3c06bf","line":246,"range":{"start_line":245,"start_character":4,"end_line":246,"end_character":21},"in_reply_to":"1fa4df85_3170dedc","updated":"2020-03-02 23:50:10.000000000","message":"I fixed it, but the method that exists in all drivers follows that of docstring.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        result \u003d getattr(store_conf, param)"},{"line_number":489,"context_line":"        if not result:"},{"line_number":490,"context_line":"            if param \u003d\u003d \u0027s3_store_object_buffer_dir\u0027:"},{"line_number":491,"context_line":"                return tempfile.gettempdir()"},{"line_number":492,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":493,"context_line":"                return result"},{"line_number":494,"context_line":"            reason \u003d (\"Could not find %(param)s in configuration \""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_ec0d8d35","line":491,"range":{"start_line":490,"start_character":12,"end_line":491,"end_character":44},"updated":"2020-02-28 06:36:25.000000000","message":"I am not sure about this,\nif this option is not set in conf file and as it does not have default value then it will return path of temp dir for staging.\n\n1. What if user don\u0027t want use staging?\n2. What if user is using new import workflow for creating image (create-image-via-import) which is already has staging provision?\n\nWe should avoid staging data twice.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        result \u003d getattr(store_conf, param)"},{"line_number":489,"context_line":"        if not result:"},{"line_number":490,"context_line":"            if param \u003d\u003d \u0027s3_store_object_buffer_dir\u0027:"},{"line_number":491,"context_line":"                return tempfile.gettempdir()"},{"line_number":492,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":493,"context_line":"                return result"},{"line_number":494,"context_line":"            reason \u003d (\"Could not find %(param)s in configuration \""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_ef879660","line":491,"range":{"start_line":490,"start_character":12,"end_line":491,"end_character":44},"in_reply_to":"1fa4df85_ec0d8d35","updated":"2020-03-02 23:50:10.000000000","message":"I removed this option, so I think that 1 and 2 will be resolved by new import workflow.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        if url_format \u003d\u003d \u0027virtual\u0027 and not valid_dns_name(bucket_name):"},{"line_number":513,"context_line":"            raise InvalidDNSNameError(bucket_name\u003dbucket_name)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        return session.client("},{"line_number":516,"context_line":"            service_name\u003d\u0027s3\u0027,"},{"line_number":517,"context_line":"            endpoint_url\u003ds3_host,"},{"line_number":518,"context_line":"            use_ssl\u003d(loc.scheme \u003d\u003d \u0027s3+https\u0027),"},{"line_number":519,"context_line":"            config\u003dconfig"},{"line_number":520,"context_line":"        ) if location \u003d\u003d \u0027\u0027 else session.client("},{"line_number":521,"context_line":"            service_name\u003d\u0027s3\u0027,"},{"line_number":522,"context_line":"            region_name\u003dlocation,"},{"line_number":523,"context_line":"            use_ssl\u003d(loc.scheme \u003d\u003d \u0027s3+https\u0027),"},{"line_number":524,"context_line":"            config\u003dconfig"},{"line_number":525,"context_line":"        )"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    def _operation_set(self, loc):"},{"line_number":528,"context_line":"        return self._create_s3_client(loc), loc.bucket, loc.key"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_6c50bd0b","line":525,"range":{"start_line":515,"start_character":8,"end_line":525,"end_character":9},"updated":"2020-02-28 06:36:25.000000000","message":"can we do something like this to simplify \n\nregion_name \u003d None\nif location:\n    region_name \u003d location\n\nreturn session.client(\n    service_name\u003d\u0027s3\u0027,\n    region_name\u003dlocation,\n    use_ssl\u003d(loc.scheme \u003d\u003d \u0027s3+https\u0027),\n    config\u003dconfig)","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        if url_format \u003d\u003d \u0027virtual\u0027 and not valid_dns_name(bucket_name):"},{"line_number":513,"context_line":"            raise InvalidDNSNameError(bucket_name\u003dbucket_name)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        return session.client("},{"line_number":516,"context_line":"            service_name\u003d\u0027s3\u0027,"},{"line_number":517,"context_line":"            endpoint_url\u003ds3_host,"},{"line_number":518,"context_line":"            use_ssl\u003d(loc.scheme \u003d\u003d \u0027s3+https\u0027),"},{"line_number":519,"context_line":"            config\u003dconfig"},{"line_number":520,"context_line":"        ) if location \u003d\u003d \u0027\u0027 else session.client("},{"line_number":521,"context_line":"            service_name\u003d\u0027s3\u0027,"},{"line_number":522,"context_line":"            region_name\u003dlocation,"},{"line_number":523,"context_line":"            use_ssl\u003d(loc.scheme \u003d\u003d \u0027s3+https\u0027),"},{"line_number":524,"context_line":"            config\u003dconfig"},{"line_number":525,"context_line":"        )"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    def _operation_set(self, loc):"},{"line_number":528,"context_line":"        return self._create_s3_client(loc), loc.bucket, loc.key"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_8f7062a7","line":525,"range":{"start_line":515,"start_character":8,"end_line":525,"end_character":9},"in_reply_to":"1fa4df85_6c50bd0b","updated":"2020-03-02 23:50:10.000000000","message":"OK. Thanks for your advice.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"028d1e8a113c3c2cc2cd08891cd8c8aa44ff6f4c","unresolved":false,"context_lines":[{"line_number":698,"context_line":"               \"for %s\") % self._sanitize(loc.get_uri())"},{"line_number":699,"context_line":"        LOG.debug(msg)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        tmpdir \u003d self.s3_store_object_buffer_dir"},{"line_number":702,"context_line":"        temp_file \u003d tempfile.NamedTemporaryFile(dir\u003dtmpdir)"},{"line_number":703,"context_line":"        os_hash_value \u003d hashlib.new(str(hashing_algo))"},{"line_number":704,"context_line":"        checksum \u003d hashlib.md5()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_4c7621a7","line":701,"range":{"start_line":701,"start_character":8,"end_line":701,"end_character":48},"updated":"2020-02-28 06:36:25.000000000","message":"ditto, what if new import workflow is used?","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"640b476a5c01f486fecb7421fa2d33dbff94cc28","unresolved":false,"context_lines":[{"line_number":698,"context_line":"               \"for %s\") % self._sanitize(loc.get_uri())"},{"line_number":699,"context_line":"        LOG.debug(msg)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        tmpdir \u003d self.s3_store_object_buffer_dir"},{"line_number":702,"context_line":"        temp_file \u003d tempfile.NamedTemporaryFile(dir\u003dtmpdir)"},{"line_number":703,"context_line":"        os_hash_value \u003d hashlib.new(str(hashing_algo))"},{"line_number":704,"context_line":"        checksum \u003d hashlib.md5()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_4f982abf","line":701,"range":{"start_line":701,"start_character":8,"end_line":701,"end_character":48},"in_reply_to":"1fa4df85_4c7621a7","updated":"2020-03-02 23:50:10.000000000","message":"I removed this option.","commit_id":"9a5b4a15f75e64a07fb424a429377c421254f580"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":299,"context_line":"    def parse_uri(self, uri):"},{"line_number":300,"context_line":"        \"\"\""},{"line_number":301,"context_line":"        Parse URLs. This method fixes an issue where credentials specified"},{"line_number":302,"context_line":"        in the URL are interpreted differently in Python 2.6.1+ than prior"},{"line_number":303,"context_line":"        versions of Python."},{"line_number":304,"context_line":"        Note that an Amazon AWS secret key can contain the forward slash,"},{"line_number":305,"context_line":"        which is entirely retarded, and breaks urlparse miserably."}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_7202783f","line":302,"range":{"start_line":302,"start_character":50,"end_line":302,"end_character":62},"updated":"2020-03-05 14:18:34.000000000","message":"We only support py36 and above now. Is this still needed?","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":299,"context_line":"    def parse_uri(self, uri):"},{"line_number":300,"context_line":"        \"\"\""},{"line_number":301,"context_line":"        Parse URLs. This method fixes an issue where credentials specified"},{"line_number":302,"context_line":"        in the URL are interpreted differently in Python 2.6.1+ than prior"},{"line_number":303,"context_line":"        versions of Python."},{"line_number":304,"context_line":"        Note that an Amazon AWS secret key can contain the forward slash,"},{"line_number":305,"context_line":"        which is entirely retarded, and breaks urlparse miserably."}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_d658dbfa","line":302,"range":{"start_line":302,"start_character":50,"end_line":302,"end_character":62},"in_reply_to":"1fa4df85_7202783f","updated":"2020-03-08 12:19:59.000000000","message":"It doesn\u0027t seem necessary so i deleted this statement.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                       \"s3+https:// scheme, like so: \""},{"line_number":318,"context_line":"                       \"s3+https://accesskey:secretkey@\""},{"line_number":319,"context_line":"                       \"s3.amazonaws.com/bucket/key-id\")"},{"line_number":320,"context_line":"            LOG.info(_LI(\"Invalid store uri: %s\") % reason)"},{"line_number":321,"context_line":"            raise exceptions.BadStoreUri(message\u003dreason)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        pieces \u003d urllib.parse.urlparse(uri)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_7287d8b6","line":320,"range":{"start_line":320,"start_character":49,"end_line":320,"end_character":51},"updated":"2020-03-05 14:18:34.000000000","message":"Use , not % to pass reason in to the LOG.info call as an argument.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                       \"s3+https:// scheme, like so: \""},{"line_number":318,"context_line":"                       \"s3+https://accesskey:secretkey@\""},{"line_number":319,"context_line":"                       \"s3.amazonaws.com/bucket/key-id\")"},{"line_number":320,"context_line":"            LOG.info(_LI(\"Invalid store uri: %s\") % reason)"},{"line_number":321,"context_line":"            raise exceptions.BadStoreUri(message\u003dreason)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        pieces \u003d urllib.parse.urlparse(uri)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_9676e36f","line":320,"range":{"start_line":320,"start_character":49,"end_line":320,"end_character":51},"in_reply_to":"1fa4df85_7287d8b6","updated":"2020-03-08 12:19:59.000000000","message":"I changed \"%\" to \",\". Thanks for advice.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        if not result:"},{"line_number":463,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":464,"context_line":"                return result"},{"line_number":465,"context_line":"            reason \u003d (\"Could not find %(param)s in configuration \""},{"line_number":466,"context_line":"                      \"options.\" % {\u0027param\u0027: param})"},{"line_number":467,"context_line":"            LOG.debug(reason)"},{"line_number":468,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_d2324c10","line":465,"range":{"start_line":465,"start_character":21,"end_line":465,"end_character":22},"updated":"2020-03-05 14:18:34.000000000","message":"This is used in the exception message, so it should be marked for translation with _().","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        if not result:"},{"line_number":463,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":464,"context_line":"                return result"},{"line_number":465,"context_line":"            reason \u003d (\"Could not find %(param)s in configuration \""},{"line_number":466,"context_line":"                      \"options.\" % {\u0027param\u0027: param})"},{"line_number":467,"context_line":"            LOG.debug(reason)"},{"line_number":468,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_566ceb9a","line":465,"range":{"start_line":465,"start_character":21,"end_line":465,"end_character":22},"in_reply_to":"1fa4df85_d2324c10","updated":"2020-03-08 12:19:59.000000000","message":"changed it. thanks.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        key \u003d s3_client.get_object(Bucket\u003dbucket, Key\u003dkey)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        msg \u003d (\"Retrieved image object from S3 using (s3_host\u003d%(s3_host)s, \""},{"line_number":537,"context_line":"               \"access_key\u003d%(accesskey)s, bucket\u003d%(bucket)s, \""},{"line_number":538,"context_line":"               \"key\u003d%(key)s)\" % ({\u0027s3_host\u0027: loc.s3serviceurl,"},{"line_number":539,"context_line":"                                  \u0027accesskey\u0027: loc.accesskey,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_3229609a","line":536,"range":{"start_line":536,"start_character":8,"end_line":536,"end_character":11},"updated":"2020-03-05 14:18:34.000000000","message":"Since this is only used in the debug call, this should just be put directly into the logger call and % should be changed to , so the logger can handle the string formatting only if and when it is needed.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        key \u003d s3_client.get_object(Bucket\u003dbucket, Key\u003dkey)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        msg \u003d (\"Retrieved image object from S3 using (s3_host\u003d%(s3_host)s, \""},{"line_number":537,"context_line":"               \"access_key\u003d%(accesskey)s, bucket\u003d%(bucket)s, \""},{"line_number":538,"context_line":"               \"key\u003d%(key)s)\" % ({\u0027s3_host\u0027: loc.s3serviceurl,"},{"line_number":539,"context_line":"                                  \u0027accesskey\u0027: loc.accesskey,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_7667a7b8","line":536,"range":{"start_line":536,"start_character":8,"end_line":536,"end_character":11},"in_reply_to":"1fa4df85_3229609a","updated":"2020-03-08 12:19:59.000000000","message":"changed according to comment.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                       % {\u0027bucket\u0027: bucket})"},{"line_number":618,"context_line":"                raise glance_store.BackendException(msg)"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        msg \u003d (_(\"Adding image object to S3 using (s3_host\u003d%(s3_host)s, \""},{"line_number":621,"context_line":"                 \"access_key\u003d%(access_key)s, bucket\u003d%(bucket)s, \""},{"line_number":622,"context_line":"                 \"key\u003d%(key)s)\") % ({\u0027s3_host\u0027: self.s3_host,"},{"line_number":623,"context_line":"                                     \u0027access_key\u0027: loc.accesskey,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_7d06c91e","line":620,"range":{"start_line":620,"start_character":8,"end_line":620,"end_character":17},"updated":"2020-03-05 14:18:34.000000000","message":"This is only used in the LOG.debug call, so it should not be translated. Also then better to get rid of the temporary variable and put this right into the log call with % changed to ,.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                       % {\u0027bucket\u0027: bucket})"},{"line_number":618,"context_line":"                raise glance_store.BackendException(msg)"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        msg \u003d (_(\"Adding image object to S3 using (s3_host\u003d%(s3_host)s, \""},{"line_number":621,"context_line":"                 \"access_key\u003d%(access_key)s, bucket\u003d%(bucket)s, \""},{"line_number":622,"context_line":"                 \"key\u003d%(key)s)\") % ({\u0027s3_host\u0027: self.s3_host,"},{"line_number":623,"context_line":"                                     \u0027access_key\u0027: loc.accesskey,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_360b6fd6","line":620,"range":{"start_line":620,"start_character":8,"end_line":620,"end_character":17},"in_reply_to":"1fa4df85_7d06c91e","updated":"2020-03-08 12:19:59.000000000","message":"deleted msg variable and \"_\".","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":623,"context_line":"                                     \u0027access_key\u0027: loc.accesskey,"},{"line_number":624,"context_line":"                                     \u0027bucket\u0027: bucket, \u0027key\u0027: key}))"},{"line_number":625,"context_line":"        LOG.debug(msg)"},{"line_number":626,"context_line":"        LOG.debug(\"Uploading an image file to S3 for %s\" %"},{"line_number":627,"context_line":"                  self._sanitize(loc.get_uri()))"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        if not self._object_exists(s3_client, bucket, key):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_3d14d143","line":626,"range":{"start_line":626,"start_character":57,"end_line":626,"end_character":58},"updated":"2020-03-05 14:18:34.000000000","message":",","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":623,"context_line":"                                     \u0027access_key\u0027: loc.accesskey,"},{"line_number":624,"context_line":"                                     \u0027bucket\u0027: bucket, \u0027key\u0027: key}))"},{"line_number":625,"context_line":"        LOG.debug(msg)"},{"line_number":626,"context_line":"        LOG.debug(\"Uploading an image file to S3 for %s\" %"},{"line_number":627,"context_line":"                  self._sanitize(loc.get_uri()))"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        if not self._object_exists(s3_client, bucket, key):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_d60d3be8","line":626,"range":{"start_line":626,"start_character":57,"end_line":626,"end_character":58},"in_reply_to":"1fa4df85_3d14d143","updated":"2020-03-08 12:19:59.000000000","message":"changed","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        # Add store backend information to location metadata"},{"line_number":692,"context_line":"        metadata \u003d {}"},{"line_number":693,"context_line":"        if self.backend_group:"},{"line_number":694,"context_line":"            metadata[\u0027store\u0027] \u003d u\"%s\" % self.backend_group"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        LOG.debug(\"Wrote %(size)d bytes to S3 key named %(key)s \""},{"line_number":697,"context_line":"                  \"with checksum %(checksum_hex)s\" %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_dd2edd90","line":694,"range":{"start_line":694,"start_character":32,"end_line":694,"end_character":37},"updated":"2020-03-05 14:18:34.000000000","message":"I don\u0027t think this is necessary now.","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        # Add store backend information to location metadata"},{"line_number":692,"context_line":"        metadata \u003d {}"},{"line_number":693,"context_line":"        if self.backend_group:"},{"line_number":694,"context_line":"            metadata[\u0027store\u0027] \u003d u\"%s\" % self.backend_group"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        LOG.debug(\"Wrote %(size)d bytes to S3 key named %(key)s \""},{"line_number":697,"context_line":"                  \"with checksum %(checksum_hex)s\" %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_f6107702","line":694,"range":{"start_line":694,"start_character":32,"end_line":694,"end_character":37},"in_reply_to":"1fa4df85_dd2edd90","updated":"2020-03-08 12:19:59.000000000","message":"delete this variable","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            metadata[\u0027store\u0027] \u003d u\"%s\" % self.backend_group"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        LOG.debug(\"Wrote %(size)d bytes to S3 key named %(key)s \""},{"line_number":697,"context_line":"                  \"with checksum %(checksum_hex)s\" %"},{"line_number":698,"context_line":"                  {\u0027size\u0027: image_size, \u0027key\u0027: key,"},{"line_number":699,"context_line":"                   \u0027checksum_hex\u0027: checksum_hex})"},{"line_number":700,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_7d1fa95a","line":697,"range":{"start_line":697,"start_character":51,"end_line":697,"end_character":52},"updated":"2020-03-05 14:18:34.000000000","message":",","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            metadata[\u0027store\u0027] \u003d u\"%s\" % self.backend_group"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        LOG.debug(\"Wrote %(size)d bytes to S3 key named %(key)s \""},{"line_number":697,"context_line":"                  \"with checksum %(checksum_hex)s\" %"},{"line_number":698,"context_line":"                  {\u0027size\u0027: image_size, \u0027key\u0027: key,"},{"line_number":699,"context_line":"                   \u0027checksum_hex\u0027: checksum_hex})"},{"line_number":700,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_96fb43bf","line":697,"range":{"start_line":697,"start_character":51,"end_line":697,"end_character":52},"in_reply_to":"1fa4df85_7d1fa95a","updated":"2020-03-08 12:19:59.000000000","message":"changed","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        pool \u003d eventlet.greenpool.GreenPool(size\u003dpool_size)"},{"line_number":723,"context_line":"        mpu \u003d s3_client.create_multipart_upload(Bucket\u003dbucket, Key\u003dkey)"},{"line_number":724,"context_line":"        upload_id \u003d mpu[\u0027UploadId\u0027]"},{"line_number":725,"context_line":"        LOG.debug(\"Multipart initiate key\u003d%(key)s, UploadId\u003d%(UploadId)s\" %"},{"line_number":726,"context_line":"                  {\u0027key\u0027: key, \u0027UploadId\u0027: upload_id})"},{"line_number":727,"context_line":"        cstart \u003d 0"},{"line_number":728,"context_line":"        plist \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_3d3db1c3","line":725,"range":{"start_line":725,"start_character":73,"end_line":725,"end_character":75},"updated":"2020-03-05 14:18:34.000000000","message":",","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        pool \u003d eventlet.greenpool.GreenPool(size\u003dpool_size)"},{"line_number":723,"context_line":"        mpu \u003d s3_client.create_multipart_upload(Bucket\u003dbucket, Key\u003dkey)"},{"line_number":724,"context_line":"        upload_id \u003d mpu[\u0027UploadId\u0027]"},{"line_number":725,"context_line":"        LOG.debug(\"Multipart initiate key\u003d%(key)s, UploadId\u003d%(UploadId)s\" %"},{"line_number":726,"context_line":"                  {\u0027key\u0027: key, \u0027UploadId\u0027: upload_id})"},{"line_number":727,"context_line":"        cstart \u003d 0"},{"line_number":728,"context_line":"        plist \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_56014bae","line":725,"range":{"start_line":725,"start_character":73,"end_line":725,"end_character":75},"in_reply_to":"1fa4df85_3d3db1c3","updated":"2020-03-08 12:19:59.000000000","message":"changed","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":801,"context_line":"                         \"UploadId\u003d%(UploadId)s \""},{"line_number":802,"context_line":"                         \"Wrote %(total_size)d bytes to S3 key \""},{"line_number":803,"context_line":"                         \"named %(key)s \""},{"line_number":804,"context_line":"                         \"with checksum %(checksum_hex)s\") %"},{"line_number":805,"context_line":"                     {\u0027key\u0027: key, \u0027UploadId\u0027: upload_id,"},{"line_number":806,"context_line":"                      \u0027total_size\u0027: total_size, \u0027checksum_hex\u0027: checksum_hex})"},{"line_number":807,"context_line":"            return loc.get_uri(), total_size, checksum_hex, hash_hex, metadata"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_5d3aedcb","line":804,"range":{"start_line":804,"start_character":58,"end_line":804,"end_character":60},"updated":"2020-03-05 14:18:34.000000000","message":",","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":801,"context_line":"                         \"UploadId\u003d%(UploadId)s \""},{"line_number":802,"context_line":"                         \"Wrote %(total_size)d bytes to S3 key \""},{"line_number":803,"context_line":"                         \"named %(key)s \""},{"line_number":804,"context_line":"                         \"with checksum %(checksum_hex)s\") %"},{"line_number":805,"context_line":"                     {\u0027key\u0027: key, \u0027UploadId\u0027: upload_id,"},{"line_number":806,"context_line":"                      \u0027total_size\u0027: total_size, \u0027checksum_hex\u0027: checksum_hex})"},{"line_number":807,"context_line":"            return loc.get_uri(), total_size, checksum_hex, hash_hex, metadata"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_163193a3","line":804,"range":{"start_line":804,"start_character":58,"end_line":804,"end_character":60},"in_reply_to":"1fa4df85_5d3aedcb","updated":"2020-03-08 12:19:59.000000000","message":"changed","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d1926a95eae681a3a69a5b3138a73d9ea264abd5","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        s3_client.abort_multipart_upload(Bucket\u003dbucket, Key\u003dkey,"},{"line_number":811,"context_line":"                                         UploadId\u003dupload_id)"},{"line_number":812,"context_line":"        LOG.error(_LE(\"Some parts failed to upload to S3. \""},{"line_number":813,"context_line":"                      \"Aborted the key\u003d%(key)s\") % {\u0027key\u0027: key})"},{"line_number":814,"context_line":"        msg \u003d (_(\"Failed to add image object to S3. key\u003d%(key)s\")"},{"line_number":815,"context_line":"               % {\u0027key\u0027: key})"},{"line_number":816,"context_line":"        raise glance_store.BackendException(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_1d30f5e7","line":813,"range":{"start_line":813,"start_character":48,"end_line":813,"end_character":50},"updated":"2020-03-05 14:18:34.000000000","message":",","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d22a730f9aee53bd4b74a8acb78f80b621c391db","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        s3_client.abort_multipart_upload(Bucket\u003dbucket, Key\u003dkey,"},{"line_number":811,"context_line":"                                         UploadId\u003dupload_id)"},{"line_number":812,"context_line":"        LOG.error(_LE(\"Some parts failed to upload to S3. \""},{"line_number":813,"context_line":"                      \"Aborted the key\u003d%(key)s\") % {\u0027key\u0027: key})"},{"line_number":814,"context_line":"        msg \u003d (_(\"Failed to add image object to S3. key\u003d%(key)s\")"},{"line_number":815,"context_line":"               % {\u0027key\u0027: key})"},{"line_number":816,"context_line":"        raise glance_store.BackendException(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_3634cf92","line":813,"range":{"start_line":813,"start_character":48,"end_line":813,"end_character":50},"in_reply_to":"1fa4df85_1d30f5e7","updated":"2020-03-08 12:19:59.000000000","message":"changed","commit_id":"a60566a09e6c33aef5f4c0d5be26bac87a3bd04f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"332e4d88fef4f1489b844fac63eecbacbd53547c","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                       \"s3+https:// scheme, like so: \""},{"line_number":316,"context_line":"                       \"s3+https://accesskey:secretkey@\""},{"line_number":317,"context_line":"                       \"s3.amazonaws.com/bucket/key-id\")"},{"line_number":318,"context_line":"            LOG.info(_(\"Invalid store uri: %s\"), reason)"},{"line_number":319,"context_line":"            raise exceptions.BadStoreUri(message\u003dreason)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        pieces \u003d urllib.parse.urlparse(uri)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_2d119a54","line":318,"range":{"start_line":318,"start_character":21,"end_line":318,"end_character":23},"updated":"2020-03-12 14:09:35.000000000","message":"Logging call shouldn\u0027t be translated.","commit_id":"b259bad03aca60d785fa51701efd147d5e5095ae"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"334bc89872d131e0a240797dacf32c53ca63a1c2","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                       \"s3+https:// scheme, like so: \""},{"line_number":316,"context_line":"                       \"s3+https://accesskey:secretkey@\""},{"line_number":317,"context_line":"                       \"s3.amazonaws.com/bucket/key-id\")"},{"line_number":318,"context_line":"            LOG.info(_(\"Invalid store uri: %s\"), reason)"},{"line_number":319,"context_line":"            raise exceptions.BadStoreUri(message\u003dreason)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        pieces \u003d urllib.parse.urlparse(uri)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_2a589b54","line":318,"range":{"start_line":318,"start_character":21,"end_line":318,"end_character":23},"in_reply_to":"1fa4df85_2d119a54","updated":"2020-03-12 17:36:46.000000000","message":"I changed to not translate","commit_id":"b259bad03aca60d785fa51701efd147d5e5095ae"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"332e4d88fef4f1489b844fac63eecbacbd53547c","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        if self.backend_group:"},{"line_number":689,"context_line":"            metadata[\u0027store\u0027] \u003d self.backend_group"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        LOG.debug((\"Wrote %(size)d bytes to S3 key named %(key)s \""},{"line_number":692,"context_line":"                   \"with checksum %(checksum)s\"),"},{"line_number":693,"context_line":"                  {\u0027size\u0027: image_size, \u0027key\u0027: key, \u0027checksum\u0027: checksum_hex})"},{"line_number":694,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_ad26eab9","line":691,"range":{"start_line":691,"start_character":18,"end_line":691,"end_character":19},"updated":"2020-03-12 14:09:35.000000000","message":"For all of these, the () around the string isn\u0027t needed since it\u0027s inside the debug(). Doesn\u0027t hurt anything really, but not needed.","commit_id":"b259bad03aca60d785fa51701efd147d5e5095ae"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"334bc89872d131e0a240797dacf32c53ca63a1c2","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        if self.backend_group:"},{"line_number":689,"context_line":"            metadata[\u0027store\u0027] \u003d self.backend_group"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        LOG.debug((\"Wrote %(size)d bytes to S3 key named %(key)s \""},{"line_number":692,"context_line":"                   \"with checksum %(checksum)s\"),"},{"line_number":693,"context_line":"                  {\u0027size\u0027: image_size, \u0027key\u0027: key, \u0027checksum\u0027: checksum_hex})"},{"line_number":694,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_ca178751","line":691,"range":{"start_line":691,"start_character":18,"end_line":691,"end_character":19},"in_reply_to":"1fa4df85_ad26eab9","updated":"2020-03-12 17:36:46.000000000","message":"remove redundant brackets in logging call","commit_id":"b259bad03aca60d785fa51701efd147d5e5095ae"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729e59b48ef2c9d170405fe556e31c173df6a04","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        _s3_ck_size \u003d self._option_get(\u0027s3_store_large_object_chunk_size\u0027)"},{"line_number":419,"context_line":"        _s3_ck_min \u003d DEFAULT_LARGE_OBJECT_MIN_CHUNK_SIZE"},{"line_number":420,"context_line":"        if _s3_ck_size \u003c _s3_ck_min:"},{"line_number":421,"context_line":"            reason \u003d (\"s3_store_large_object_chunk_size must be at \""},{"line_number":422,"context_line":"                      \"least %(_s3_ck_min)d MB. \""},{"line_number":423,"context_line":"                      \"You configured it as %(_s3_ck_size)d MB\" %"},{"line_number":424,"context_line":"                      {\u0027_s3_ck_min\u0027: _s3_ck_min, \u0027_s3_ck_size\u0027: _s3_ck_size})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_2df2f59b","line":421,"range":{"start_line":421,"start_character":21,"end_line":421,"end_character":22},"updated":"2020-03-12 18:05:33.000000000","message":"This one is used in the exception message, so in that case, you actually do want to have it translated. So this one should have _().","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"2cdd246f32f0d311d93ea43cc956f95c0a904573","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        _s3_ck_size \u003d self._option_get(\u0027s3_store_large_object_chunk_size\u0027)"},{"line_number":419,"context_line":"        _s3_ck_min \u003d DEFAULT_LARGE_OBJECT_MIN_CHUNK_SIZE"},{"line_number":420,"context_line":"        if _s3_ck_size \u003c _s3_ck_min:"},{"line_number":421,"context_line":"            reason \u003d (\"s3_store_large_object_chunk_size must be at \""},{"line_number":422,"context_line":"                      \"least %(_s3_ck_min)d MB. \""},{"line_number":423,"context_line":"                      \"You configured it as %(_s3_ck_size)d MB\" %"},{"line_number":424,"context_line":"                      {\u0027_s3_ck_min\u0027: _s3_ck_min, \u0027_s3_ck_size\u0027: _s3_ck_size})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_e1edc68b","line":421,"range":{"start_line":421,"start_character":21,"end_line":421,"end_character":22},"in_reply_to":"1fa4df85_2df2f59b","updated":"2020-03-12 22:58:29.000000000","message":"add \"_\"prefix","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"18d984323ace91f2474b11ea663c204a79c0061f","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                      {\u0027_s3_ck_min\u0027: _s3_ck_min, \u0027_s3_ck_size\u0027: _s3_ck_size})"},{"line_number":425,"context_line":"            LOG.error(reason)"},{"line_number":426,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","},{"line_number":427,"context_line":"                                                   reason\u003dreason)"},{"line_number":428,"context_line":"        self.s3_store_large_object_chunk_size \u003d _s3_ck_size * units.Mi"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        self.s3_store_thread_pools \u003d self._option_get(\u0027s3_store_thread_pools\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_a1e26e00","line":427,"range":{"start_line":427,"start_character":51,"end_line":427,"end_character":64},"updated":"2020-03-12 22:09:22.000000000","message":"Responding here to keep the context.\n\nThe exception message itself is translated, but the ``reason`` string passed in here needs to be translated too. Otherwise the resulting string can end up half in the local native language and half in English.","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"2cdd246f32f0d311d93ea43cc956f95c0a904573","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                      {\u0027_s3_ck_min\u0027: _s3_ck_min, \u0027_s3_ck_size\u0027: _s3_ck_size})"},{"line_number":425,"context_line":"            LOG.error(reason)"},{"line_number":426,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","},{"line_number":427,"context_line":"                                                   reason\u003dreason)"},{"line_number":428,"context_line":"        self.s3_store_large_object_chunk_size \u003d _s3_ck_size * units.Mi"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        self.s3_store_thread_pools \u003d self._option_get(\u0027s3_store_thread_pools\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_e1a2a64b","line":427,"range":{"start_line":427,"start_character":51,"end_line":427,"end_character":64},"in_reply_to":"1fa4df85_a1e26e00","updated":"2020-03-12 22:58:29.000000000","message":"thank you for giving me useful advice.","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729e59b48ef2c9d170405fe556e31c173df6a04","unresolved":false,"context_lines":[{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        self.s3_store_thread_pools \u003d self._option_get(\u0027s3_store_thread_pools\u0027)"},{"line_number":431,"context_line":"        if self.s3_store_thread_pools \u003c\u003d 0:"},{"line_number":432,"context_line":"            reason \u003d (\"s3_store_thread_pools must be a positive \""},{"line_number":433,"context_line":"                      \"integer. %s\") % self.s3_store_thread_pools"},{"line_number":434,"context_line":"            LOG.error(reason)"},{"line_number":435,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_4def31b0","line":432,"range":{"start_line":432,"start_character":21,"end_line":432,"end_character":22},"updated":"2020-03-12 18:05:33.000000000","message":"Same.","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729e59b48ef2c9d170405fe556e31c173df6a04","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        if not result:"},{"line_number":460,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":461,"context_line":"                return result"},{"line_number":462,"context_line":"            reason \u003d \"Could not find %s in configuration options.\" % param"},{"line_number":463,"context_line":"            LOG.debug(reason)"},{"line_number":464,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","},{"line_number":465,"context_line":"                                                   reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_0d2ff9f6","line":462,"range":{"start_line":462,"start_character":21,"end_line":462,"end_character":22},"updated":"2020-03-12 18:05:33.000000000","message":"Same, this was correct before.","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"2cdd246f32f0d311d93ea43cc956f95c0a904573","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        if not result:"},{"line_number":460,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":461,"context_line":"                return result"},{"line_number":462,"context_line":"            reason \u003d \"Could not find %s in configuration options.\" % param"},{"line_number":463,"context_line":"            LOG.debug(reason)"},{"line_number":464,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","},{"line_number":465,"context_line":"                                                   reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_a184aeb2","line":462,"range":{"start_line":462,"start_character":21,"end_line":462,"end_character":22},"in_reply_to":"1fa4df85_0d2ff9f6","updated":"2020-03-12 22:58:29.000000000","message":"add \"_\" prefix","commit_id":"6a1001e431cee662bf4cb631e95ab72614081659"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3d2a3d59712366e2d4285820f76ec4a0684d22a3","unresolved":false,"context_lines":[{"line_number":907,"context_line":"            LOG.error(msg)"},{"line_number":908,"context_line":"            raise glance_store.BadStoreConfiguration(store_name\u003d\u0027s3\u0027,"},{"line_number":909,"context_line":"                                                     reason\u003dmsg)"},{"line_number":910,"context_line":"        else:"},{"line_number":911,"context_line":"            return"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"    @staticmethod"},{"line_number":914,"context_line":"    def _valid_dns_name(bucket_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1fa4df85_a9ea50a9","line":911,"range":{"start_line":910,"start_character":8,"end_line":911,"end_character":18},"updated":"2020-03-13 09:18:39.000000000","message":"nit: No need of this","commit_id":"4ffa10ba5839c5fefe93ff2ac99271dc5bc53225"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"ac1b486178ccce6ed782d55fa2336fde34d3ed45","unresolved":false,"context_lines":[{"line_number":907,"context_line":"            LOG.error(msg)"},{"line_number":908,"context_line":"            raise glance_store.BadStoreConfiguration(store_name\u003d\u0027s3\u0027,"},{"line_number":909,"context_line":"                                                     reason\u003dmsg)"},{"line_number":910,"context_line":"        else:"},{"line_number":911,"context_line":"            return"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"    @staticmethod"},{"line_number":914,"context_line":"    def _valid_dns_name(bucket_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1fa4df85_846f3b91","line":911,"range":{"start_line":910,"start_character":8,"end_line":911,"end_character":18},"in_reply_to":"1fa4df85_a9ea50a9","updated":"2020-03-13 10:04:15.000000000","message":"deleted","commit_id":"4ffa10ba5839c5fefe93ff2ac99271dc5bc53225"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    pnum \u003d part.partnum"},{"line_number":237,"context_line":"    bsize \u003d part.chunks"},{"line_number":238,"context_line":"    upload_id \u003d part.mpu[\u0027UploadId\u0027]"},{"line_number":239,"context_line":"    LOG.info(\"Uploading upload part in S3 partnum\u003d%(pnum)d, \""},{"line_number":240,"context_line":"             \"size\u003d%(bsize)d, key\u003d%(key)s, UploadId\u003d%(UploadId)s\","},{"line_number":241,"context_line":"             {\u0027pnum\u0027: pnum, \u0027bsize\u0027: bsize, \u0027key\u0027: key, \u0027UploadId\u0027: upload_id})"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_2e2a782b","line":239,"range":{"start_line":239,"start_character":4,"end_line":239,"end_character":12},"updated":"2020-03-20 13:09:53.000000000","message":"This should be probably LOG.debug( INFO level logging on every segment is very chattery.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    pnum \u003d part.partnum"},{"line_number":237,"context_line":"    bsize \u003d part.chunks"},{"line_number":238,"context_line":"    upload_id \u003d part.mpu[\u0027UploadId\u0027]"},{"line_number":239,"context_line":"    LOG.info(\"Uploading upload part in S3 partnum\u003d%(pnum)d, \""},{"line_number":240,"context_line":"             \"size\u003d%(bsize)d, key\u003d%(key)s, UploadId\u003d%(UploadId)s\","},{"line_number":241,"context_line":"             {\u0027pnum\u0027: pnum, \u0027bsize\u0027: bsize, \u0027key\u0027: key, \u0027UploadId\u0027: upload_id})"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_4a2707b8","line":239,"range":{"start_line":239,"start_character":4,"end_line":239,"end_character":12},"in_reply_to":"1fa4df85_2e2a782b","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    except boto_exceptions.ClientError as e:"},{"line_number":253,"context_line":"        error_code \u003d e.response[\u0027Error\u0027][\u0027Code\u0027]"},{"line_number":254,"context_line":"        error_message \u003d e.response[\u0027Error\u0027][\u0027Message\u0027]"},{"line_number":255,"context_line":"        LOG.error(\"Failed to upload part in S3 partnum\u003d%(pnum)d, \""},{"line_number":256,"context_line":"                  \"size\u003d%(bsize)d, error code\u003d%(error_code)d, \""},{"line_number":257,"context_line":"                  \"error message\u003d%(error_message)s\","},{"line_number":258,"context_line":"                  {\u0027pnum\u0027: pnum, \u0027bsize\u0027: bsize, \u0027error_code\u0027: error_code,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_eea0e092","line":255,"range":{"start_line":255,"start_character":12,"end_line":255,"end_character":17},"updated":"2020-03-20 13:09:53.000000000","message":"And this likely warn(","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    except boto_exceptions.ClientError as e:"},{"line_number":253,"context_line":"        error_code \u003d e.response[\u0027Error\u0027][\u0027Code\u0027]"},{"line_number":254,"context_line":"        error_message \u003d e.response[\u0027Error\u0027][\u0027Message\u0027]"},{"line_number":255,"context_line":"        LOG.error(\"Failed to upload part in S3 partnum\u003d%(pnum)d, \""},{"line_number":256,"context_line":"                  \"size\u003d%(bsize)d, error code\u003d%(error_code)d, \""},{"line_number":257,"context_line":"                  \"error message\u003d%(error_message)s\","},{"line_number":258,"context_line":"                  {\u0027pnum\u0027: pnum, \u0027bsize\u0027: bsize, \u0027error_code\u0027: error_code,"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_aa65f3e3","line":255,"range":{"start_line":255,"start_character":12,"end_line":255,"end_character":17},"in_reply_to":"1fa4df85_eea0e092","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    An S3 URI can look like any of the following:"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        s3://accesskey:secretkey@s3.amazonaws.com/bucket/key-id"},{"line_number":271,"context_line":"        s3+https://accesskey:secretkey@s3.amazonaws.com/bucket/key-id"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    The s3+https:// URIs indicate there is an HTTPS s3service URL"},{"line_number":274,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_8e184c1e","line":271,"range":{"start_line":270,"start_character":2,"end_line":271,"end_character":69},"updated":"2020-03-20 13:09:53.000000000","message":"I thought we were supposed to get rid of location entries with credentials in them. Perhaps we need to adjust this with something similar we were doing with swift.\n\nhmm-m looking at the locations.py and perhaps we didn\u0027t.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    An S3 URI can look like any of the following:"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        s3://accesskey:secretkey@s3.amazonaws.com/bucket/key-id"},{"line_number":271,"context_line":"        s3+https://accesskey:secretkey@s3.amazonaws.com/bucket/key-id"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    The s3+https:// URIs indicate there is an HTTPS s3service URL"},{"line_number":274,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_8a7d8f70","line":271,"range":{"start_line":270,"start_character":2,"end_line":271,"end_character":69},"in_reply_to":"1fa4df85_8e184c1e","updated":"2020-03-20 16:51:38.000000000","message":"I want to work on this in a follow up if possible.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        return \"%s://%s%s/%s/%s\" % (self.scheme, self._get_credstring(),"},{"line_number":297,"context_line":"                                    self.s3serviceurl, self.bucket, self.key)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def parse_uri(self, uri):"},{"line_number":300,"context_line":"        \"\"\"Parse URLs."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        Note that an Amazon AWS secret key can contain the forward slash,"},{"line_number":303,"context_line":"        which is entirely retarded, and breaks urlparse miserably."},{"line_number":304,"context_line":"        This function works around that issue."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        # Make sure that URIs that contain multiple schemes, such as:"},{"line_number":307,"context_line":"        # s3://accesskey:secretkey@https://s3.amazonaws.com/bucket/key-id"},{"line_number":308,"context_line":"        # are immediately rejected."},{"line_number":309,"context_line":"        if uri.count(\u0027://\u0027) !\u003d 1:"},{"line_number":310,"context_line":"            reason \u003d (\"URI cannot contain more than one occurrence \""},{"line_number":311,"context_line":"                      \"of a scheme. If you have specified a URI like \""},{"line_number":312,"context_line":"                      \"s3://accesskey:secretkey@\""},{"line_number":313,"context_line":"                      \"https://s3.amazonaws.com/bucket/key-id\""},{"line_number":314,"context_line":"                      \", you need to change it to use the \""},{"line_number":315,"context_line":"                      \"s3+https:// scheme, like so: \""},{"line_number":316,"context_line":"                      \"s3+https://accesskey:secretkey@\""},{"line_number":317,"context_line":"                      \"s3.amazonaws.com/bucket/key-id\")"},{"line_number":318,"context_line":"            LOG.info(\"Invalid store uri: %s\", reason)"},{"line_number":319,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        pieces \u003d urllib.parse.urlparse(uri)"},{"line_number":322,"context_line":"        self.validate_schemas(uri, valid_schemas\u003d("},{"line_number":323,"context_line":"            \u0027s3://\u0027, \u0027s3+http://\u0027, \u0027s3+https://\u0027))"},{"line_number":324,"context_line":"        self.scheme \u003d pieces.scheme"},{"line_number":325,"context_line":"        path \u003d pieces.path.strip(\u0027/\u0027)"},{"line_number":326,"context_line":"        netloc \u003d pieces.netloc.strip(\u0027/\u0027)"},{"line_number":327,"context_line":"        entire_path \u003d (netloc + \u0027/\u0027 + path).strip(\u0027/\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if \u0027@\u0027 in uri:"},{"line_number":330,"context_line":"            creds, path \u003d entire_path.split(\u0027@\u0027)"},{"line_number":331,"context_line":"            cred_parts \u003d creds.split(\u0027:\u0027)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"            try:"},{"line_number":334,"context_line":"                self.accesskey \u003d cred_parts[0]"},{"line_number":335,"context_line":"                self.secretkey \u003d cred_parts[1]"},{"line_number":336,"context_line":"            except IndexError:"},{"line_number":337,"context_line":"                LOG.info(\"Badly formed S3 credentials\")"},{"line_number":338,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":339,"context_line":"        else:"},{"line_number":340,"context_line":"            self.accesskey \u003d None"},{"line_number":341,"context_line":"            path \u003d entire_path"},{"line_number":342,"context_line":"        try:"},{"line_number":343,"context_line":"            path_parts \u003d path.split(\u0027/\u0027)"},{"line_number":344,"context_line":"            self.key \u003d path_parts.pop()"},{"line_number":345,"context_line":"            self.bucket \u003d path_parts.pop()"},{"line_number":346,"context_line":"            if path_parts:"},{"line_number":347,"context_line":"                self.s3serviceurl \u003d \u0027/\u0027.join(path_parts).strip(\u0027/\u0027)"},{"line_number":348,"context_line":"            else:"},{"line_number":349,"context_line":"                LOG.info(\"Badly formed S3 URI. Missing s3 service URL.\")"},{"line_number":350,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":351,"context_line":"        except IndexError:"},{"line_number":352,"context_line":"            LOG.info(\"Badly formed S3 URI\")"},{"line_number":353,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class ChunkedFile(object):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_ee3c6030","line":353,"range":{"start_line":299,"start_character":0,"end_line":353,"end_character":49},"updated":"2020-03-20 13:09:53.000000000","message":"These failures comes from the config file. We probably should do this validation internally upon start and fail if the configured store parameters are unusable.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        return \"%s://%s%s/%s/%s\" % (self.scheme, self._get_credstring(),"},{"line_number":297,"context_line":"                                    self.s3serviceurl, self.bucket, self.key)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def parse_uri(self, uri):"},{"line_number":300,"context_line":"        \"\"\"Parse URLs."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        Note that an Amazon AWS secret key can contain the forward slash,"},{"line_number":303,"context_line":"        which is entirely retarded, and breaks urlparse miserably."},{"line_number":304,"context_line":"        This function works around that issue."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        # Make sure that URIs that contain multiple schemes, such as:"},{"line_number":307,"context_line":"        # s3://accesskey:secretkey@https://s3.amazonaws.com/bucket/key-id"},{"line_number":308,"context_line":"        # are immediately rejected."},{"line_number":309,"context_line":"        if uri.count(\u0027://\u0027) !\u003d 1:"},{"line_number":310,"context_line":"            reason \u003d (\"URI cannot contain more than one occurrence \""},{"line_number":311,"context_line":"                      \"of a scheme. If you have specified a URI like \""},{"line_number":312,"context_line":"                      \"s3://accesskey:secretkey@\""},{"line_number":313,"context_line":"                      \"https://s3.amazonaws.com/bucket/key-id\""},{"line_number":314,"context_line":"                      \", you need to change it to use the \""},{"line_number":315,"context_line":"                      \"s3+https:// scheme, like so: \""},{"line_number":316,"context_line":"                      \"s3+https://accesskey:secretkey@\""},{"line_number":317,"context_line":"                      \"s3.amazonaws.com/bucket/key-id\")"},{"line_number":318,"context_line":"            LOG.info(\"Invalid store uri: %s\", reason)"},{"line_number":319,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        pieces \u003d urllib.parse.urlparse(uri)"},{"line_number":322,"context_line":"        self.validate_schemas(uri, valid_schemas\u003d("},{"line_number":323,"context_line":"            \u0027s3://\u0027, \u0027s3+http://\u0027, \u0027s3+https://\u0027))"},{"line_number":324,"context_line":"        self.scheme \u003d pieces.scheme"},{"line_number":325,"context_line":"        path \u003d pieces.path.strip(\u0027/\u0027)"},{"line_number":326,"context_line":"        netloc \u003d pieces.netloc.strip(\u0027/\u0027)"},{"line_number":327,"context_line":"        entire_path \u003d (netloc + \u0027/\u0027 + path).strip(\u0027/\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if \u0027@\u0027 in uri:"},{"line_number":330,"context_line":"            creds, path \u003d entire_path.split(\u0027@\u0027)"},{"line_number":331,"context_line":"            cred_parts \u003d creds.split(\u0027:\u0027)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"            try:"},{"line_number":334,"context_line":"                self.accesskey \u003d cred_parts[0]"},{"line_number":335,"context_line":"                self.secretkey \u003d cred_parts[1]"},{"line_number":336,"context_line":"            except IndexError:"},{"line_number":337,"context_line":"                LOG.info(\"Badly formed S3 credentials\")"},{"line_number":338,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":339,"context_line":"        else:"},{"line_number":340,"context_line":"            self.accesskey \u003d None"},{"line_number":341,"context_line":"            path \u003d entire_path"},{"line_number":342,"context_line":"        try:"},{"line_number":343,"context_line":"            path_parts \u003d path.split(\u0027/\u0027)"},{"line_number":344,"context_line":"            self.key \u003d path_parts.pop()"},{"line_number":345,"context_line":"            self.bucket \u003d path_parts.pop()"},{"line_number":346,"context_line":"            if path_parts:"},{"line_number":347,"context_line":"                self.s3serviceurl \u003d \u0027/\u0027.join(path_parts).strip(\u0027/\u0027)"},{"line_number":348,"context_line":"            else:"},{"line_number":349,"context_line":"                LOG.info(\"Badly formed S3 URI. Missing s3 service URL.\")"},{"line_number":350,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":351,"context_line":"        except IndexError:"},{"line_number":352,"context_line":"            LOG.info(\"Badly formed S3 URI\")"},{"line_number":353,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class ChunkedFile(object):"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_2a88c36f","line":353,"range":{"start_line":299,"start_character":0,"end_line":353,"end_character":49},"in_reply_to":"1fa4df85_ee3c6030","updated":"2020-03-20 16:51:38.000000000","message":"I want to work on this in a follow up if possible.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":353,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class ChunkedFile(object):"},{"line_number":357,"context_line":"    def __init__(self, fp, chunk_size):"},{"line_number":358,"context_line":"        self.fp \u003d fp"},{"line_number":359,"context_line":"        self.chunk_size \u003d chunk_size"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def __iter__(self):"},{"line_number":362,"context_line":"        \"\"\"Return an iterator over the image file.\"\"\""},{"line_number":363,"context_line":"        try:"},{"line_number":364,"context_line":"            if self.fp:"},{"line_number":365,"context_line":"                while True:"},{"line_number":366,"context_line":"                    chunk \u003d self.fp.read(self.chunk_size)"},{"line_number":367,"context_line":"                    if chunk:"},{"line_number":368,"context_line":"                        yield chunk"},{"line_number":369,"context_line":"                    else:"},{"line_number":370,"context_line":"                        break"},{"line_number":371,"context_line":"        finally:"},{"line_number":372,"context_line":"            self.close()"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def close(self):"},{"line_number":375,"context_line":"        \"\"\"Close the internal file pointer.\"\"\""},{"line_number":376,"context_line":"        if self.fp:"},{"line_number":377,"context_line":"            self.fp.close()"},{"line_number":378,"context_line":"            self.fp \u003d None"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"class Store(glance_store.driver.Store):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_2e1038a8","line":378,"range":{"start_line":356,"start_character":0,"end_line":378,"end_character":26},"updated":"2020-03-20 13:09:53.000000000","message":"Don\u0027t we have chunked reader already in the utils that can be used instead of reinvening the wheel?","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":353,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class ChunkedFile(object):"},{"line_number":357,"context_line":"    def __init__(self, fp, chunk_size):"},{"line_number":358,"context_line":"        self.fp \u003d fp"},{"line_number":359,"context_line":"        self.chunk_size \u003d chunk_size"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def __iter__(self):"},{"line_number":362,"context_line":"        \"\"\"Return an iterator over the image file.\"\"\""},{"line_number":363,"context_line":"        try:"},{"line_number":364,"context_line":"            if self.fp:"},{"line_number":365,"context_line":"                while True:"},{"line_number":366,"context_line":"                    chunk \u003d self.fp.read(self.chunk_size)"},{"line_number":367,"context_line":"                    if chunk:"},{"line_number":368,"context_line":"                        yield chunk"},{"line_number":369,"context_line":"                    else:"},{"line_number":370,"context_line":"                        break"},{"line_number":371,"context_line":"        finally:"},{"line_number":372,"context_line":"            self.close()"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def close(self):"},{"line_number":375,"context_line":"        \"\"\"Close the internal file pointer.\"\"\""},{"line_number":376,"context_line":"        if self.fp:"},{"line_number":377,"context_line":"            self.fp.close()"},{"line_number":378,"context_line":"            self.fp \u003d None"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"class Store(glance_store.driver.Store):"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_ca6837bc","line":378,"range":{"start_line":356,"start_character":0,"end_line":378,"end_character":26},"in_reply_to":"1fa4df85_2e1038a8","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        if _s3_ck_size \u003c _s3_ck_min:"},{"line_number":421,"context_line":"            reason \u003d (_(\"s3_store_large_object_chunk_size must be at \""},{"line_number":422,"context_line":"                        \"least %(_s3_ck_min)d MB. \""},{"line_number":423,"context_line":"                        \"You configured it as %(_s3_ck_size)d MB\") %"},{"line_number":424,"context_line":"                      {\u0027_s3_ck_min\u0027: _s3_ck_min, \u0027_s3_ck_size\u0027: _s3_ck_size})"},{"line_number":425,"context_line":"            LOG.error(reason)"},{"line_number":426,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_ae70a809","line":423,"range":{"start_line":423,"start_character":24,"end_line":423,"end_character":65},"updated":"2020-03-20 13:09:53.000000000","message":"for consistency sake this can be just removed.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        if _s3_ck_size \u003c _s3_ck_min:"},{"line_number":421,"context_line":"            reason \u003d (_(\"s3_store_large_object_chunk_size must be at \""},{"line_number":422,"context_line":"                        \"least %(_s3_ck_min)d MB. \""},{"line_number":423,"context_line":"                        \"You configured it as %(_s3_ck_size)d MB\") %"},{"line_number":424,"context_line":"                      {\u0027_s3_ck_min\u0027: _s3_ck_min, \u0027_s3_ck_size\u0027: _s3_ck_size})"},{"line_number":425,"context_line":"            LOG.error(reason)"},{"line_number":426,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_6a748b9a","line":423,"range":{"start_line":423,"start_character":24,"end_line":423,"end_character":65},"in_reply_to":"1fa4df85_ae70a809","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        if not result:"},{"line_number":460,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":461,"context_line":"                return result"},{"line_number":462,"context_line":"            reason \u003d _(\"Could not find %s in configuration options.\") % param"},{"line_number":463,"context_line":"            LOG.debug(reason)"},{"line_number":464,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","},{"line_number":465,"context_line":"                                                   reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_8ec60c68","line":462,"range":{"start_line":462,"start_character":21,"end_line":462,"end_character":22},"updated":"2020-03-20 13:09:53.000000000","message":"No translation functions for debug messages.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        if not result:"},{"line_number":460,"context_line":"            if param \u003d\u003d \u0027s3_store_create_bucket_on_put\u0027:"},{"line_number":461,"context_line":"                return result"},{"line_number":462,"context_line":"            reason \u003d _(\"Could not find %s in configuration options.\") % param"},{"line_number":463,"context_line":"            LOG.debug(reason)"},{"line_number":464,"context_line":"            raise exceptions.BadStoreConfiguration(store_name\u003d\"s3\","},{"line_number":465,"context_line":"                                                   reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_8a6f4fc4","line":462,"range":{"start_line":462,"start_character":21,"end_line":462,"end_character":22},"in_reply_to":"1fa4df85_8ec60c68","updated":"2020-03-20 16:51:38.000000000","message":"changed to Log.error function","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        s3_client, bucket, key \u003d self._operation_set(loc)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":527,"context_line":"            LOG.info(\"Could not find key %(key)s in \""},{"line_number":528,"context_line":"                     \"bucket %(bucket)s\", {\u0027key\u0027: key, \u0027bucket\u0027: bucket})"},{"line_number":529,"context_line":"            raise exceptions.NotFound(image\u003dkey)"},{"line_number":530,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_8e74cc37","line":527,"range":{"start_line":527,"start_character":16,"end_line":527,"end_character":20},"updated":"2020-03-20 13:09:53.000000000","message":"This should be warn","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        s3_client, bucket, key \u003d self._operation_set(loc)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":527,"context_line":"            LOG.info(\"Could not find key %(key)s in \""},{"line_number":528,"context_line":"                     \"bucket %(bucket)s\", {\u0027key\u0027: key, \u0027bucket\u0027: bucket})"},{"line_number":529,"context_line":"            raise exceptions.NotFound(image\u003dkey)"},{"line_number":530,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_6a5beb2d","line":527,"range":{"start_line":527,"start_character":16,"end_line":527,"end_character":20},"in_reply_to":"1fa4df85_8e74cc37","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":561,"context_line":"        s3_client, bucket, key \u003d self._operation_set(loc)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":564,"context_line":"            LOG.info(\"Could not find key %(key)s in \""},{"line_number":565,"context_line":"                     \"bucket %(bucket)s\", {\u0027key\u0027: key, \u0027bucket\u0027: bucket})"},{"line_number":566,"context_line":"            raise exceptions.NotFound(image\u003dkey)"},{"line_number":567,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_ee53006a","line":564,"range":{"start_line":564,"start_character":16,"end_line":564,"end_character":20},"updated":"2020-03-20 13:09:53.000000000","message":"This should probably be warn","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":561,"context_line":"        s3_client, bucket, key \u003d self._operation_set(loc)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":564,"context_line":"            LOG.info(\"Could not find key %(key)s in \""},{"line_number":565,"context_line":"                     \"bucket %(bucket)s\", {\u0027key\u0027: key, \u0027bucket\u0027: bucket})"},{"line_number":566,"context_line":"            raise exceptions.NotFound(image\u003dkey)"},{"line_number":567,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_8a562f06","line":564,"range":{"start_line":564,"start_character":16,"end_line":564,"end_character":20},"in_reply_to":"1fa4df85_ee53006a","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                  \"key\u003d%(key)s)\","},{"line_number":618,"context_line":"                  {\u0027s3_host\u0027: self.s3_host, \u0027access_key\u0027: loc.accesskey,"},{"line_number":619,"context_line":"                   \u0027bucket\u0027: bucket, \u0027key\u0027: key})"},{"line_number":620,"context_line":"        LOG.debug(\"Uploading an image file to S3 for %s\","},{"line_number":621,"context_line":"                  self._sanitize(loc.get_uri()))"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":624,"context_line":"            if image_size \u003c self.s3_store_large_object_size:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_2eecb88d","line":621,"range":{"start_line":620,"start_character":8,"end_line":621,"end_character":48},"updated":"2020-03-20 13:09:53.000000000","message":"Why this? The line above has all the information already in clear text.","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                  \"key\u003d%(key)s)\","},{"line_number":618,"context_line":"                  {\u0027s3_host\u0027: self.s3_host, \u0027access_key\u0027: loc.accesskey,"},{"line_number":619,"context_line":"                   \u0027bucket\u0027: bucket, \u0027key\u0027: key})"},{"line_number":620,"context_line":"        LOG.debug(\"Uploading an image file to S3 for %s\","},{"line_number":621,"context_line":"                  self._sanitize(loc.get_uri()))"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":624,"context_line":"            if image_size \u003c self.s3_store_large_object_size:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_4a4c2776","line":621,"range":{"start_line":620,"start_character":8,"end_line":621,"end_character":48},"in_reply_to":"1fa4df85_2eecb88d","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                                       loc\u003dloc,"},{"line_number":639,"context_line":"                                       hashing_algo\u003dhashing_algo,"},{"line_number":640,"context_line":"                                       verifier\u003dverifier)"},{"line_number":641,"context_line":"        LOG.info(\"S3 already has an image with bucket ID %(bucket)s, \""},{"line_number":642,"context_line":"                 \"key %(key)s\", {\u0027bucket\u0027: bucket, \u0027key\u0027: key})"},{"line_number":643,"context_line":"        raise exceptions.Duplicate(image\u003dkey)"},{"line_number":644,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_8efa8c40","line":641,"range":{"start_line":641,"start_character":12,"end_line":641,"end_character":17},"updated":"2020-03-20 13:09:53.000000000","message":"warn(","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                                       loc\u003dloc,"},{"line_number":639,"context_line":"                                       hashing_algo\u003dhashing_algo,"},{"line_number":640,"context_line":"                                       verifier\u003dverifier)"},{"line_number":641,"context_line":"        LOG.info(\"S3 already has an image with bucket ID %(bucket)s, \""},{"line_number":642,"context_line":"                 \"key %(key)s\", {\u0027bucket\u0027: bucket, \u0027key\u0027: key})"},{"line_number":643,"context_line":"        raise exceptions.Duplicate(image\u003dkey)"},{"line_number":644,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_0a35ffda","line":641,"range":{"start_line":641,"start_character":12,"end_line":641,"end_character":17},"in_reply_to":"1fa4df85_8efa8c40","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":823,"context_line":"        s3_client, bucket, key \u003d self._operation_set(loc)"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":826,"context_line":"            LOG.info(\"Could not find key %(key)s in bucket %(bucket)s\","},{"line_number":827,"context_line":"                     {\u0027key\u0027: key, \u0027bucket\u0027: bucket})"},{"line_number":828,"context_line":"            raise exceptions.NotFound(image\u003dkey)"},{"line_number":829,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_ceb2c494","line":826,"range":{"start_line":826,"start_character":16,"end_line":826,"end_character":21},"updated":"2020-03-20 13:09:53.000000000","message":"warn( or debug( here","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":823,"context_line":"        s3_client, bucket, key \u003d self._operation_set(loc)"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        if not self._object_exists(s3_client, bucket, key):"},{"line_number":826,"context_line":"            LOG.info(\"Could not find key %(key)s in bucket %(bucket)s\","},{"line_number":827,"context_line":"                     {\u0027key\u0027: key, \u0027bucket\u0027: bucket})"},{"line_number":828,"context_line":"            raise exceptions.NotFound(image\u003dkey)"},{"line_number":829,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_aa37b3e3","line":826,"range":{"start_line":826,"start_character":16,"end_line":826,"end_character":21},"in_reply_to":"1fa4df85_ceb2c494","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"22336eaf2e53fd70f2a623c7af92b9ef126716c7","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        :param bucket: S3 bucket name"},{"line_number":893,"context_line":"        :raises: BadStoreConfiguration if cannot connect to S3 successfully"},{"line_number":894,"context_line":"        \"\"\""},{"line_number":895,"context_line":"        location \u003d get_s3_location(s3_host)"},{"line_number":896,"context_line":"        try:"},{"line_number":897,"context_line":"            s3_client.create_bucket("},{"line_number":898,"context_line":"                Bucket\u003dbucket,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_2e3d98dc","line":895,"range":{"start_line":895,"start_character":8,"end_line":895,"end_character":16},"updated":"2020-03-20 13:09:53.000000000","message":"I would strongly advice renaming this. Location is very established term in glance and this got confusing quickly. ;)","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"d87152b8640b85fc171fd1154d3379682092f69d","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        :param bucket: S3 bucket name"},{"line_number":893,"context_line":"        :raises: BadStoreConfiguration if cannot connect to S3 successfully"},{"line_number":894,"context_line":"        \"\"\""},{"line_number":895,"context_line":"        location \u003d get_s3_location(s3_host)"},{"line_number":896,"context_line":"        try:"},{"line_number":897,"context_line":"            s3_client.create_bucket("},{"line_number":898,"context_line":"                Bucket\u003dbucket,"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_6a264bba","line":895,"range":{"start_line":895,"start_character":8,"end_line":895,"end_character":16},"in_reply_to":"1fa4df85_2e3d98dc","updated":"2020-03-20 16:51:38.000000000","message":"Done","commit_id":"9eba97d56df2e2de28c68593a126549663b06533"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"87572d3335d4bcd7e913e481a2a743e3421bea0e","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                self.accesskey \u003d cred_parts[0]"},{"line_number":336,"context_line":"                self.secretkey \u003d cred_parts[1]"},{"line_number":337,"context_line":"            except IndexError:"},{"line_number":338,"context_line":"                LOG.info(\"Badly formed S3 credentials\")"},{"line_number":339,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":340,"context_line":"        else:"},{"line_number":341,"context_line":"            self.accesskey \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_2db41d35","line":338,"range":{"start_line":338,"start_character":20,"end_line":338,"end_character":25},"updated":"2020-03-25 14:38:46.000000000","message":"Follow up for the rest is fine, just please log these as Error (As this is something the admin should take care of)","commit_id":"627351f9850ff8215bc7d88dd1535b424e024252"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"75cec64d3db872817ae7e34f87a09d02d83dae7c","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                self.accesskey \u003d cred_parts[0]"},{"line_number":336,"context_line":"                self.secretkey \u003d cred_parts[1]"},{"line_number":337,"context_line":"            except IndexError:"},{"line_number":338,"context_line":"                LOG.info(\"Badly formed S3 credentials\")"},{"line_number":339,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":340,"context_line":"        else:"},{"line_number":341,"context_line":"            self.accesskey \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_a7c0407e","line":338,"range":{"start_line":338,"start_character":20,"end_line":338,"end_character":25},"in_reply_to":"df33271e_2db41d35","updated":"2020-03-26 02:01:10.000000000","message":"Done","commit_id":"627351f9850ff8215bc7d88dd1535b424e024252"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"87572d3335d4bcd7e913e481a2a743e3421bea0e","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            if path_parts:"},{"line_number":348,"context_line":"                self.s3serviceurl \u003d \u0027/\u0027.join(path_parts).strip(\u0027/\u0027)"},{"line_number":349,"context_line":"            else:"},{"line_number":350,"context_line":"                LOG.info(\"Badly formed S3 URI. Missing s3 service URL.\")"},{"line_number":351,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":352,"context_line":"        except IndexError:"},{"line_number":353,"context_line":"            LOG.info(\"Badly formed S3 URI\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_6d874563","line":350,"range":{"start_line":350,"start_character":20,"end_line":350,"end_character":25},"updated":"2020-03-25 14:38:46.000000000","message":"ditto","commit_id":"627351f9850ff8215bc7d88dd1535b424e024252"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"75cec64d3db872817ae7e34f87a09d02d83dae7c","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            if path_parts:"},{"line_number":348,"context_line":"                self.s3serviceurl \u003d \u0027/\u0027.join(path_parts).strip(\u0027/\u0027)"},{"line_number":349,"context_line":"            else:"},{"line_number":350,"context_line":"                LOG.info(\"Badly formed S3 URI. Missing s3 service URL.\")"},{"line_number":351,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":352,"context_line":"        except IndexError:"},{"line_number":353,"context_line":"            LOG.info(\"Badly formed S3 URI\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_07c00c7b","line":350,"range":{"start_line":350,"start_character":20,"end_line":350,"end_character":25},"in_reply_to":"df33271e_6d874563","updated":"2020-03-26 02:01:10.000000000","message":"Done","commit_id":"627351f9850ff8215bc7d88dd1535b424e024252"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"87572d3335d4bcd7e913e481a2a743e3421bea0e","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                LOG.info(\"Badly formed S3 URI. Missing s3 service URL.\")"},{"line_number":351,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":352,"context_line":"        except IndexError:"},{"line_number":353,"context_line":"            LOG.info(\"Badly formed S3 URI\")"},{"line_number":354,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_cd7e516a","line":353,"range":{"start_line":353,"start_character":16,"end_line":353,"end_character":20},"updated":"2020-03-25 14:38:46.000000000","message":"ditto","commit_id":"627351f9850ff8215bc7d88dd1535b424e024252"},{"author":{"_account_id":30735,"name":"Naohiro Sameshima","email":"naohiro.sameshima@global.ntt","username":"nao-shark"},"change_message_id":"75cec64d3db872817ae7e34f87a09d02d83dae7c","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                LOG.info(\"Badly formed S3 URI. Missing s3 service URL.\")"},{"line_number":351,"context_line":"                raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":352,"context_line":"        except IndexError:"},{"line_number":353,"context_line":"            LOG.info(\"Badly formed S3 URI\")"},{"line_number":354,"context_line":"            raise exceptions.BadStoreUri(uri\u003duri)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_e7ba4808","line":353,"range":{"start_line":353,"start_character":16,"end_line":353,"end_character":20},"in_reply_to":"df33271e_cd7e516a","updated":"2020-03-26 02:01:10.000000000","message":"Done","commit_id":"627351f9850ff8215bc7d88dd1535b424e024252"}]}
