)]}'
{"glance/common/utils.py":[{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"1e2fc78c410d74ea4a8be4a53181ba074429ff6b","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                           % (cert_file, key_file, ce))"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def legacy_parse_swift_uri(uri, to_quote):"},{"line_number":520,"context_line":"    \"\"\""},{"line_number":521,"context_line":"    Parse URLs. This method fixes an issue where credentials specified"},{"line_number":522,"context_line":"    in the URL are interpreted differently in Python 2.6.1+ than prior"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2B%2Fno%3D","line":519,"updated":"2013-11-16 01:10:46.000000000","message":"I am not fan of moving something store specific to common/utils. From my perspective, this kinda breaks the abstraction.","commit_id":"f5990fb8c3dc889d6669e044987a5b281e91b241"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"0a58233001e34b20fa0525121fd1300778e6bbea","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                           % (cert_file, key_file, ce))"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def legacy_parse_swift_uri(uri, to_quote):"},{"line_number":520,"context_line":"    \"\"\""},{"line_number":521,"context_line":"    Parse URLs. This method fixes an issue where credentials specified"},{"line_number":522,"context_line":"    in the URL are interpreted differently in Python 2.6.1+ than prior"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BubU%3D","line":519,"in_reply_to":"AAAATn%2F%2B%2Fno%3D","updated":"2013-11-21 02:53:49.000000000","message":"Hi Arnaud,\n\nWill check any better place for this method to go in. Can you as well suggest me a better location to move this method. Will really appreciate your thoughts on this. thanks.","commit_id":"f5990fb8c3dc889d6669e044987a5b281e91b241"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"008b8539dd6423b79a8a563cd824c74ff8a8f3af","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                           % (cert_file, key_file, ce))"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def legacy_parse_swift_uri(uri, to_quote):"},{"line_number":520,"context_line":"    \"\"\""},{"line_number":521,"context_line":"    Parse URLs. This method fixes an issue where credentials specified"},{"line_number":522,"context_line":"    in the URL are interpreted differently in Python 2.6.1+ than prior"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F8%2FxE%3D","line":519,"in_reply_to":"AAAATn%2F%2BubU%3D","updated":"2013-12-17 22:15:47.000000000","message":"This is a tough one. Would it be worse to have the latter migration reference the former? that doesn\u0027t sound great either but there are  examples of that elsewhere. Some migrations use glance.db.sqlalchemy.migrate_repo.schema.from_migration_import. see 003.\n\nI think I would be ok with that","commit_id":"f5990fb8c3dc889d6669e044987a5b281e91b241"}],"glance/db/sqlalchemy/migrate_repo/versions/015_quote_swift_credentials.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"a77f590945be33c628da21cd74d7a10bede90a53","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":62,"context_line":"                        \"Details: %s\" % (image.id, unicode(e)))"},{"line_number":63,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":64,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fc3M%3D","line":64,"updated":"2013-11-05 23:47:07.000000000","message":"python zen, explicit over implicit :)\nWon\u0027t -1 for this though!","commit_id":"0ab9fe7b041cde72b7d3a9b5d2996f726dd6ab2c"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"14ba29e1f00a9bb63c11e3bc04443d4e21ae76b7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        except exception.BadStoreUri as e:"},{"line_number":62,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":63,"context_line":"                        \"Details: %s\") % (image.id, unicode(e))"},{"line_number":64,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":65,"context_line":"            raise"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F1vE%3D","line":64,"updated":"2014-01-08 14:34:05.000000000","message":"You can instead do LOG.exception here which is equivalent to LOG.error with exc_info\u003dTrue. In our case it is a bit better because openstack/common/log.py will by default add a prefix to each line of the traceback","commit_id":"1fee14ef952b47fe14eb809a666cdb95976ff4be"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"4e31107a6bdca4efe60f30d89a1398ffa1835012","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        except exception.BadStoreUri as e:"},{"line_number":62,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":63,"context_line":"                        \"Details: %s\") % (image.id, unicode(e))"},{"line_number":64,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":65,"context_line":"            raise"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fxf0%3D","line":64,"in_reply_to":"AAAAUH%2F%2F1vE%3D","updated":"2014-01-08 16:40:33.000000000","message":"Thanks Alex. As you mentioned LOG.exception is a better option. Will change it.","commit_id":"1fee14ef952b47fe14eb809a666cdb95976ff4be"}],"glance/db/sqlalchemy/migrate_repo/versions/017_quote_encrypted_swift_credentials.py":[{"author":{"_account_id":7531,"name":"Sridevi Koushik","email":"sridevi.koushik@rackspace.com","username":"sridevik"},"change_message_id":"eefb0dc7936c017441a8d0dc96e1d35fc5d01d7d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":88,"context_line":"                        \"Details: %s\" % (image.id, unicode(e)))"},{"line_number":89,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":90,"context_line":"            raise"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def decrypt_location(uri):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F%2FDg%3D","line":90,"updated":"2013-10-24 08:39:02.000000000","message":"Can you use excutils.save_and_reraise_exception() instead.","commit_id":"0ab9fe7b041cde72b7d3a9b5d2996f726dd6ab2c"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"a6e6b37c1d20e9a60809efb813f02fe4b53a0174","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":88,"context_line":"                        \"Details: %s\" % (image.id, unicode(e)))"},{"line_number":89,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":90,"context_line":"            raise"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def decrypt_location(uri):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F9QY%3D","line":90,"in_reply_to":"AAAATn%2F%2F%2FDg%3D","updated":"2013-10-24 16:21:23.000000000","message":"its probably not required in this case i believe.","commit_id":"0ab9fe7b041cde72b7d3a9b5d2996f726dd6ab2c"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"14ba29e1f00a9bb63c11e3bc04443d4e21ae76b7","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except exception.BadStoreUri as e:"},{"line_number":88,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":89,"context_line":"                        \"Details: %s\") % (image.id, unicode(e))"},{"line_number":90,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":91,"context_line":"            raise"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F1sM%3D","line":90,"updated":"2014-01-08 14:34:05.000000000","message":"Same comment as migration 015","commit_id":"1fee14ef952b47fe14eb809a666cdb95976ff4be"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"4e31107a6bdca4efe60f30d89a1398ffa1835012","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except exception.BadStoreUri as e:"},{"line_number":88,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %s. \""},{"line_number":89,"context_line":"                        \"Details: %s\") % (image.id, unicode(e))"},{"line_number":90,"context_line":"            LOG.error(err_msg, exc_info\u003dTrue)"},{"line_number":91,"context_line":"            raise"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fxfc%3D","line":90,"in_reply_to":"AAAAUH%2F%2F1sM%3D","updated":"2014-01-08 16:40:33.000000000","message":"Changing it to use LOG.exception as mentioned by you at 015.","commit_id":"1fee14ef952b47fe14eb809a666cdb95976ff4be"}],"glance/tests/unit/common/test_utils.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"a77f590945be33c628da21cd74d7a10bede90a53","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        self.assertTrue(uri,"},{"line_number":226,"context_line":"                        \u0027swift://acct%3Ausr:pass@example.com/container/obj-id\u0027)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def test_legacy_parse_swift_uri_for_bad_store_uri(self):"},{"line_number":229,"context_line":"        invalid_uri \u003d \\"},{"line_number":230,"context_line":"            \u0027swift://http://acct:usr:pass@example.com/container/obj-id\u0027"},{"line_number":231,"context_line":"        #URI cannot contain more than one occurrence of a scheme."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fc0g%3D","line":228,"updated":"2013-11-05 23:47:07.000000000","message":"can we add some tests around Badly formed URIs?\nlike: incomplete uri missing user and(or) pass and(or) container and(or) obj and does not include \"swift\" in  scheme ?","commit_id":"0ab9fe7b041cde72b7d3a9b5d2996f726dd6ab2c"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"a77f590945be33c628da21cd74d7a10bede90a53","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                          False)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        invalid_path_parts_uri \u003d \u0027swift://acct:usr:pass@example.com/container\u0027"},{"line_number":252,"context_line":"        #Badly formed S3 URIBadly formed S3 URI"},{"line_number":253,"context_line":"        self.assertRaises(exception.BadStoreUri,"},{"line_number":254,"context_line":"                          utils.legacy_parse_swift_uri,"},{"line_number":255,"context_line":"                          invalid_path_parts_uri,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fc2s%3D","line":252,"updated":"2013-11-05 23:47:07.000000000","message":"comment duplicated in the same line","commit_id":"0ab9fe7b041cde72b7d3a9b5d2996f726dd6ab2c"}],"glance/tests/unit/test_migrations.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"14ba29e1f00a9bb63c11e3bc04443d4e21ae76b7","unresolved":false,"context_lines":[{"line_number":721,"context_line":""},{"line_number":722,"context_line":"        invalid_uri \u003d \\"},{"line_number":723,"context_line":"            \u0027swift://http://acct:usr:pass@example.com/container/obj-id\u0027"},{"line_number":724,"context_line":"        #URI cannot contain more than one occurrence of a scheme."},{"line_number":725,"context_line":"        self.assertRaises(exception.BadStoreUri,"},{"line_number":726,"context_line":"                          legacy_parse_swift_uri,"},{"line_number":727,"context_line":"                          invalid_uri,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F1rs%3D","line":724,"updated":"2014-01-08 14:34:05.000000000","message":"There should be a space after the #, I thought this was a pep8 thing but it doesn\u0027t seem to have caused an error","commit_id":"1fee14ef952b47fe14eb809a666cdb95976ff4be"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"4e31107a6bdca4efe60f30d89a1398ffa1835012","unresolved":false,"context_lines":[{"line_number":721,"context_line":""},{"line_number":722,"context_line":"        invalid_uri \u003d \\"},{"line_number":723,"context_line":"            \u0027swift://http://acct:usr:pass@example.com/container/obj-id\u0027"},{"line_number":724,"context_line":"        #URI cannot contain more than one occurrence of a scheme."},{"line_number":725,"context_line":"        self.assertRaises(exception.BadStoreUri,"},{"line_number":726,"context_line":"                          legacy_parse_swift_uri,"},{"line_number":727,"context_line":"                          invalid_uri,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FxcA%3D","line":724,"in_reply_to":"AAAAUH%2F%2F1rs%3D","updated":"2014-01-08 16:40:33.000000000","message":"Thanks Alex. Will fix all the comments to have a whitespace before comment.","commit_id":"1fee14ef952b47fe14eb809a666cdb95976ff4be"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"63d65e52941ea5ecb2a29b2101fc1aae712d0345","unresolved":false,"context_lines":[{"line_number":728,"context_line":"                          True)"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        invalid_scheme_uri \u003d \\"},{"line_number":731,"context_line":"            \u0027http://acct:usr:pass@example.com/container/obj-id\u0027"},{"line_number":732,"context_line":"        self.assertRaises(exceptions.AssertionError,"},{"line_number":733,"context_line":"                          legacy_parse_swift_uri,"},{"line_number":734,"context_line":"                          invalid_scheme_uri,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FlVg%3D","line":731,"updated":"2014-01-10 19:32:05.000000000","message":"() instead of \\ ?","commit_id":"d0fe91c894ef0a136e5e23f418d5fa24436c8d77"}]}
