)]}'
{"neutron/db/migration/alembic_migrations/versions/16c8803e1cf_trunk_port.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4348ba27a9b31e579ba77c949e55798673a4a5e4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"import sqlalchemy as sa"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":33,"context_line":"    op.create_table("},{"line_number":34,"context_line":"        \u0027trunkports\u0027,"},{"line_number":35,"context_line":"        sa.Column(\u0027port_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_8bc05051","line":32,"updated":"2014-10-16 13:54:44.000000000","message":"active_plugins and options are not used now, remove it","commit_id":"c5b207ba1210b04345448068848d67575be2a519"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4348ba27a9b31e579ba77c949e55798673a4a5e4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        sa.Column(\u0027vid\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.ForeignKeyConstraint([\u0027port_id\u0027], [\u0027ports.id\u0027], ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":40,"context_line":"        sa.PrimaryKeyConstraint(\u0027port_id\u0027),"},{"line_number":41,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_2bb6843e","line":41,"updated":"2014-10-16 13:54:44.000000000","message":"Setting mysql_engine not required. Will be set automatically.","commit_id":"c5b207ba1210b04345448068848d67575be2a519"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4348ba27a9b31e579ba77c949e55798673a4a5e4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":45,"context_line":"    op.drop_table(\u0027trunkports\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_0b946089","line":44,"updated":"2014-10-16 13:54:44.000000000","message":"the same","commit_id":"c5b207ba1210b04345448068848d67575be2a519"}],"neutron/db/migration/alembic_migrations/versions/juno_release.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4348ba27a9b31e579ba77c949e55798673a4a5e4","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# revision identifiers, used by Alembic."},{"line_number":25,"context_line":"revision \u003d \u0027juno\u0027"},{"line_number":26,"context_line":"down_revision \u003d \u002716c8803e1cf\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def upgrade():"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_4be10829","line":26,"updated":"2014-10-16 13:54:44.000000000","message":"Why is this changed? New migration should be after this, not before.","commit_id":"c5b207ba1210b04345448068848d67575be2a519"}],"neutron/db/trunk_port_db.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.db import models_v2"},{"line_number":24,"context_line":"from neutron.extensions import trunk_port"},{"line_number":25,"context_line":"from neutron import manager"},{"line_number":26,"context_line":"import sqlalchemy as sa"},{"line_number":27,"context_line":"from sqlalchemy import orm"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"DEVICE_OWNER_TRUNK_INTF \u003d trunk_constants.DEVICE_OWNER_TRUNK_INTF"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_b28118c5","line":26,"updated":"2014-05-07 11:48:59.000000000","message":"Move the SQL alchemy imports up to top, and separate by blank line. Put them in alphabetical order.\n\nSee IMPORTS section in http://docs.openstack.org/developer/hacking/","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.db import models_v2"},{"line_number":24,"context_line":"from neutron.extensions import trunk_port"},{"line_number":25,"context_line":"from neutron import manager"},{"line_number":26,"context_line":"import sqlalchemy as sa"},{"line_number":27,"context_line":"from sqlalchemy import orm"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"DEVICE_OWNER_TRUNK_INTF \u003d trunk_constants.DEVICE_OWNER_TRUNK_INTF"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_26914df1","line":26,"in_reply_to":"9ad9bd40_b28118c5","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                port_data[\u0027binding:vif_details\u0027] \u003d tpb[\u0027vif_details\u0027]"},{"line_number":92,"context_line":"                port_data[\u0027binding:vif_type\u0027] \u003d tpb[\u0027vif_type\u0027]"},{"line_number":93,"context_line":"                port_data[\u0027binding:vnic_type\u0027] \u003d tpb[\u0027vnic_type\u0027]"},{"line_number":94,"context_line":"                # Dodo: Add check that address is free."},{"line_number":95,"context_line":"                port_data[\u0027mac_address\u0027] \u003d tp.mac_address"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _process_port_create_trunk_type(self, context, port, port_data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_92f5f458","line":94,"updated":"2014-05-07 11:48:59.000000000","message":"TODO?\n\nFormat should be \"# TODO(your-user-id): Add check...\"","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                port_data[\u0027binding:vif_details\u0027] \u003d tpb[\u0027vif_details\u0027]"},{"line_number":92,"context_line":"                port_data[\u0027binding:vif_type\u0027] \u003d tpb[\u0027vif_type\u0027]"},{"line_number":93,"context_line":"                port_data[\u0027binding:vnic_type\u0027] \u003d tpb[\u0027vnic_type\u0027]"},{"line_number":94,"context_line":"                # Dodo: Add check that address is free."},{"line_number":95,"context_line":"                port_data[\u0027mac_address\u0027] \u003d tp.mac_address"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _process_port_create_trunk_type(self, context, port, port_data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_0688c9c3","line":94,"in_reply_to":"9ad9bd40_92f5f458","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"             \u0027mac_address\u0027: tp[\u0027mac_address\u0027],"},{"line_number":154,"context_line":"             \u0027admin_state_up\u0027: True,"},{"line_number":155,"context_line":"             \u0027device_id\u0027: \u0027\u0027,"},{"line_number":156,"context_line":"             #\u0027device_owner\u0027: DEVICE_OWNER_TRUNK_INTF,"},{"line_number":157,"context_line":"             \u0027device_owner\u0027: \u0027\u0027,"},{"line_number":158,"context_line":"             \u0027security_groups\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":159,"context_line":"             \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_929c1411","line":156,"updated":"2014-05-07 11:48:59.000000000","message":"Dead code? If so remove.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":153,"context_line":"             \u0027mac_address\u0027: tp[\u0027mac_address\u0027],"},{"line_number":154,"context_line":"             \u0027admin_state_up\u0027: True,"},{"line_number":155,"context_line":"             \u0027device_id\u0027: \u0027\u0027,"},{"line_number":156,"context_line":"             #\u0027device_owner\u0027: DEVICE_OWNER_TRUNK_INTF,"},{"line_number":157,"context_line":"             \u0027device_owner\u0027: \u0027\u0027,"},{"line_number":158,"context_line":"             \u0027security_groups\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":159,"context_line":"             \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_448d2231","line":156,"in_reply_to":"9ad9bd40_929c1411","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            if subports:"},{"line_number":182,"context_line":"                status \u003d port.status"},{"line_number":183,"context_line":"                for p in subports:"},{"line_number":184,"context_line":"                    with context.session.begin(subtransactions\u003dTrue):"},{"line_number":185,"context_line":"                        self._core_plugin.update_port_status(context,"},{"line_number":186,"context_line":"                                                             p.port_id,"},{"line_number":187,"context_line":"                                                             status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_52a52c45","line":184,"updated":"2014-05-07 11:48:59.000000000","message":"Database experts can advise here, but questioning whether or not new session needed for each sub-port (move with clause outside loop?), or if needed at all, as there is an outer level session (L177).\n\nSame for L196","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            if subports:"},{"line_number":182,"context_line":"                status \u003d port.status"},{"line_number":183,"context_line":"                for p in subports:"},{"line_number":184,"context_line":"                    with context.session.begin(subtransactions\u003dTrue):"},{"line_number":185,"context_line":"                        self._core_plugin.update_port_status(context,"},{"line_number":186,"context_line":"                                                             p.port_id,"},{"line_number":187,"context_line":"                                                             status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_e4c38e36","line":184,"in_reply_to":"9ad9bd40_52a52c45","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                    with context.session.begin(subtransactions\u003dTrue):"},{"line_number":197,"context_line":"                        slave_port \u003d context.session.query("},{"line_number":198,"context_line":"                            models_v2.Port).filter_by(id\u003dp.port_id).one()"},{"line_number":199,"context_line":"                        slave_port.port_binding.host \u003d\\"},{"line_number":200,"context_line":"                            port[\u0027port\u0027][\u0027binding:host_id\u0027]"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _process_trunk_port_delete(self, context, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_d2705cde","line":199,"updated":"2014-05-07 11:48:59.000000000","message":"Per HACKING guide, don\u0027t use backslash to continue, use parens instead","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                    with context.session.begin(subtransactions\u003dTrue):"},{"line_number":197,"context_line":"                        slave_port \u003d context.session.query("},{"line_number":198,"context_line":"                            models_v2.Port).filter_by(id\u003dp.port_id).one()"},{"line_number":199,"context_line":"                        slave_port.port_binding.host \u003d\\"},{"line_number":200,"context_line":"                            port[\u0027port\u0027][\u0027binding:host_id\u0027]"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _process_trunk_port_delete(self, context, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e68a05be","line":199,"in_reply_to":"9ad9bd40_d2705cde","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        if trunk_port.PARENT in port:"},{"line_number":204,"context_line":"            self.trunkport_rpc_notifier.trunkports_updated("},{"line_number":205,"context_line":"                context, [port[trunk_port.PARENT]])"},{"line_number":206,"context_line":"        # delete all ports with parent \u003d port[\u0027id\u0027]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":209,"context_line":"            subports \u003d context.session.query("}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_127644d7","line":206,"updated":"2014-05-07 11:48:59.000000000","message":"dead code?","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        if trunk_port.PARENT in port:"},{"line_number":204,"context_line":"            self.trunkport_rpc_notifier.trunkports_updated("},{"line_number":205,"context_line":"                context, [port[trunk_port.PARENT]])"},{"line_number":206,"context_line":"        # delete all ports with parent \u003d port[\u0027id\u0027]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":209,"context_line":"            subports \u003d context.session.query("}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_a66b9def","line":206,"in_reply_to":"9ad9bd40_127644d7","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"}],"neutron/extensions/trunk_port.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"SUBPORTS \u003d SUBPORT + \u0027s\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class TrunkPortController(wsgi.Controller):"},{"line_number":57,"context_line":"    def index(self, request, **kwargs):"},{"line_number":58,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":59,"context_line":"        policy.enforce(request.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_122484c3","line":56,"updated":"2014-05-07 11:48:59.000000000","message":"Consider docstring for class","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"SUBPORTS \u003d SUBPORT + \u0027s\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class TrunkPortController(wsgi.Controller):"},{"line_number":57,"context_line":"    def index(self, request, **kwargs):"},{"line_number":58,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":59,"context_line":"        policy.enforce(request.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_c95a7229","line":56,"in_reply_to":"9ad9bd40_122484c3","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def create(self, request, body, **kwargs):"},{"line_number":66,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":67,"context_line":"        #policy.enforce(request.context,"},{"line_number":68,"context_line":"        #               \"create_%s\" % SUBPORT,"},{"line_number":69,"context_line":"        #               {})"},{"line_number":70,"context_line":"        return plugin.create_subport("}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_72331014","line":67,"updated":"2014-05-07 11:48:59.000000000","message":"Dead code? If so, remove.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def create(self, request, body, **kwargs):"},{"line_number":66,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":67,"context_line":"        #policy.enforce(request.context,"},{"line_number":68,"context_line":"        #               \"create_%s\" % SUBPORT,"},{"line_number":69,"context_line":"        #               {})"},{"line_number":70,"context_line":"        return plugin.create_subport("}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_24bad6e1","line":67,"in_reply_to":"9ad9bd40_72331014","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class Trunk_port(extensions.ExtensionDescriptor):"},{"line_number":76,"context_line":"    \"\"\"Extension class supporting trunk port."},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_d2477c75","line":76,"updated":"2014-05-07 11:48:59.000000000","message":"PEP8: One line docstring should have quotes all on same line.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class Trunk_port(extensions.ExtensionDescriptor):"},{"line_number":76,"context_line":"    \"\"\"Extension class supporting trunk port."},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e942d63c","line":76,"in_reply_to":"9ad9bd40_d2477c75","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"693e60a14cf5f5d8004b92f0f8f28ab1ba207978","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                 \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":41,"context_line":"                 \u0027enforce_policy\u0027: True,"},{"line_number":42,"context_line":"                 \u0027is_visible\u0027: True},"},{"line_number":43,"context_line":"        VID: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":44,"context_line":"              \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":45,"context_line":"              \u0027enforce_policy\u0027: True,"},{"line_number":46,"context_line":"              \u0027is_visible\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_2c7466ce","line":43,"updated":"2014-05-08 08:34:44.000000000","message":"This can be easily extended to more generic case with segment_id and segment_type.","commit_id":"04f148b7274a8bf2e6c35178a7d9a3e4bec65b2e"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"0947bfc6a070eab3a724cfd054816cca40f59dae","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                 \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":41,"context_line":"                 \u0027enforce_policy\u0027: True,"},{"line_number":42,"context_line":"                 \u0027is_visible\u0027: True},"},{"line_number":43,"context_line":"        VID: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":44,"context_line":"              \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":45,"context_line":"              \u0027enforce_policy\u0027: True,"},{"line_number":46,"context_line":"              \u0027is_visible\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_675207df","line":43,"in_reply_to":"7adec928_2c7466ce","updated":"2014-05-08 08:46:47.000000000","message":"My idea was to terminate the cloud provider way of representing a network on the trunkport and present it as a vlan to the VM, regardless if it is implemented as a VLAN, GRE-tunnel or other.\nThis would hide the internals of the cloud to the VM using the trunkport extension (Make it possible to use the same VM on different implementations).\nThis VID is the VID that the VM uses to access a specific subport on a trunkport.\nCould you elaborate on your proposal?","commit_id":"04f148b7274a8bf2e6c35178a7d9a3e4bec65b2e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4395dbb12bfcb766cd2087f0cb7022fa6ea0fb55","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                 \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":41,"context_line":"                 \u0027enforce_policy\u0027: True,"},{"line_number":42,"context_line":"                 \u0027is_visible\u0027: True},"},{"line_number":43,"context_line":"        VID: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":44,"context_line":"              \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":45,"context_line":"              \u0027enforce_policy\u0027: True,"},{"line_number":46,"context_line":"              \u0027is_visible\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_c5d7f721","line":43,"in_reply_to":"7adec928_675207df","updated":"2014-05-14 15:47:48.000000000","message":"you assumed that VM sees  VLAN-tagged packet.\nBut VM should be able to see what cloud admin specified.\ndepending on configuration, VM will see  VXLAN packet or whatever.","commit_id":"04f148b7274a8bf2e6c35178a7d9a3e4bec65b2e"}],"neutron/plugins/ml2/db.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":24,"context_line":"from neutron.plugins.ml2 import driver_api as api"},{"line_number":25,"context_line":"from neutron.plugins.ml2 import models"},{"line_number":26,"context_line":"from sqlalchemy.orm import exc"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_522a8c90","line":26,"updated":"2014-05-07 11:48:59.000000000","message":"Restore the original position of this.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":24,"context_line":"from neutron.plugins.ml2 import driver_api as api"},{"line_number":25,"context_line":"from neutron.plugins.ml2 import models"},{"line_number":26,"context_line":"from sqlalchemy.orm import exc"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_c63ee1d9","line":26,"in_reply_to":"9ad9bd40_522a8c90","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"def get_vlan_mappings(session, port):"},{"line_number":91,"context_line":"    \"\"\"Get VLAN mappings for a trunk network.\"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    remote_nets \u003d list()"},{"line_number":94,"context_line":"    if port.trunk_type:"},{"line_number":95,"context_line":"        if port.trunk_type.trunk_type !\u003d \u0027trunk\u0027:"},{"line_number":96,"context_line":"            return remote_nets"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_26b78d3b","line":93,"updated":"2014-05-07 11:48:59.000000000","message":"nit:  remote_nets \u003d []","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"def get_vlan_mappings(session, port):"},{"line_number":91,"context_line":"    \"\"\"Get VLAN mappings for a trunk network.\"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    remote_nets \u003d list()"},{"line_number":94,"context_line":"    if port.trunk_type:"},{"line_number":95,"context_line":"        if port.trunk_type.trunk_type !\u003d \u0027trunk\u0027:"},{"line_number":96,"context_line":"            return remote_nets"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e60da53f","line":93,"in_reply_to":"9ad9bd40_26b78d3b","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                filter(models.NetworkSegment.network_id \u003d\u003d"},{"line_number":109,"context_line":"                       models_v2.Port.network_id).all())"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            if vlan_mappings is None:"},{"line_number":112,"context_line":"                return"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            for mapping in vlan_mappings:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_b210385a","line":111,"updated":"2014-05-07 11:48:59.000000000","message":"if not vlan_mappings:","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                filter(models.NetworkSegment.network_id \u003d\u003d"},{"line_number":109,"context_line":"                       models_v2.Port.network_id).all())"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            if vlan_mappings is None:"},{"line_number":112,"context_line":"                return"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            for mapping in vlan_mappings:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_69016604","line":111,"in_reply_to":"9ad9bd40_b210385a","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"}],"neutron/plugins/ml2/drivers/mech_openvswitch.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def check_segment_for_agent(self, segment, agent):"},{"line_number":50,"context_line":"        mappings \u003d agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"},{"line_number":51,"context_line":"        tunnel_types \u003d agent[\u0027configurations\u0027].get(\u0027tunnel_types\u0027, [])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        LOG.debug(_(\"Checking segment: %(segment)s \""},{"line_number":54,"context_line":"                    \"for mappings: %(mappings)s \""},{"line_number":55,"context_line":"                    \"with tunnel_types: %(tunnel_types)s\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_86d7794a","line":52,"updated":"2014-05-07 11:48:59.000000000","message":"Nit: eliminate extraneous whitespace changes as can make merging more difficult.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def check_segment_for_agent(self, segment, agent):"},{"line_number":50,"context_line":"        mappings \u003d agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"},{"line_number":51,"context_line":"        tunnel_types \u003d agent[\u0027configurations\u0027].get(\u0027tunnel_types\u0027, [])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        LOG.debug(_(\"Checking segment: %(segment)s \""},{"line_number":54,"context_line":"                    \"for mappings: %(mappings)s \""},{"line_number":55,"context_line":"                    \"with tunnel_types: %(tunnel_types)s\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_a96c4ed1","line":52,"in_reply_to":"9ad9bd40_86d7794a","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        if self.check_segment_for_agent(segment, agent):"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"            vif_details \u003d {portbindings.CAP_PORT_FILTER: True}"},{"line_number":72,"context_line":"            if \u0027trunkport:type\u0027 in context.current and\\"},{"line_number":73,"context_line":"                    context.current[\u0027trunkport:type\u0027] \u003d\u003d \u0027trunk\u0027:"},{"line_number":74,"context_line":"                br \u003d (\u0027mbr\u0027 + context.current[\u0027id\u0027])[:self.DEV_NAME_LEN]"},{"line_number":75,"context_line":"                vif_details[\u0027bridge_name\u0027] \u003d br"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_06952986","line":72,"updated":"2014-05-07 11:48:59.000000000","message":"backslash -\u003e parens\n\nCould do:\n\nif context.current.get(\u0027trunkport:type\u0027) \u003d\u003d \u0027trunk\u0027:","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        if self.check_segment_for_agent(segment, agent):"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"            vif_details \u003d {portbindings.CAP_PORT_FILTER: True}"},{"line_number":72,"context_line":"            if \u0027trunkport:type\u0027 in context.current and\\"},{"line_number":73,"context_line":"                    context.current[\u0027trunkport:type\u0027] \u003d\u003d \u0027trunk\u0027:"},{"line_number":74,"context_line":"                br \u003d (\u0027mbr\u0027 + context.current[\u0027id\u0027])[:self.DEV_NAME_LEN]"},{"line_number":75,"context_line":"                vif_details[\u0027bridge_name\u0027] \u003d br"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_09ae1ae6","line":72,"in_reply_to":"9ad9bd40_06952986","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"e0d28a0290b5c8cf88c4d606912ce5b67800e8fc","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":38,"context_line":"            portbindings.VIF_TYPE_OVS,"},{"line_number":39,"context_line":"            {portbindings.CAP_PORT_FILTER: True,"},{"line_number":40,"context_line":"             portbindings.OVS_HYBRID_PLUG: True})"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def check_segment_for_agent(self, segment, agent):"},{"line_number":43,"context_line":"        mappings \u003d agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_7a74e7ce","side":"PARENT","line":40,"updated":"2014-07-25 09:14:58.000000000","message":"Removing OVS_HYBRID_PLUG means there will be no firewalling for all ports.","commit_id":"59da928e945ec58836d34fd561d30a8a446e2728"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"e0d28a0290b5c8cf88c4d606912ce5b67800e8fc","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                    self.vif_type,"},{"line_number":78,"context_line":"                                    vif_details)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"                self.notifier.prepare_port(context._plugin_context,"},{"line_number":81,"context_line":"                                           host,"},{"line_number":82,"context_line":"                                           br,"},{"line_number":83,"context_line":"                                           segment,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_47357cf5","line":80,"updated":"2014-07-25 09:14:58.000000000","message":"I believe we are in a DB transaction here, and we should not be doing RPCs to the agent.","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"421e183ef252f6b5abfea7bb4c8fed3d4ec8bda5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                    self.vif_type,"},{"line_number":78,"context_line":"                                    vif_details)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"                self.notifier.prepare_port(context._plugin_context,"},{"line_number":81,"context_line":"                                           host,"},{"line_number":82,"context_line":"                                           br,"},{"line_number":83,"context_line":"                                           segment,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_03ccd433","line":80,"in_reply_to":"baada198_47357cf5","updated":"2014-08-13 10:33:56.000000000","message":"Ok, will look into this.","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"e0d28a0290b5c8cf88c4d606912ce5b67800e8fc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            else:"},{"line_number":86,"context_line":"                context.set_binding(segment[api.ID],"},{"line_number":87,"context_line":"                                    self.vif_type,"},{"line_number":88,"context_line":"                                    vif_details)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_56abc174","line":88,"updated":"2014-07-25 09:14:58.000000000","message":"this is the same as L76 - I guess vif_details here should also have {portbindings.OVS_HYBRID_PLUG: True} so regular ports will be firewalled.","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"421e183ef252f6b5abfea7bb4c8fed3d4ec8bda5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            else:"},{"line_number":86,"context_line":"                context.set_binding(segment[api.ID],"},{"line_number":87,"context_line":"                                    self.vif_type,"},{"line_number":88,"context_line":"                                    vif_details)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_23e8f87a","line":88,"in_reply_to":"baada198_56abc174","updated":"2014-08-13 10:33:56.000000000","message":"Ok","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"}],"neutron/plugins/ml2/rpc.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                     \u0027trunk_networks\u0027: remote_nets,"},{"line_number":162,"context_line":"                     \u0027trunk_type\u0027: trunk_type}"},{"line_number":163,"context_line":"            LOG.debug(_(\"Returning: %s\"), entry)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"            return entry"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _find_segment(self, segments, segment_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_06dc4972","line":164,"updated":"2014-05-07 11:48:59.000000000","message":"Nit: eliminate extraneous whitespace changes as can make merging more difficult.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                     \u0027trunk_networks\u0027: remote_nets,"},{"line_number":162,"context_line":"                     \u0027trunk_type\u0027: trunk_type}"},{"line_number":163,"context_line":"            LOG.debug(_(\"Returning: %s\"), entry)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"            return entry"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _find_segment(self, segments, segment_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_298e7e79","line":164,"in_reply_to":"9ad9bd40_06dc4972","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                            port\u003dport,"},{"line_number":263,"context_line":"                            br_name\u003dbr_name,"},{"line_number":264,"context_line":"                            segment\u003dsegment)"},{"line_number":265,"context_line":"        ret \u003d self.call(context, msg, topic)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_26e5cd37","line":265,"updated":"2014-05-07 11:48:59.000000000","message":"eliminate temp variable\n\nreturn self.call(context, msg, topic)","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                            port\u003dport,"},{"line_number":263,"context_line":"                            br_name\u003dbr_name,"},{"line_number":264,"context_line":"                            segment\u003dsegment)"},{"line_number":265,"context_line":"        ret \u003d self.call(context, msg, topic)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_c9f6f2f8","line":265,"in_reply_to":"9ad9bd40_26e5cd37","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"e0d28a0290b5c8cf88c4d606912ce5b67800e8fc","unresolved":false,"context_lines":[{"line_number":221,"context_line":"              update_dhcp_port, and removed get_dhcp_port methods."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    \"\"\""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def __init__(self, topic):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a78738b5","line":224,"updated":"2014-07-25 09:14:58.000000000","message":"I think this needs to be bumped when extending the API.","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"421e183ef252f6b5abfea7bb4c8fed3d4ec8bda5","unresolved":false,"context_lines":[{"line_number":221,"context_line":"              update_dhcp_port, and removed get_dhcp_port methods."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    \"\"\""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def __init__(self, topic):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_8371c40f","line":224,"in_reply_to":"baada198_a78738b5","updated":"2014-08-13 10:33:56.000000000","message":"Ok.","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"e0d28a0290b5c8cf88c4d606912ce5b67800e8fc","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":251,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def prepare_port(self, context, host, br_name, segment, port):"},{"line_number":254,"context_line":"        topic \u003d topics.get_topic_name(self.topic,"},{"line_number":255,"context_line":"                                      \u0027port\u0027,"},{"line_number":256,"context_line":"                                      \u0027prepare\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_3299f6d0","line":253,"updated":"2014-07-25 09:14:58.000000000","message":"maybe something like prepare_trunk_port as it is specific to trunk ports.","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"421e183ef252f6b5abfea7bb4c8fed3d4ec8bda5","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":251,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def prepare_port(self, context, host, br_name, segment, port):"},{"line_number":254,"context_line":"        topic \u003d topics.get_topic_name(self.topic,"},{"line_number":255,"context_line":"                                      \u0027port\u0027,"},{"line_number":256,"context_line":"                                      \u0027prepare\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_0355b451","line":253,"in_reply_to":"baada198_3299f6d0","updated":"2014-08-13 10:33:56.000000000","message":"Agree, will do","commit_id":"58eaace71a0c15b1d4dc7a8f75554f57ab959158"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from neutron.plugins.common import constants as p_const"},{"line_number":43,"context_line":"from neutron.plugins.openvswitch.common import config  # noqa"},{"line_number":44,"context_line":"from neutron.plugins.openvswitch.common import constants"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# A placeholder for dead vlans."}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e6c5a58e","line":45,"updated":"2014-05-07 11:48:59.000000000","message":"Nit: eliminate extraneous whitespace changes as can make merging more difficult.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from neutron.plugins.common import constants as p_const"},{"line_number":43,"context_line":"from neutron.plugins.openvswitch.common import config  # noqa"},{"line_number":44,"context_line":"from neutron.plugins.openvswitch.common import constants"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# A placeholder for dead vlans."}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e9c5768e","line":45,"in_reply_to":"9ad9bd40_e6c5a58e","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class VLANBridge(ovs_lib.OVSBridge):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def configure(self, name, root_helper, int_br):"},{"line_number":106,"context_line":"        self.name \u003d name"},{"line_number":107,"context_line":"        self.root_helper \u003d root_helper"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_663995a3","line":104,"updated":"2014-05-07 11:48:59.000000000","message":"Consider docstrings for class and major/publically visible methods.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class VLANBridge(ovs_lib.OVSBridge):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def configure(self, name, root_helper, int_br):"},{"line_number":106,"context_line":"        self.name \u003d name"},{"line_number":107,"context_line":"        self.root_helper \u003d root_helper"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_29c67e68","line":104,"in_reply_to":"9ad9bd40_663995a3","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def set_mapping(self, vm_vid, fab_vid):"},{"line_number":179,"context_line":"        if vm_vid is None:"},{"line_number":180,"context_line":"            self.new_int_br_flows.add((\"Untagged\", fab_vid))"},{"line_number":181,"context_line":"            self.int_br.add_flow("},{"line_number":182,"context_line":"                priority\u003d3, in_port\u003dself.int_br_ofport,"},{"line_number":183,"context_line":"                dl_vlan\u003d0xffff,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_6607d5ca","line":180,"updated":"2014-05-07 11:48:59.000000000","message":"The two halves of the if clause are very similar. Consider using a function and passing in vm_vid/\"Untagged\", 0xffff/vm_vid for variations.","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def set_mapping(self, vm_vid, fab_vid):"},{"line_number":179,"context_line":"        if vm_vid is None:"},{"line_number":180,"context_line":"            self.new_int_br_flows.add((\"Untagged\", fab_vid))"},{"line_number":181,"context_line":"            self.int_br.add_flow("},{"line_number":182,"context_line":"                priority\u003d3, in_port\u003dself.int_br_ofport,"},{"line_number":183,"context_line":"                dl_vlan\u003d0xffff,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_01aa2c70","line":180,"in_reply_to":"9ad9bd40_6607d5ca","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":800,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":801,"context_line":"        LOG.info(\u0027Setting up ancillary bridges.\u0027)"},{"line_number":802,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":803,"context_line":"        # Remove all known bridges"},{"line_number":804,"context_line":"        ovs_bridges.remove(integ_br)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_26014daf","line":801,"updated":"2014-05-07 11:48:59.000000000","message":"I18n...\n\nLOG.info(_(\u0027Setting...\u0027))","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":800,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":801,"context_line":"        LOG.info(\u0027Setting up ancillary bridges.\u0027)"},{"line_number":802,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":803,"context_line":"        # Remove all known bridges"},{"line_number":804,"context_line":"        ovs_bridges.remove(integ_br)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_696086a5","line":801,"in_reply_to":"9ad9bd40_26014daf","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5acb15862117f2439d8628a12d79eea0d84d15c6","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"                    changed_ports.add(port)"},{"line_number":1023,"context_line":"        return changed_ports"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def update_ancillary_ports(self, registered_ports, updated_ports\u003d[]):"},{"line_number":1026,"context_line":"        ports \u003d set()"},{"line_number":1027,"context_line":"        real_updated_ports \u003d set()"},{"line_number":1028,"context_line":"        for bridge in self.ancillary_brs:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_46ec91f3","line":1025,"updated":"2014-05-07 11:48:59.000000000","message":"Although you are not appending to updated_ports in the method, it\u0027s probably a good practice to use the idiom of setting the default to None and then in the function doing...\n\nif updated_ports is None:\n    updated_ports \u003d []","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"},{"author":{"_account_id":11097,"name":"Erik Moe","email":"erik.moe@ericsson.com","username":"Erik.M"},"change_message_id":"58902602ea67e844856fb623e38b949535c127e2","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"                    changed_ports.add(port)"},{"line_number":1023,"context_line":"        return changed_ports"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def update_ancillary_ports(self, registered_ports, updated_ports\u003d[]):"},{"line_number":1026,"context_line":"        ports \u003d set()"},{"line_number":1027,"context_line":"        real_updated_ports \u003d set()"},{"line_number":1028,"context_line":"        for bridge in self.ancillary_brs:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_21dd6815","line":1025,"in_reply_to":"9ad9bd40_46ec91f3","updated":"2014-05-07 19:43:25.000000000","message":"Done","commit_id":"63c1ab341cec422fce12e33fb114f1c6e6988e36"}]}
