)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5a7cec4916dedfed1a7d8aa42a38a8807af1ec87","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make DVR portbinding implementation generic"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"HA interfaces(DEVICE_OWNER_HA_REPLICATED_INT, DEVICE_OWNER_ROUTER_SNAT)"},{"line_number":10,"context_line":"will be using multiple port binding implementation of DVR. So we make"},{"line_number":11,"context_line":"DVR port binding generic, so that it can be used for all distributed"},{"line_number":12,"context_line":"ports."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Current DVR implementation sets port\u0027s vif_type to VIF_TYPE_DISTRIBUTED"},{"line_number":15,"context_line":"as part of port_dict. We will make all distributed ports(HA and DVR) to"},{"line_number":16,"context_line":"follow this i.e setting vif_type to VIF_TYPE_DISTRIBUTED."},{"line_number":17,"context_line":"And instead of using device_owner for checking distributed ports,"},{"line_number":18,"context_line":"we will use vif_type."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"In \u0027ml2_port_bindings\u0027 table, current implementation for DVR sets"},{"line_number":21,"context_line":"vif_type to VIF_TYPE_UNBOUND. We modify it to VIF_TYPE_DISTRIBUTED"},{"line_number":22,"context_line":"to make db checks simpler in l2pop."},{"line_number":23,"context_line":"No API changes are required as API requests for DVR ports already"},{"line_number":24,"context_line":"returning vif_type as VIF_TYPE_DISTRIBUTED."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1595043"},{"line_number":27,"context_line":"Partial-Bug: #1522980"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_0da62ac1","line":24,"range":{"start_line":9,"start_character":0,"end_line":24,"end_character":43},"updated":"2016-06-22 08:47:59.000000000","message":"Please make it clear what was done in parent patch, what exactly this patch is doing and what is planned to do in the next patch. Currently it sounds like this patch does everything.","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"32788af77352b249b8ba87b3852b4e509c2933bd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make DVR portbinding implementation generic"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"HA interfaces(DEVICE_OWNER_HA_REPLICATED_INT, DEVICE_OWNER_ROUTER_SNAT)"},{"line_number":10,"context_line":"will be using multiple port binding implementation of DVR. So we make"},{"line_number":11,"context_line":"DVR port binding generic, so that it can be used for all distributed"},{"line_number":12,"context_line":"ports."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Current DVR implementation sets port\u0027s vif_type to VIF_TYPE_DISTRIBUTED"},{"line_number":15,"context_line":"as part of port_dict. We will make all distributed ports(HA and DVR) to"},{"line_number":16,"context_line":"follow this i.e setting vif_type to VIF_TYPE_DISTRIBUTED."},{"line_number":17,"context_line":"And instead of using device_owner for checking distributed ports,"},{"line_number":18,"context_line":"we will use vif_type."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"In \u0027ml2_port_bindings\u0027 table, current implementation for DVR sets"},{"line_number":21,"context_line":"vif_type to VIF_TYPE_UNBOUND. We modify it to VIF_TYPE_DISTRIBUTED"},{"line_number":22,"context_line":"to make db checks simpler in l2pop."},{"line_number":23,"context_line":"No API changes are required as API requests for DVR ports already"},{"line_number":24,"context_line":"returning vif_type as VIF_TYPE_DISTRIBUTED."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1595043"},{"line_number":27,"context_line":"Partial-Bug: #1522980"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_c214e8f6","line":24,"range":{"start_line":9,"start_character":0,"end_line":24,"end_character":43},"in_reply_to":"3aaa91ec_0da62ac1","updated":"2016-06-22 10:28:54.000000000","message":"sure","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            for rp in router_db.attached_ports.filter_by(port_type\u003dold_owner):"},{"line_number":118,"context_line":"                rp.port_type \u003d new_owner"},{"line_number":119,"context_line":"                rp.port.device_owner \u003d new_owner"},{"line_number":120,"context_line":"                rp.port.port_binding.vif_type \u003d\\"},{"line_number":121,"context_line":"                    portbindings.VIF_TYPE_DISTRIBUTED"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _update_router_db(self, context, router_id, data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_b9548821","line":120,"updated":"2016-06-02 15:50:51.000000000","message":"nit: s/\\/ (\nand add trailing ) below","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            for rp in router_db.attached_ports.filter_by(port_type\u003dold_owner):"},{"line_number":118,"context_line":"                rp.port_type \u003d new_owner"},{"line_number":119,"context_line":"                rp.port.device_owner \u003d new_owner"},{"line_number":120,"context_line":"                rp.port.port_binding.vif_type \u003d\\"},{"line_number":121,"context_line":"                    portbindings.VIF_TYPE_DISTRIBUTED"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _update_router_db(self, context, router_id, data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_0e46f120","line":120,"in_reply_to":"9abb7d3a_b9548821","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"}],"neutron/plugins/ml2/driver_context.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        # REVISIT(rkukura): Eliminate special DVR case as part of"},{"line_number":138,"context_line":"        # resolving bug 1367391?"},{"line_number":139,"context_line":"        if self._port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":140,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":141,"context_line":"            return self._binding.status"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return self._port[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_740fc72e","line":140,"updated":"2016-06-02 15:50:51.000000000","message":"nit: use () here instead of \\","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        # REVISIT(rkukura): Eliminate special DVR case as part of"},{"line_number":138,"context_line":"        # resolving bug 1367391?"},{"line_number":139,"context_line":"        if self._port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":140,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":141,"context_line":"            return self._binding.status"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return self._port[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_8e6021a6","line":140,"in_reply_to":"9abb7d3a_740fc72e","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        # REVISIT(rkukura): Eliminate special DVR case as part of"},{"line_number":204,"context_line":"        # resolving bug 1367391?"},{"line_number":205,"context_line":"        if self._port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":206,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":207,"context_line":"            return self._binding.host"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        return self._port.get(portbindings.HOST_ID)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_d41cb36c","line":206,"updated":"2016-06-02 15:50:51.000000000","message":"ditto","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        # REVISIT(rkukura): Eliminate special DVR case as part of"},{"line_number":204,"context_line":"        # resolving bug 1367391?"},{"line_number":205,"context_line":"        if self._port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":206,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":207,"context_line":"            return self._binding.host"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        return self._port.get(portbindings.HOST_ID)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_6e6cdd9c","line":206,"in_reply_to":"9abb7d3a_d41cb36c","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        # REVISIT(rkukura): Eliminate special DVR case as part of"},{"line_number":214,"context_line":"        # resolving bug 1367391?"},{"line_number":215,"context_line":"        if self._port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":216,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":217,"context_line":"            return self._original_port and self._binding.host"},{"line_number":218,"context_line":"        else:"},{"line_number":219,"context_line":"            return (self._original_port and"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_541f235b","line":216,"updated":"2016-06-02 15:50:51.000000000","message":"ditto","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        # REVISIT(rkukura): Eliminate special DVR case as part of"},{"line_number":214,"context_line":"        # resolving bug 1367391?"},{"line_number":215,"context_line":"        if self._port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":216,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":217,"context_line":"            return self._original_port and self._binding.host"},{"line_number":218,"context_line":"        else:"},{"line_number":219,"context_line":"            return (self._original_port and"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_ce118906","line":216,"in_reply_to":"9abb7d3a_541f235b","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"}],"neutron/plugins/ml2/drivers/l2pop/db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b0615bc0dc4fb60d3e2d2be09cae6d935f9d524e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        query2 \u003d query2.filter(models_v2.Port.network_id \u003d\u003d network_id,"},{"line_number":109,"context_line":"                               ml2_models.DistributedPortBinding.status \u003d\u003d"},{"line_number":110,"context_line":"                               const.PORT_STATUS_ACTIVE,"},{"line_number":111,"context_line":"                               models_v2.Port.device_owner \u003d\u003d"},{"line_number":112,"context_line":"                               const.DEVICE_OWNER_DVR_INTERFACE,"},{"line_number":113,"context_line":"                               ml2_models.DistributedPortBinding.host \u003d\u003d"},{"line_number":114,"context_line":"                               agent_host)"},{"line_number":115,"context_line":"        return (query1.count() + query2.count())"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_6220714a","line":112,"range":{"start_line":111,"start_character":31,"end_line":112,"end_character":64},"updated":"2016-06-03 13:16:34.000000000","message":"shoud we count HA ports here as well?","commit_id":"7ce5828b7a3ee09abed0aa47d51e801e143ffa7f"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"cef41f79a2a34036dbdd590521539751d7bcd2ee","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        query2 \u003d query2.filter(models_v2.Port.network_id \u003d\u003d network_id,"},{"line_number":109,"context_line":"                               ml2_models.DistributedPortBinding.status \u003d\u003d"},{"line_number":110,"context_line":"                               const.PORT_STATUS_ACTIVE,"},{"line_number":111,"context_line":"                               models_v2.Port.device_owner \u003d\u003d"},{"line_number":112,"context_line":"                               const.DEVICE_OWNER_DVR_INTERFACE,"},{"line_number":113,"context_line":"                               ml2_models.DistributedPortBinding.host \u003d\u003d"},{"line_number":114,"context_line":"                               agent_host)"},{"line_number":115,"context_line":"        return (query1.count() + query2.count())"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_a5e7033f","line":112,"range":{"start_line":111,"start_character":31,"end_line":112,"end_character":64},"in_reply_to":"9abb7d3a_6220714a","updated":"2016-06-03 13:45:10.000000000","message":"In this patch, HA port is considered as a normal port. So HA port will be part of query1 and not query2. And DVR  DEVICE_OWNER_DVR_INTERFACE will be part of query2.\n\nHA port will be part of query2 with https://review.openstack.org/#/c/323314/ (3rd patch in this topic).","commit_id":"7ce5828b7a3ee09abed0aa47d51e801e143ffa7f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5a7cec4916dedfed1a7d8aa42a38a8807af1ec87","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return query"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def get_nondvr_active_network_ports(session, network_id):"},{"line_number":75,"context_line":"    query \u003d _get_active_network_ports(session, network_id)"},{"line_number":76,"context_line":"    query \u003d query.filter(ml2_models.PortBinding.vif_type !\u003d"},{"line_number":77,"context_line":"                         portbindings.VIF_TYPE_DISTRIBUTED)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_7a6de203","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":14},"updated":"2016-06-22 08:47:59.000000000","message":"non_distributed?","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"32788af77352b249b8ba87b3852b4e509c2933bd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return query"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def get_nondvr_active_network_ports(session, network_id):"},{"line_number":75,"context_line":"    query \u003d _get_active_network_ports(session, network_id)"},{"line_number":76,"context_line":"    query \u003d query.filter(ml2_models.PortBinding.vif_type !\u003d"},{"line_number":77,"context_line":"                         portbindings.VIF_TYPE_DISTRIBUTED)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_42d91821","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":14},"in_reply_to":"3aaa91ec_7a6de203","updated":"2016-06-22 10:28:54.000000000","message":"sure","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5a7cec4916dedfed1a7d8aa42a38a8807af1ec87","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            if get_agent_ip(agent)]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def get_dvr_active_network_ports(session, network_id):"},{"line_number":83,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":84,"context_line":"        query \u003d session.query(ml2_models.DistributedPortBinding,"},{"line_number":85,"context_line":"                              agents_db.Agent)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_3a4a3a84","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":11},"updated":"2016-06-22 08:47:59.000000000","message":"distributed?","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"32788af77352b249b8ba87b3852b4e509c2933bd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            if get_agent_ip(agent)]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def get_dvr_active_network_ports(session, network_id):"},{"line_number":83,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":84,"context_line":"        query \u003d session.query(ml2_models.DistributedPortBinding,"},{"line_number":85,"context_line":"                              agents_db.Agent)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_c2034872","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":11},"in_reply_to":"3aaa91ec_3a4a3a84","updated":"2016-06-22 10:28:54.000000000","message":"sure","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                {attributes.PORT: {\u0027status\u0027: const.PORT_STATUS_DOWN}})"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        if port[\u0027device_owner\u0027] \u003d\u003d const.DEVICE_OWNER_DVR_INTERFACE:"},{"line_number":321,"context_line":"            binding.vif_type \u003d portbindings.VIF_TYPE_DISTRIBUTED"},{"line_number":322,"context_line":"            binding.vif_details \u003d \u0027\u0027"},{"line_number":323,"context_line":"            db.clear_binding_levels(session, port_id, original_host)"},{"line_number":324,"context_line":"            mech_context._clear_binding_levels()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_74ca2770","line":321,"updated":"2016-06-02 15:50:51.000000000","message":"I\u0027ll take your word this is right :)","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                {attributes.PORT: {\u0027status\u0027: const.PORT_STATUS_DOWN}})"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        if port[\u0027device_owner\u0027] \u003d\u003d const.DEVICE_OWNER_DVR_INTERFACE:"},{"line_number":321,"context_line":"            binding.vif_type \u003d portbindings.VIF_TYPE_DISTRIBUTED"},{"line_number":322,"context_line":"            binding.vif_details \u003d \u0027\u0027"},{"line_number":323,"context_line":"            db.clear_binding_levels(session, port_id, original_host)"},{"line_number":324,"context_line":"            mech_context._clear_binding_levels()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_4e1599e3","line":321,"in_reply_to":"9abb7d3a_74ca2770","updated":"2016-06-03 13:03:48.000000000","message":"thanks","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":444,"context_line":"            port \u003d self._make_port_dict(port_db)"},{"line_number":445,"context_line":"            network \u003d bind_context.network.current"},{"line_number":446,"context_line":"            if port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":447,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":448,"context_line":"                # REVISIT(rkukura): The PortBinding instance from the"},{"line_number":449,"context_line":"                # ml2_port_bindings table, returned as cur_binding"},{"line_number":450,"context_line":"                # from db.get_locked_port_and_binding() above, is"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_b45e4f10","line":447,"updated":"2016-06-02 15:50:51.000000000","message":"same nit","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":444,"context_line":"            port \u003d self._make_port_dict(port_db)"},{"line_number":445,"context_line":"            network \u003d bind_context.network.current"},{"line_number":446,"context_line":"            if port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":447,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":448,"context_line":"                # REVISIT(rkukura): The PortBinding instance from the"},{"line_number":449,"context_line":"                # ml2_port_bindings table, returned as cur_binding"},{"line_number":450,"context_line":"                # from db.get_locked_port_and_binding() above, is"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_2ee77513","line":447,"in_reply_to":"9abb7d3a_b45e4f10","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"            # DVR and non-DVR cases here."},{"line_number":1300,"context_line":"            # TODO(Swami): This code need to be revisited."},{"line_number":1301,"context_line":"            if updated_port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":1302,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1303,"context_line":"                dist_binding_list \u003d db.get_distributed_port_bindings(session,"},{"line_number":1304,"context_line":"                                                                    id)"},{"line_number":1305,"context_line":"                for dist_binding in dist_binding_list:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_94aeabe5","line":1302,"updated":"2016-06-02 15:50:51.000000000","message":"same nit","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"            # DVR and non-DVR cases here."},{"line_number":1300,"context_line":"            # TODO(Swami): This code need to be revisited."},{"line_number":1301,"context_line":"            if updated_port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":1302,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1303,"context_line":"                dist_binding_list \u003d db.get_distributed_port_bindings(session,"},{"line_number":1304,"context_line":"                                                                    id)"},{"line_number":1305,"context_line":"                for dist_binding in dist_binding_list:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_4eec79f3","line":1302,"in_reply_to":"9abb7d3a_94aeabe5","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"            bound_mech_contexts \u003d []"},{"line_number":1452,"context_line":"            device_owner \u003d port[\u0027device_owner\u0027]"},{"line_number":1453,"context_line":"            if port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":1454,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1455,"context_line":"                bindings \u003d db.get_distributed_port_bindings(context.session,"},{"line_number":1456,"context_line":"                                                            id)"},{"line_number":1457,"context_line":"                for bind in bindings:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_d454b3cb","line":1454,"updated":"2016-06-02 15:50:51.000000000","message":"same nit","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"            bound_mech_contexts \u003d []"},{"line_number":1452,"context_line":"            device_owner \u003d port[\u0027device_owner\u0027]"},{"line_number":1453,"context_line":"            if port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":1454,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1455,"context_line":"                bindings \u003d db.get_distributed_port_bindings(context.session,"},{"line_number":1456,"context_line":"                                                            id)"},{"line_number":1457,"context_line":"                for bind in bindings:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_ceb6a9f8","line":1454,"in_reply_to":"9abb7d3a_d454b3cb","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"                network \u003d self.get_network(plugin_context, port[\u0027network_id\u0027])"},{"line_number":1527,"context_line":""},{"line_number":1528,"context_line":"            if port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":1529,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1530,"context_line":"                binding \u003d db.get_distributed_port_binding_by_host("},{"line_number":1531,"context_line":"                    session, port[\u0027id\u0027], host)"},{"line_number":1532,"context_line":"                if not binding:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_145d9bec","line":1529,"updated":"2016-06-02 15:50:51.000000000","message":"same nit","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"                network \u003d self.get_network(plugin_context, port[\u0027network_id\u0027])"},{"line_number":1527,"context_line":""},{"line_number":1528,"context_line":"            if port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":1529,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1530,"context_line":"                binding \u003d db.get_distributed_port_binding_by_host("},{"line_number":1531,"context_line":"                    session, port[\u0027id\u0027], host)"},{"line_number":1532,"context_line":"                if not binding:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_0ec9d179","line":1529,"in_reply_to":"9abb7d3a_145d9bec","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"                self.mechanism_manager.update_port_precommit(mech_context)"},{"line_number":1592,"context_line":"                updated \u003d True"},{"line_number":1593,"context_line":"            elif port.port_binding.vif_type \u003d\u003d\\"},{"line_number":1594,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1595,"context_line":"                binding \u003d db.get_distributed_port_binding_by_host("},{"line_number":1596,"context_line":"                    session, port[\u0027id\u0027], host)"},{"line_number":1597,"context_line":"                if not binding:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_94718b7a","line":1594,"updated":"2016-06-02 15:50:51.000000000","message":"same nit","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"                self.mechanism_manager.update_port_precommit(mech_context)"},{"line_number":1592,"context_line":"                updated \u003d True"},{"line_number":1593,"context_line":"            elif port.port_binding.vif_type \u003d\u003d\\"},{"line_number":1594,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1595,"context_line":"                binding \u003d db.get_distributed_port_binding_by_host("},{"line_number":1596,"context_line":"                    session, port[\u0027id\u0027], host)"},{"line_number":1597,"context_line":"                if not binding:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_aea085a6","line":1594,"in_reply_to":"9abb7d3a_94718b7a","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5a7cec4916dedfed1a7d8aa42a38a8807af1ec87","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"            # TODO(Swami): This code need to be revisited."},{"line_number":1301,"context_line":"            if updated_port[portbindings.VIF_TYPE] \u003d\u003d ("},{"line_number":1302,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED):"},{"line_number":1303,"context_line":"                dist_binding_list \u003d db.get_distributed_port_bindings(session,"},{"line_number":1304,"context_line":"                                                                    id)"},{"line_number":1305,"context_line":"                for dist_binding in dist_binding_list:"},{"line_number":1306,"context_line":"                    levels \u003d db.get_binding_levels(session, id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_8d3e9ab6","line":1303,"range":{"start_line":1303,"start_character":69,"end_line":1303,"end_character":76},"updated":"2016-06-22 08:47:59.000000000","message":"newline","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"32788af77352b249b8ba87b3852b4e509c2933bd","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"            # TODO(Swami): This code need to be revisited."},{"line_number":1301,"context_line":"            if updated_port[portbindings.VIF_TYPE] \u003d\u003d ("},{"line_number":1302,"context_line":"                portbindings.VIF_TYPE_DISTRIBUTED):"},{"line_number":1303,"context_line":"                dist_binding_list \u003d db.get_distributed_port_bindings(session,"},{"line_number":1304,"context_line":"                                                                    id)"},{"line_number":1305,"context_line":"                for dist_binding in dist_binding_list:"},{"line_number":1306,"context_line":"                    levels \u003d db.get_binding_levels(session, id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_c23a2836","line":1303,"range":{"start_line":1303,"start_character":69,"end_line":1303,"end_character":76},"in_reply_to":"3aaa91ec_8d3e9ab6","updated":"2016-06-22 10:28:54.000000000","message":"sure","commit_id":"6b2fc9a37401b9abd258d7bf53d854e45a97dc03"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"03d88caff9b8e304be700980267aafec3ecf792f","unresolved":false,"context_lines":[{"line_number":1548,"context_line":"                             \"it might have been deleted already.\"),"},{"line_number":1549,"context_line":"                         port_id)"},{"line_number":1550,"context_line":"                return"},{"line_number":1551,"context_line":"            if binding.vif_type \u003d\u003d portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1552,"context_line":"                binding \u003d db.get_distributed_port_binding_by_host("},{"line_number":1553,"context_line":"                    session, port[\u0027id\u0027], host)"},{"line_number":1554,"context_line":"                if not binding:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_0523fdbd","line":1551,"updated":"2016-06-30 17:00:45.000000000","message":"nit: can be elif","commit_id":"b297746d83e3763f18c75c316dbd25b277e3f61a"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"e8c38c2428539b8fa912d4f8196c3a4b9f2153f7","unresolved":false,"context_lines":[{"line_number":1548,"context_line":"                             \"it might have been deleted already.\"),"},{"line_number":1549,"context_line":"                         port_id)"},{"line_number":1550,"context_line":"                return"},{"line_number":1551,"context_line":"            if binding.vif_type \u003d\u003d portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":1552,"context_line":"                binding \u003d db.get_distributed_port_binding_by_host("},{"line_number":1553,"context_line":"                    session, port[\u0027id\u0027], host)"},{"line_number":1554,"context_line":"                if not binding:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_5579172e","line":1551,"in_reply_to":"3aaa91ec_0523fdbd","updated":"2016-07-01 06:48:27.000000000","message":"sure","commit_id":"b297746d83e3763f18c75c316dbd25b277e3f61a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"03d88caff9b8e304be700980267aafec3ecf792f","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"                    self, plugin_context, port, network, binding, levels)"},{"line_number":1561,"context_line":"            else:"},{"line_number":1562,"context_line":"                levels \u003d db.get_binding_levels(session, port_db.id,"},{"line_number":1563,"context_line":"                                               port_db.port_binding.host)"},{"line_number":1564,"context_line":"                port_context \u003d driver_context.PortContext("},{"line_number":1565,"context_line":"                    self, plugin_context, port, network, binding, levels)"},{"line_number":1566,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_00112b52","line":1563,"updated":"2016-06-30 17:00:45.000000000","message":"nit: s/port_db.port_binding.host/binding.host","commit_id":"b297746d83e3763f18c75c316dbd25b277e3f61a"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"e8c38c2428539b8fa912d4f8196c3a4b9f2153f7","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"                    self, plugin_context, port, network, binding, levels)"},{"line_number":1561,"context_line":"            else:"},{"line_number":1562,"context_line":"                levels \u003d db.get_binding_levels(session, port_db.id,"},{"line_number":1563,"context_line":"                                               port_db.port_binding.host)"},{"line_number":1564,"context_line":"                port_context \u003d driver_context.PortContext("},{"line_number":1565,"context_line":"                    self, plugin_context, port, network, binding, levels)"},{"line_number":1566,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_55a0f78f","line":1563,"in_reply_to":"3aaa91ec_00112b52","updated":"2016-07-01 06:48:27.000000000","message":"sure","commit_id":"b297746d83e3763f18c75c316dbd25b277e3f61a"}],"neutron/plugins/ml2/rpc.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"131cc6a632b8ad68325737a0b10f5e8d7312a415","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                      {\u0027device\u0027: device, \u0027host\u0027: host})"},{"line_number":212,"context_line":"            return"},{"line_number":213,"context_line":"        if port and port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":214,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":215,"context_line":"            # NOTE(kevinbenton): we have to special case DVR ports because of"},{"line_number":216,"context_line":"            # the special multi-binding status update logic they have that"},{"line_number":217,"context_line":"            # depends on the host"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_54aa8386","line":214,"updated":"2016-06-02 15:50:51.000000000","message":"same nit","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a75b5ee5eec9e82224f90bb8f4107f4381ac03b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                      {\u0027device\u0027: device, \u0027host\u0027: host})"},{"line_number":212,"context_line":"            return"},{"line_number":213,"context_line":"        if port and port[portbindings.VIF_TYPE] \u003d\u003d\\"},{"line_number":214,"context_line":"            portbindings.VIF_TYPE_DISTRIBUTED:"},{"line_number":215,"context_line":"            # NOTE(kevinbenton): we have to special case DVR ports because of"},{"line_number":216,"context_line":"            # the special multi-binding status update logic they have that"},{"line_number":217,"context_line":"            # depends on the host"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_8ea301b1","line":214,"in_reply_to":"9abb7d3a_54aa8386","updated":"2016-06-03 13:03:48.000000000","message":"done","commit_id":"8c27d6ef4e7ab125b131eeeb27b8a43cc1a6713c"}],"neutron/tests/functional/services/l3_router/test_l3_dvr_router_plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d1e61b740783b89b353a8b5b813c778df3c286c5","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            self.l3_plugin._get_agent_gw_ports_exist_for_network("},{"line_number":223,"context_line":"                self.context, ext_net_id, \"\", self.l3_agent[\u0027id\u0027]))"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _get_port(self, device_id, device_owner):"},{"line_number":226,"context_line":"        device_filter \u003d {\u0027device_id\u0027: [device_id],"},{"line_number":227,"context_line":"                         \u0027device_owner\u0027: [device_owner]}"},{"line_number":228,"context_line":"        port \u003d self.core_plugin.get_ports(self.context,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_d629713c","line":225,"range":{"start_line":225,"start_character":8,"end_line":225,"end_character":17},"updated":"2016-07-01 16:00:43.000000000","message":"not sure it\u0027s worth making a separate method for this","commit_id":"729c8458821a466ae841bcb7a207bd54b9ea8e71"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"1cdb4e26351799c0f09e52a696b19449dd8a5856","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            self.l3_plugin._get_agent_gw_ports_exist_for_network("},{"line_number":223,"context_line":"                self.context, ext_net_id, \"\", self.l3_agent[\u0027id\u0027]))"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _get_port(self, device_id, device_owner):"},{"line_number":226,"context_line":"        device_filter \u003d {\u0027device_id\u0027: [device_id],"},{"line_number":227,"context_line":"                         \u0027device_owner\u0027: [device_owner]}"},{"line_number":228,"context_line":"        port \u003d self.core_plugin.get_ports(self.context,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_a4b90818","line":225,"range":{"start_line":225,"start_character":8,"end_line":225,"end_character":17},"in_reply_to":"3aaa91ec_d629713c","updated":"2016-07-01 19:40:28.000000000","message":"removed it","commit_id":"729c8458821a466ae841bcb7a207bd54b9ea8e71"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d1e61b740783b89b353a8b5b813c778df3c286c5","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                                          filters\u003ddevice_filter)[0]"},{"line_number":230,"context_line":"        return port"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _get_dvr_port_status_by_host(self, port_id, host):"},{"line_number":233,"context_line":"        binding \u003d (self.context.session.query(models.DistributedPortBinding)."},{"line_number":234,"context_line":"                   filter_by(port_id\u003dport_id,"},{"line_number":235,"context_line":"                             host\u003dhost).first())"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_f628ed35","line":232,"range":{"start_line":232,"start_character":8,"end_line":232,"end_character":36},"updated":"2016-07-01 16:00:43.000000000","message":"ditto","commit_id":"729c8458821a466ae841bcb7a207bd54b9ea8e71"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"1cdb4e26351799c0f09e52a696b19449dd8a5856","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                                          filters\u003ddevice_filter)[0]"},{"line_number":230,"context_line":"        return port"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _get_dvr_port_status_by_host(self, port_id, host):"},{"line_number":233,"context_line":"        binding \u003d (self.context.session.query(models.DistributedPortBinding)."},{"line_number":234,"context_line":"                   filter_by(port_id\u003dport_id,"},{"line_number":235,"context_line":"                             host\u003dhost).first())"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_443f8487","line":232,"range":{"start_line":232,"start_character":8,"end_line":232,"end_character":36},"in_reply_to":"3aaa91ec_f628ed35","updated":"2016-07-01 19:40:28.000000000","message":"made as private method","commit_id":"729c8458821a466ae841bcb7a207bd54b9ea8e71"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0c3f90e5672cb1ce898c0e714106976418bd57a1","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        device_owner flag."},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        with self.subnet(cidr\u003d\u002720.0.0.0/24\u0027) as int_subnet,\\"},{"line_number":233,"context_line":"            self.port(subnet\u003dint_subnet,"},{"line_number":234,"context_line":"                      device_owner\u003dDEVICE_OWNER_COMPUTE):"},{"line_number":235,"context_line":"            helpers.register_l3_agent(host\u003d\u0027host1\u0027,"},{"line_number":236,"context_line":"                agent_mode\u003dn_const.L3_AGENT_MODE_DVR)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_18fdcd3a","line":234,"range":{"start_line":233,"start_character":12,"end_line":234,"end_character":57},"updated":"2016-07-04 08:30:10.000000000","message":"is this needed?","commit_id":"cdbcdfa004178710b73170596dccdec053482394"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"ccfdc16351371013f16fe019a7122c2d0f1f107d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        device_owner flag."},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        with self.subnet(cidr\u003d\u002720.0.0.0/24\u0027) as int_subnet,\\"},{"line_number":233,"context_line":"            self.port(subnet\u003dint_subnet,"},{"line_number":234,"context_line":"                      device_owner\u003dDEVICE_OWNER_COMPUTE):"},{"line_number":235,"context_line":"            helpers.register_l3_agent(host\u003d\u0027host1\u0027,"},{"line_number":236,"context_line":"                agent_mode\u003dn_const.L3_AGENT_MODE_DVR)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_2e2cbe49","line":234,"range":{"start_line":233,"start_character":12,"end_line":234,"end_character":57},"in_reply_to":"1aa78d24_094c61c6","updated":"2016-07-04 10:31:41.000000000","message":"Yes. This port is not needed. Usually once plugin identifies the host(agent with compute port), it notifies the agent and agent then will call _ensure_host_set_on_ports. \n\nBut in this test, as we will be directly calling _ensure_host_set_on_ports, and we are not checking notification from plugin to agent, this port is not needed. I will remove it.","commit_id":"cdbcdfa004178710b73170596dccdec053482394"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"876b07005290a9e8c577809fa41c130a2713eb1c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        device_owner flag."},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        with self.subnet(cidr\u003d\u002720.0.0.0/24\u0027) as int_subnet,\\"},{"line_number":233,"context_line":"            self.port(subnet\u003dint_subnet,"},{"line_number":234,"context_line":"                      device_owner\u003dDEVICE_OWNER_COMPUTE):"},{"line_number":235,"context_line":"            helpers.register_l3_agent(host\u003d\u0027host1\u0027,"},{"line_number":236,"context_line":"                agent_mode\u003dn_const.L3_AGENT_MODE_DVR)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_be48e12e","line":234,"range":{"start_line":233,"start_character":12,"end_line":234,"end_character":57},"in_reply_to":"1aa78d24_18fdcd3a","updated":"2016-07-04 08:58:19.000000000","message":"Yes.\n\n      File \"neutron/tests/functional/services/l3_router/test_l3_dvr_router_plugin.py\", line 241, in test_dvr_port_processing_through_vif_type\n        {\u0027subnet_id\u0027: int_subnet[\u0027subnet\u0027][\u0027id\u0027]})\n      File \"neutron/db/l3_dvr_db.py\", line 369, in add_router_interface\n        context, router_interface_info, \u0027add\u0027)\n      File \"neutron/db/l3_db.py\", line 1674, in notify_router_interface_action\n        {\u0027subnet_id\u0027: router_interface_info[\u0027subnet_id\u0027]})\n      File \"neutron/db/l3_db.py\", line 1643, in notify_routers_updated\n        context, router_ids, operation, data)\n      File \"neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py\", line 155, in routers_updated\n        operation, shuffle_agents, schedule_routers)\n      File \"neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py\", line 116, in _notification\n        context, method, router_ids, operation, shuffle_agents)\n      File \"neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py\", line 63, in _agent_notification\n        hosts \u003d plugin.get_hosts_to_notify(adminContext, router_id)\n      File \"neutron/db/l3_dvrscheduler_db.py\", line 216, in get_hosts_to_notify\n        dvr_hosts \u003d self._get_dvr_hosts_for_router(context, router_id)\n      File \"neutron/db/l3_dvrscheduler_db.py\", line 233, in _get_dvr_hosts_for_router\n\n\nAs you know, DVR router is hosted on agent only if compute port is created on the agent.","commit_id":"cdbcdfa004178710b73170596dccdec053482394"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a18cf4381beefbcff605664b4cafa9449cd7550f","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        device_owner flag."},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        with self.subnet(cidr\u003d\u002720.0.0.0/24\u0027) as int_subnet,\\"},{"line_number":233,"context_line":"            self.port(subnet\u003dint_subnet,"},{"line_number":234,"context_line":"                      device_owner\u003dDEVICE_OWNER_COMPUTE):"},{"line_number":235,"context_line":"            helpers.register_l3_agent(host\u003d\u0027host1\u0027,"},{"line_number":236,"context_line":"                agent_mode\u003dn_const.L3_AGENT_MODE_DVR)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_094c61c6","line":234,"range":{"start_line":233,"start_character":12,"end_line":234,"end_character":57},"in_reply_to":"1aa78d24_be48e12e","updated":"2016-07-04 09:27:29.000000000","message":"yeah, but this port seems not bound to any host which made me wondering","commit_id":"cdbcdfa004178710b73170596dccdec053482394"}],"neutron/tests/unit/plugins/ml2/test_driver_context.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"eec58bf53ad35d5cce5a858861f3d11787dff14f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        network \u003d mock.MagicMock()"},{"line_number":53,"context_line":"        binding \u003d mock.Mock()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        port \u003d {\u0027binding:vif_type\u0027: portbindings.VIF_TYPE_OVS,"},{"line_number":56,"context_line":"                portbindings.HOST_ID: \u0027host\u0027}"},{"line_number":57,"context_line":"        binding.host \u003d \u0027foohost\u0027"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dada55a8_84c27c51","line":55,"updated":"2016-07-26 15:24:41.000000000","message":"nit: I wasn\u0027t going to say anything until I saw L56 below, but you should probably use portbindings.VIF_TYPE instead of the string if it\u0027s done elsewhere.  Only if you have to re-spin.","commit_id":"9dc8abc09dc89f8e264b949119bfe28d7aa12a9c"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d1e61b740783b89b353a8b5b813c778df3c286c5","unresolved":false,"context_lines":[{"line_number":2097,"context_line":"            device_id\u003d\u0027vm_id\u0027,"},{"line_number":2098,"context_line":"            device_owner\u003dDEVICE_OWNER_COMPUTE)"},{"line_number":2099,"context_line":""},{"line_number":2100,"context_line":"        binding \u003d models.PortBinding("},{"line_number":2101,"context_line":"            port_id\u003dport_id,"},{"line_number":2102,"context_line":"            host\u003d\u0027vm_host\u0027,"},{"line_number":2103,"context_line":"            vnic_type\u003dportbindings.VNIC_NORMAL,"},{"line_number":2104,"context_line":"            profile\u003d\u0027\u0027,"},{"line_number":2105,"context_line":"            vif_type\u003d\u0027\u0027,"},{"line_number":2106,"context_line":"            vif_details\u003d\u0027\u0027)"},{"line_number":2107,"context_line":"        original_port_db.port_binding \u003d binding"},{"line_number":2108,"context_line":""},{"line_number":2109,"context_line":"        with mock.patch.object(ml2_plugin.Ml2Plugin, \u0027__init__\u0027) as init,\\"},{"line_number":2110,"context_line":"                mock.patch.object(ml2_db, \u0027get_locked_port_and_binding\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_166bf9f2","line":2107,"range":{"start_line":2100,"start_character":8,"end_line":2107,"end_character":47},"updated":"2016-07-01 16:00:43.000000000","message":"is this related to the change?","commit_id":"729c8458821a466ae841bcb7a207bd54b9ea8e71"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"1cdb4e26351799c0f09e52a696b19449dd8a5856","unresolved":false,"context_lines":[{"line_number":2097,"context_line":"            device_id\u003d\u0027vm_id\u0027,"},{"line_number":2098,"context_line":"            device_owner\u003dDEVICE_OWNER_COMPUTE)"},{"line_number":2099,"context_line":""},{"line_number":2100,"context_line":"        binding \u003d models.PortBinding("},{"line_number":2101,"context_line":"            port_id\u003dport_id,"},{"line_number":2102,"context_line":"            host\u003d\u0027vm_host\u0027,"},{"line_number":2103,"context_line":"            vnic_type\u003dportbindings.VNIC_NORMAL,"},{"line_number":2104,"context_line":"            profile\u003d\u0027\u0027,"},{"line_number":2105,"context_line":"            vif_type\u003d\u0027\u0027,"},{"line_number":2106,"context_line":"            vif_details\u003d\u0027\u0027)"},{"line_number":2107,"context_line":"        original_port_db.port_binding \u003d binding"},{"line_number":2108,"context_line":""},{"line_number":2109,"context_line":"        with mock.patch.object(ml2_plugin.Ml2Plugin, \u0027__init__\u0027) as init,\\"},{"line_number":2110,"context_line":"                mock.patch.object(ml2_db, \u0027get_locked_port_and_binding\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_a450e8d5","line":2107,"range":{"start_line":2100,"start_character":8,"end_line":2107,"end_character":47},"in_reply_to":"3aaa91ec_166bf9f2","updated":"2016-07-01 19:40:28.000000000","message":"removed","commit_id":"729c8458821a466ae841bcb7a207bd54b9ea8e71"}]}
