)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"94fb281bb3a6cbab7acf674d882e5943cbbcae85","unresolved":false,"context_lines":[{"line_number":16,"context_line":"no cell dbs exist."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The tables that reside in cell dbs are based on the Cells v2"},{"line_number":19,"context_line":"database split doc [1]."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Related to blueprint cells-db-connection-switching"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7af24918_495299de","line":19,"updated":"2016-03-02 15:47:44.000000000","message":"Like I said in the DB API file, we agreed to merge that patch even if we don\u0027t agree yet which tables should reside where, since all calls are made to the default legacy main DB anyway.","commit_id":"e9115a716e82dd8cda94a634a65bf1fd32313024"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":19472,"name":"Gerard Braad","email":"me@gbraad.nl","username":"gbraad"},"change_message_id":"238081ac119fcf61dd34898e6efce6a3e9c93f9b","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"                              first()"},{"line_number":1524,"context_line":"        except db_exc.DBError:"},{"line_number":1525,"context_line":"            msg \u003d _(\"Invalid virtual interface address %s \""},{"line_number":1526,"context_line":"                    \"in request\") % address"},{"line_number":1527,"context_line":"            LOG.warning(msg)"},{"line_number":1528,"context_line":"            raise exception.InvalidIpAddressError(msg)"},{"line_number":1529,"context_line":"        return vif_ref"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_0a66a050","line":1526,"updated":"2016-01-26 02:56:35.000000000","message":"This is a multiline string. Would it be better to handle this line ending with \\ ?","commit_id":"7169b19552b5859017b53533a28533caa201fcf5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"580518f4902919cb711217463acca2357ec14cd9","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"                              first()"},{"line_number":1524,"context_line":"        except db_exc.DBError:"},{"line_number":1525,"context_line":"            msg \u003d _(\"Invalid virtual interface address %s \""},{"line_number":1526,"context_line":"                    \"in request\") % address"},{"line_number":1527,"context_line":"            LOG.warning(msg)"},{"line_number":1528,"context_line":"            raise exception.InvalidIpAddressError(msg)"},{"line_number":1529,"context_line":"        return vif_ref"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_0c6c5207","line":1526,"in_reply_to":"9a68dd71_0a66a050","updated":"2016-01-26 18:52:34.000000000","message":"Yes, this line ended up one char too long after indenting, so I followed PEP8 [1] and took advantage of line continuation with parentheses.\n\n[1] https://www.python.org/dev/peps/pep-0008/#maximum-line-length","commit_id":"7169b19552b5859017b53533a28533caa201fcf5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c38b46bbed70bb1424c610ee359ecd7716cc7a9","unresolved":false,"context_lines":[{"line_number":1448,"context_line":""},{"line_number":1449,"context_line":""},{"line_number":1450,"context_line":"@require_context"},{"line_number":1451,"context_line":"@main_context_manager.writer"},{"line_number":1452,"context_line":"def virtual_interface_create(context, values):"},{"line_number":1453,"context_line":"    \"\"\"Create a new virtual interface record in the database."},{"line_number":1454,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_5cb156e0","side":"PARENT","line":1451,"updated":"2016-02-11 12:20:13.000000000","message":"Can\u0027t we create a decorator that just gets the writer for the correct context?\n\n @pick_context_manager.writer","commit_id":"e3b6d29705ae6d48df8555ad0afffc822cbd6678"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2fe04ca33f1462a1b70c895d90174e82a422e2b7","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"    :param values: \u003d dict containing column values"},{"line_number":1455,"context_line":"    \"\"\""},{"line_number":1456,"context_line":"    ctxt_mgr \u003d get_context_manager(context)"},{"line_number":1457,"context_line":"    with ctxt_mgr.writer.using(context):"},{"line_number":1458,"context_line":"        try:"},{"line_number":1459,"context_line":"            vif_ref \u003d models.VirtualInterface()"},{"line_number":1460,"context_line":"            vif_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_5c84f6d2","line":1457,"updated":"2016-02-11 12:23:52.000000000","message":"I guess I am really saying, can we just turn this into a decorator? one for writer, one for reader, etc.","commit_id":"36a8e767333e092ff441d1a8fb5d39f4e7bfb67a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"136b017a6b9ea651a54a4d5ac5ebe4553a46e9a8","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"    :param values: \u003d dict containing column values"},{"line_number":1455,"context_line":"    \"\"\""},{"line_number":1456,"context_line":"    ctxt_mgr \u003d get_context_manager(context)"},{"line_number":1457,"context_line":"    with ctxt_mgr.writer.using(context):"},{"line_number":1458,"context_line":"        try:"},{"line_number":1459,"context_line":"            vif_ref \u003d models.VirtualInterface()"},{"line_number":1460,"context_line":"            vif_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_37980578","line":1457,"in_reply_to":"3a57f1b5_5c84f6d2","updated":"2016-02-12 07:36:44.000000000","message":"That\u0027s a great idea -- I wish I had thought of it!","commit_id":"36a8e767333e092ff441d1a8fb5d39f4e7bfb67a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"94fb281bb3a6cbab7acf674d882e5943cbbcae85","unresolved":false,"context_lines":[{"line_number":478,"context_line":"###################"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"@pick_context_manager_writer"},{"line_number":482,"context_line":"def service_destroy(context, service_id):"},{"line_number":483,"context_line":"    service \u003d service_get(context, service_id)"},{"line_number":484,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_099371a4","line":481,"updated":"2016-03-02 15:47:44.000000000","message":"so, the IRC consensus is that even if we don\u0027t agree yet on the list of tables to be hosted in the API DB, we could change that if needed later.\n\nTBC, that doesn\u0027t impact rolling upgrades or old compute nodes, we\u0027ll be able to switch the use of the db context manager whenever we want.","commit_id":"e9115a716e82dd8cda94a634a65bf1fd32313024"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a9c8543d9af2d72245a16316f6e98ed082ace829","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    return results[0]"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"@main_context_manager.reader"},{"line_number":804,"context_line":"def compute_node_get_model(context, compute_id):"},{"line_number":805,"context_line":"    # TODO(edleafe): remove once the compute node resource provider migration"},{"line_number":806,"context_line":"    # is complete, and this distinction is no longer necessary."}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_52c4993e","line":803,"updated":"2016-03-03 21:57:25.000000000","message":"This should be @pick_context_manager_reader","commit_id":"80e98ab33b2fbdd56f2241a6b254830b029af909"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1f49bd5b4858fc3c2fea6e0b59fb7c1cb14976c9","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    return results[0]"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"@main_context_manager.reader"},{"line_number":804,"context_line":"def compute_node_get_model(context, compute_id):"},{"line_number":805,"context_line":"    # TODO(edleafe): remove once the compute node resource provider migration"},{"line_number":806,"context_line":"    # is complete, and this distinction is no longer necessary."}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_b1198324","line":803,"in_reply_to":"7af24918_52c4993e","updated":"2016-03-04 10:32:33.000000000","message":"ah, yes, sorry, I have that in my local branch, and missed it, doh!","commit_id":"80e98ab33b2fbdd56f2241a6b254830b029af909"}]}
