)]}'
{"nova/cmd/manage.py":[{"author":{"_account_id":22851,"name":"Thom Gerdes","email":"tgerdes@riverbed.com"},"change_message_id":"b5a4b01d0f7f7d75e1c54958920af59f90edf089","unresolved":false,"context_lines":[{"line_number":1222,"context_line":"            # worry about parsing and splitting a URL which could have special"},{"line_number":1223,"context_line":"            # characters in the password, which makes parsing a nightmare."},{"line_number":1224,"context_line":"            url \u003d sqla_url.make_url(connection)"},{"line_number":1225,"context_line":"            # We need to handle multiple occurrences of the substring, e.g. if"},{"line_number":1226,"context_line":"            # the username and db name are both \u0027nova\u0027 we need to only replace"},{"line_number":1227,"context_line":"            # the last one, which is the database name in the URL, not the"},{"line_number":1228,"context_line":"            # username."},{"line_number":1229,"context_line":"            url.database \u003d url.database + \u0027_cell0\u0027"},{"line_number":1230,"context_line":"            return str(url)"},{"line_number":1231,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_18499c31","line":1228,"range":{"start_line":1225,"start_character":0,"end_line":1228,"end_character":23},"updated":"2017-06-06 22:26:18.000000000","message":"With this change it\u0027s clear from just the code only the database name is being updated; Is this comment relevant anymore?","commit_id":"b22b32d23837b0180a229d6f5f6b964f28ffd383"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f9236df0d0b6c79f1d677828af7d575fb00ae5b","unresolved":false,"context_lines":[{"line_number":1227,"context_line":"            # the last one, which is the database name in the URL, not the"},{"line_number":1228,"context_line":"            # username."},{"line_number":1229,"context_line":"            url.database \u003d url.database + \u0027_cell0\u0027"},{"line_number":1230,"context_line":"            return str(url)"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"        dbc \u003d database_connection or cell0_default_connection()"},{"line_number":1233,"context_line":"        ctxt \u003d context.RequestContext()"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_626b47f1","line":1230,"range":{"start_line":1230,"start_character":19,"end_line":1230,"end_character":22},"updated":"2017-06-06 21:33:01.000000000","message":"This will fail the test because it encodes the username/password:\n\nhttps://github.com/zzzeek/sqlalchemy/blob/master/lib/sqlalchemy/engine/url.py#L69","commit_id":"b22b32d23837b0180a229d6f5f6b964f28ffd383"},{"author":{"_account_id":22851,"name":"Thom Gerdes","email":"tgerdes@riverbed.com"},"change_message_id":"b5a4b01d0f7f7d75e1c54958920af59f90edf089","unresolved":false,"context_lines":[{"line_number":1227,"context_line":"            # the last one, which is the database name in the URL, not the"},{"line_number":1228,"context_line":"            # username."},{"line_number":1229,"context_line":"            url.database \u003d url.database + \u0027_cell0\u0027"},{"line_number":1230,"context_line":"            return str(url)"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"        dbc \u003d database_connection or cell0_default_connection()"},{"line_number":1233,"context_line":"        ctxt \u003d context.RequestContext()"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_d83324f6","line":1230,"range":{"start_line":1230,"start_character":19,"end_line":1230,"end_character":22},"in_reply_to":"df140735_626b47f1","updated":"2017-06-06 22:26:18.000000000","message":"I agree but this does feel like the right fix to me.  The url with rfc_1738_quoted user and password will be interpreted by sqlalchemy the same as the non-quoted ones when the engine is created.  Perhaps the tests should be updated to supply both the input and expected output URLs as parameters?","commit_id":"b22b32d23837b0180a229d6f5f6b964f28ffd383"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aeb818b594ecbbf6a75e78393d214338e1cd28bb","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"            # The cell0 database will use the same database scheme and"},{"line_number":1218,"context_line":"            # netloc as the main database, with a related path."},{"line_number":1219,"context_line":"            # NOTE(sbauza): The URL has to be RFC1738 compliant in order to"},{"line_number":1220,"context_line":"            # usable by sqlalchemy."},{"line_number":1221,"context_line":"            connection \u003d CONF.database.connection"},{"line_number":1222,"context_line":"            # sqlalchemy has a nice utility for parsing database connection"},{"line_number":1223,"context_line":"            # URLs so we use that here to get the db name so we don\u0027t have to"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_ff991c79","line":1220,"range":{"start_line":1220,"start_character":14,"end_line":1220,"end_character":20},"updated":"2017-06-07 10:48:21.000000000","message":"be usable","commit_id":"c1b2dd5a3d526332b5556d1dd9171b1d96871fbf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"14bb1a60229af13c507cab1916ea8124c75c2761","unresolved":false,"context_lines":[{"line_number":1225,"context_line":"            # characters in the password, which makes parsing a nightmare."},{"line_number":1226,"context_line":"            url \u003d sqla_url.make_url(connection)"},{"line_number":1227,"context_line":"            url.database \u003d url.database + \u0027_cell0\u0027"},{"line_number":1228,"context_line":"            return urlparse.unquote(str(url))"},{"line_number":1229,"context_line":""},{"line_number":1230,"context_line":"        dbc \u003d database_connection or cell0_default_connection()"},{"line_number":1231,"context_line":"        ctxt \u003d context.RequestContext()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_bf1724a4","line":1228,"range":{"start_line":1228,"start_character":36,"end_line":1228,"end_character":40},"updated":"2017-06-07 10:52:28.000000000","message":"that\u0027s assuming that we\u0027re not having unicode-encoded strings even if unquote returns a unicode one. We should probably evaluate whether it\u0027s a problem or not, but I can see other places in code where we make the same assumption.","commit_id":"c1b2dd5a3d526332b5556d1dd9171b1d96871fbf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"665d15c256bfee21cab283be832d1d28b00c128d","unresolved":false,"context_lines":[{"line_number":1225,"context_line":"            # characters in the password, which makes parsing a nightmare."},{"line_number":1226,"context_line":"            url \u003d sqla_url.make_url(connection)"},{"line_number":1227,"context_line":"            url.database \u003d url.database + \u0027_cell0\u0027"},{"line_number":1228,"context_line":"            return urlparse.unquote(str(url))"},{"line_number":1229,"context_line":""},{"line_number":1230,"context_line":"        dbc \u003d database_connection or cell0_default_connection()"},{"line_number":1231,"context_line":"        ctxt \u003d context.RequestContext()"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_1e896d25","line":1228,"range":{"start_line":1228,"start_character":36,"end_line":1228,"end_character":40},"updated":"2017-06-07 13:23:10.000000000","message":"So I verified and oslo.db only supports a string type https://docs.openstack.org/developer/oslo.db/opts.html#database.connection\n\nIt means that we\u0027re ASCII encoded by default with python2, so it\u0027s totally fine to just keep it encoded in bytes.\n\nWith py3, that still works since str() by default returns a unicode decoded string and not bytes.","commit_id":"9a33092fa9b0c65b37b9fdc860f5a571908d7a69"}],"nova/tests/unit/test_nova_manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f9236df0d0b6c79f1d677828af7d575fb00ae5b","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"              \u0027mysql+pymysql://nova:abcd0123?AB@controller/nova\u0027,"},{"line_number":1145,"context_line":"              \u0027mysql+pymysql://nova:abcd0123@AB@controller/nova\u0027,"},{"line_number":1146,"context_line":"              \u0027mysql+pymysql://nova:abcd0123/AB@controller/nova\u0027,"},{"line_number":1147,"context_line":"              \u0027mysql+pymysql://nova:abcd0123/AB@controller/nova\u0027,"},{"line_number":1148,"context_line":"              \u0027mysql+pymysql://test:abcd0123%AB@controller/nova?charset\u003dutf8\u0027)"},{"line_number":1149,"context_line":"    def test_map_cell0_default_database_special_characters(self,"},{"line_number":1150,"context_line":"                                                           decoded_connection):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_a2615f14","line":1147,"updated":"2017-06-06 21:33:01.000000000","message":"This is a duplicate of the one above.","commit_id":"b22b32d23837b0180a229d6f5f6b964f28ffd383"}]}
