)]}'
{"quantum/db/migration/alembic_migrations/versions/1149d7de0cfa_inital_port_security.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"inital port security"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Revision ID: 1149d7de0cfa"},{"line_number":21,"context_line":"Revises: 1b693c095aa3"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fa00%3D","line":18,"updated":"2013-01-23 13:56:45.000000000","message":"inital -\u003e initial\n\nThe file name also needs to be changed.","commit_id":"f3029eff6e672ac4afec15dfcc5f0c4c954fc54e"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"824131529b0257fe9d657558f5aec8ee479ff39f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"inital port security"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Revision ID: 1149d7de0cfa"},{"line_number":21,"context_line":"Revises: 1b693c095aa3"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FaNs%3D","line":18,"in_reply_to":"AAAAM3%2F%2Fa00%3D","updated":"2013-01-23 17:06:23.000000000","message":"Done","commit_id":"f3029eff6e672ac4afec15dfcc5f0c4c954fc54e"}],"quantum/db/migration/alembic_migrations/versions/213f846eb7b5_inital_port_security.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"be0af6ec1cc38de6c13869e4fa9e637746324230","unresolved":false,"context_lines":[{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from alembic import op"},{"line_number":37,"context_line":"import sqlalchemy as sa"},{"line_number":38,"context_line":"from sqlalchemy.dialects import mysql"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from quantum.db import migration"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FeIM%3D","line":37,"updated":"2013-01-21 09:27:06.000000000","message":"should this be on line 38? i am always confused by this :)","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from alembic import op"},{"line_number":37,"context_line":"import sqlalchemy as sa"},{"line_number":38,"context_line":"from sqlalchemy.dialects import mysql"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from quantum.db import migration"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FeFQ%3D","line":37,"in_reply_to":"AAAAM3%2F%2FeIM%3D","updated":"2013-01-21 11:51:06.000000000","message":"I think the order is correct. \"sqlalchemy\" before \"sqlalchemy.dialects\" is a correct alphabetical order.","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from alembic import op"},{"line_number":37,"context_line":"import sqlalchemy as sa"},{"line_number":38,"context_line":"from sqlalchemy.dialects import mysql"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from quantum.db import migration"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FdMk%3D","line":38,"updated":"2013-01-21 21:54:23.000000000","message":"We should avoid mysql specifics.","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"824131529b0257fe9d657558f5aec8ee479ff39f","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from alembic import op"},{"line_number":37,"context_line":"import sqlalchemy as sa"},{"line_number":38,"context_line":"from sqlalchemy.dialects import mysql"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from quantum.db import migration"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fc%2F0%3D","line":38,"in_reply_to":"AAAAM3%2F%2FdMk%3D","updated":"2013-01-21 23:02:00.000000000","message":"Done","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":48,"context_line":"    op.alter_column(\u0027ipavailabilityranges\u0027, u\u0027allocation_pool_id\u0027,"},{"line_number":49,"context_line":"                    existing_type\u003dmysql.VARCHAR(length\u003d36),"},{"line_number":50,"context_line":"                    nullable\u003dTrue,"},{"line_number":51,"context_line":"                    existing_server_default\u003du\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FdL4%3D","line":48,"updated":"2013-01-21 21:54:23.000000000","message":"op.alter_column(\n     \u0027ipavailabilityranges\u0027,\n     u\u0027allocation_pool_id\u0027,\n     existing_type\u003dsa.String(length\u003d36),\n     nullable\u003dTrue,\n     existing_server_default\u003du\u0027\u0027)","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"824131529b0257fe9d657558f5aec8ee479ff39f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":48,"context_line":"    op.alter_column(\u0027ipavailabilityranges\u0027, u\u0027allocation_pool_id\u0027,"},{"line_number":49,"context_line":"                    existing_type\u003dmysql.VARCHAR(length\u003d36),"},{"line_number":50,"context_line":"                    nullable\u003dTrue,"},{"line_number":51,"context_line":"                    existing_server_default\u003du\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fc%2FU%3D","line":48,"in_reply_to":"AAAAM3%2F%2FdL4%3D","updated":"2013-01-21 23:02:00.000000000","message":"Done","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":60,"context_line":"    op.alter_column(\u0027ipavailabilityranges\u0027, u\u0027allocation_pool_id\u0027,"},{"line_number":61,"context_line":"                    existing_type\u003dmysql.VARCHAR(length\u003d36),"},{"line_number":62,"context_line":"                    nullable\u003dFalse,"},{"line_number":63,"context_line":"                    existing_server_default\u003du\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FdL0%3D","line":60,"updated":"2013-01-21 21:54:23.000000000","message":"op.alter_column(\n     \u0027ipavailabilityranges\u0027,\n     u\u0027allocation_pool_id\u0027,\n     existing_type\u003dsa.String(length\u003d36),\n     nullable\u003dFalse,\n     existing_server_default\u003du\u0027\u0027)","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"824131529b0257fe9d657558f5aec8ee479ff39f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":60,"context_line":"    op.alter_column(\u0027ipavailabilityranges\u0027, u\u0027allocation_pool_id\u0027,"},{"line_number":61,"context_line":"                    existing_type\u003dmysql.VARCHAR(length\u003d36),"},{"line_number":62,"context_line":"                    nullable\u003dFalse,"},{"line_number":63,"context_line":"                    existing_server_default\u003du\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fc%2FY%3D","line":60,"in_reply_to":"AAAAM3%2F%2FdL0%3D","updated":"2013-01-21 23:02:00.000000000","message":"Done","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"}],"quantum/plugins/nicira/nicira_nvp_plugin/QuantumPlugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"be0af6ec1cc38de6c13869e4fa9e637746324230","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from quantum.db import api as db"},{"line_number":35,"context_line":"from quantum.db import db_base_plugin_v2"},{"line_number":36,"context_line":"from quantum.db import dhcp_rpc_base"},{"line_number":37,"context_line":"# NOTE: quota_db cannot be removed, it is for db model"},{"line_number":38,"context_line":"from quantum.db import portsecurity_db"},{"line_number":39,"context_line":"from quantum.db import quota_db"},{"line_number":40,"context_line":"from quantum.extensions import portsecurity as psec"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FeII%3D","line":37,"updated":"2013-01-21 09:27:06.000000000","message":"please move the comment one line down","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"824131529b0257fe9d657558f5aec8ee479ff39f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from quantum.db import api as db"},{"line_number":35,"context_line":"from quantum.db import db_base_plugin_v2"},{"line_number":36,"context_line":"from quantum.db import dhcp_rpc_base"},{"line_number":37,"context_line":"# NOTE: quota_db cannot be removed, it is for db model"},{"line_number":38,"context_line":"from quantum.db import portsecurity_db"},{"line_number":39,"context_line":"from quantum.db import quota_db"},{"line_number":40,"context_line":"from quantum.extensions import portsecurity as psec"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FdQo%3D","line":37,"in_reply_to":"AAAAM3%2F%2FeII%3D","updated":"2013-01-21 21:19:50.000000000","message":"Done","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"be0af6ec1cc38de6c13869e4fa9e637746324230","unresolved":false,"context_lines":[{"line_number":726,"context_line":"                nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),"},{"line_number":727,"context_line":"                                               ret_port[\"network_id\"], id))"},{"line_number":728,"context_line":"            LOG.debug(_(\"Update port request: %s\"), port)"},{"line_number":729,"context_line":"            nvplib.update_port(cluster, ret_port[\u0027network_id\u0027],"},{"line_number":730,"context_line":"                               port_nvp[\u0027uuid\u0027], id, tenant_id,"},{"line_number":731,"context_line":"                               ret_port[\u0027name\u0027], ret_port[\u0027device_id\u0027],"},{"line_number":732,"context_line":"                               ret_port[\u0027admin_state_up\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FeH4%3D","line":729,"updated":"2013-01-21 09:27:06.000000000","message":"Do we want to do this in the database context?","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":726,"context_line":"                nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),"},{"line_number":727,"context_line":"                                               ret_port[\"network_id\"], id))"},{"line_number":728,"context_line":"            LOG.debug(_(\"Update port request: %s\"), port)"},{"line_number":729,"context_line":"            nvplib.update_port(cluster, ret_port[\u0027network_id\u0027],"},{"line_number":730,"context_line":"                               port_nvp[\u0027uuid\u0027], id, tenant_id,"},{"line_number":731,"context_line":"                               ret_port[\u0027name\u0027], ret_port[\u0027device_id\u0027],"},{"line_number":732,"context_line":"                               ret_port[\u0027admin_state_up\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fcps%3D","line":729,"in_reply_to":"AAAAM3%2F%2FdQI%3D","updated":"2013-01-22 04:48:11.000000000","message":"Salvatore just filed a bug https://bugs.launchpad.net/quantum/+bug/1102301 . We can handle all issues in NVP plugin related to transaction in a separate patch.","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"824131529b0257fe9d657558f5aec8ee479ff39f","unresolved":false,"context_lines":[{"line_number":726,"context_line":"                nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),"},{"line_number":727,"context_line":"                                               ret_port[\"network_id\"], id))"},{"line_number":728,"context_line":"            LOG.debug(_(\"Update port request: %s\"), port)"},{"line_number":729,"context_line":"            nvplib.update_port(cluster, ret_port[\u0027network_id\u0027],"},{"line_number":730,"context_line":"                               port_nvp[\u0027uuid\u0027], id, tenant_id,"},{"line_number":731,"context_line":"                               ret_port[\u0027name\u0027], ret_port[\u0027device_id\u0027],"},{"line_number":732,"context_line":"                               ret_port[\u0027admin_state_up\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FdQI%3D","line":729,"in_reply_to":"AAAAM3%2F%2FeA0%3D","updated":"2013-01-21 21:19:50.000000000","message":"Akihiro is right i did this to roll back the db if nvplib.update_port fails. @Garyk do you see anyway to avoid doing this?","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":726,"context_line":"                nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),"},{"line_number":727,"context_line":"                                               ret_port[\"network_id\"], id))"},{"line_number":728,"context_line":"            LOG.debug(_(\"Update port request: %s\"), port)"},{"line_number":729,"context_line":"            nvplib.update_port(cluster, ret_port[\u0027network_id\u0027],"},{"line_number":730,"context_line":"                               port_nvp[\u0027uuid\u0027], id, tenant_id,"},{"line_number":731,"context_line":"                               ret_port[\u0027name\u0027], ret_port[\u0027device_id\u0027],"},{"line_number":732,"context_line":"                               ret_port[\u0027admin_state_up\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FeA0%3D","line":729,"in_reply_to":"AAAAM3%2F%2FeH4%3D","updated":"2013-01-21 11:51:06.000000000","message":"I think he wants to rollback database when nvplib.update_port fails. It is difficult to decide which is better a remote server call should be a part of database context since it may lead to a long transaction.","commit_id":"5c0ef7e31df0f5b73d4c836e474ede5c91e74dfe"}]}
