)]}'
{"placement/db/sqlalchemy/migration.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4565c2cf1fd8c446c65841f8e0f8bc027e6aed7f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            version \u003d int(version)"},{"line_number":43,"context_line":"        except ValueError:"},{"line_number":44,"context_line":"            raise exception.NovaException(_(\"version should be an integer\"))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    current_version \u003d db_version(context\u003dcontext)"},{"line_number":47,"context_line":"    repository \u003d _find_migrate_repo()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b66599e4","line":44,"range":{"start_line":44,"start_character":28,"end_line":44,"end_character":41},"updated":"2018-10-11 09:11:17.000000000","message":"I don\u0027t find this exception :(","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"55990870e89e8fb9abd7749234a6a5db81414642","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    rel_path \u003d os.path.join(\u0027api_migrations\u0027, \u0027migrate_repo\u0027)"},{"line_number":91,"context_line":"    path \u003d os.path.join(os.path.abspath(os.path.dirname(__file__)),"},{"line_number":92,"context_line":"                        rel_path)"},{"line_number":93,"context_line":"    assert os.path.exists(path)"},{"line_number":94,"context_line":"    if _REPOSITORY is None:"},{"line_number":95,"context_line":"        _REPOSITORY \u003d Repository(path)"},{"line_number":96,"context_line":"    return _REPOSITORY"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f6d73521","line":93,"range":{"start_line":93,"start_character":4,"end_line":93,"end_character":31},"updated":"2018-10-02 15:54:15.000000000","message":"The Repository() initializer already verifies this path, so this is unnecessary (unless you particularly care to get AssertionError instead of InvalidRepositoryError).","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c35becb5b9904bc7df18d9eb0e4fb787886a68ec","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    rel_path \u003d os.path.join(\u0027api_migrations\u0027, \u0027migrate_repo\u0027)"},{"line_number":91,"context_line":"    path \u003d os.path.join(os.path.abspath(os.path.dirname(__file__)),"},{"line_number":92,"context_line":"                        rel_path)"},{"line_number":93,"context_line":"    assert os.path.exists(path)"},{"line_number":94,"context_line":"    if _REPOSITORY is None:"},{"line_number":95,"context_line":"        _REPOSITORY \u003d Repository(path)"},{"line_number":96,"context_line":"    return _REPOSITORY"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_966cc133","line":93,"range":{"start_line":93,"start_character":4,"end_line":93,"end_character":31},"in_reply_to":"3f79a3b5_f6d73521","updated":"2018-10-02 16:12:03.000000000","message":"Yeah, it wasn\u0027t clear to me why all of this kerfuffle was in there, but I was trying to not change things that I wasn\u0027t really sure about.\n\nEspecially since if we switch to using alembic (which we should do) all of this goes away.","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"55990870e89e8fb9abd7749234a6a5db81414642","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        rel_path)"},{"line_number":93,"context_line":"    assert os.path.exists(path)"},{"line_number":94,"context_line":"    if _REPOSITORY is None:"},{"line_number":95,"context_line":"        _REPOSITORY \u003d Repository(path)"},{"line_number":96,"context_line":"    return _REPOSITORY"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_5630699e","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":38},"updated":"2018-10-02 15:54:15.000000000","message":"Is there some reason we don\u0027t just do this up front now (on L30)?","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"92bbf27c9b3da78643753bdd0e575943d1b3a8e8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        rel_path)"},{"line_number":93,"context_line":"    assert os.path.exists(path)"},{"line_number":94,"context_line":"    if _REPOSITORY is None:"},{"line_number":95,"context_line":"        _REPOSITORY \u003d Repository(path)"},{"line_number":96,"context_line":"    return _REPOSITORY"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_bfc5493f","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":38},"in_reply_to":"3f79a3b5_0997363b","updated":"2018-10-11 14:58:20.000000000","message":"Since this code is about 7 years old, I\u0027m not surprised it\u0027s got a bunch of warts. Can always clean this up in later patches, and I very much support the effort to move to Alembic and ditch sqlalchemy-migrate ASAP.","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c35becb5b9904bc7df18d9eb0e4fb787886a68ec","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        rel_path)"},{"line_number":93,"context_line":"    assert os.path.exists(path)"},{"line_number":94,"context_line":"    if _REPOSITORY is None:"},{"line_number":95,"context_line":"        _REPOSITORY \u003d Repository(path)"},{"line_number":96,"context_line":"    return _REPOSITORY"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_5664e948","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":38},"in_reply_to":"3f79a3b5_5630699e","updated":"2018-10-02 16:12:03.000000000","message":"I didn\u0027t know which was why I didn\u0027t change it.","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3dff92c8f8950b03d94e927025e4201a7faa0000","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        rel_path)"},{"line_number":93,"context_line":"    assert os.path.exists(path)"},{"line_number":94,"context_line":"    if _REPOSITORY is None:"},{"line_number":95,"context_line":"        _REPOSITORY \u003d Repository(path)"},{"line_number":96,"context_line":"    return _REPOSITORY"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_0997363b","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":38},"in_reply_to":"3f79a3b5_5664e948","updated":"2018-10-02 16:46:11.000000000","message":"No, I mean, I get why it wasn\u0027t being done before, because `path` was variable and _REPOSITORY was complex (multiple values). Now that it\u0027s just one static thing, I would think we can simplify.\n\nUnless there\u0027s some kind of chicken/egg thing where the migrate.cfg and/or versions files don\u0027t exist until some time after we load up this module...\n\nBut anyway, yeah, can be mucked with later.","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"}],"placement/tests/fixtures.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4565c2cf1fd8c446c65841f8e0f8bc027e6aed7f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Fixtures for Nova tests.\"\"\""},{"line_number":18,"context_line":"from __future__ import absolute_import"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_4140e532","line":17,"range":{"start_line":17,"start_character":16,"end_line":17,"end_character":20},"updated":"2018-10-11 09:11:17.000000000","message":"Placement","commit_id":"ec7d8769bc15ff0535981bb80954d9eb930b21d2"}]}
