)]}'
{"neutron/services/segments/plugin.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"17fa4510d4de23fc45305c0e3ed61edcda5d392a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    object_session \u003d session.Session.object_session(port_db)"},{"line_number":50,"context_line":"    query \u003d object_session.query(models_v2.Subnet)"},{"line_number":51,"context_line":"    query \u003d query.filter_by(network_id\u003dport_db.network_id)"},{"line_number":52,"context_line":"    query \u003d query.filter(models_v2.Subnet.segment_id.isnot(None))"},{"line_number":53,"context_line":"    # Check if subnets are associated with segments"},{"line_number":54,"context_line":"    if query.count():"},{"line_number":55,"context_line":"        # Since subnets are associated with segments, we are dealing with a"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_355b6089","line":52,"updated":"2016-08-09 10:27:55.000000000","message":"Ouch, querying in _extend_dict_port_binding is really bad because we will experience a linear growth of DB queries in a get_ports call. I see this went in as part of Ieeab03c31b8f45d63b5044d85ded704d2fe027a9 . I know it\u0027s not related to your patch directly, but can you put a TODO in here to eliminate this query entirely and leverage optimistic joins instead?","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"ce6037b30fd8da76df3b70814ea8fb1d1d0100a4","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    object_session \u003d session.Session.object_session(port_db)"},{"line_number":50,"context_line":"    query \u003d object_session.query(models_v2.Subnet)"},{"line_number":51,"context_line":"    query \u003d query.filter_by(network_id\u003dport_db.network_id)"},{"line_number":52,"context_line":"    query \u003d query.filter(models_v2.Subnet.segment_id.isnot(None))"},{"line_number":53,"context_line":"    # Check if subnets are associated with segments"},{"line_number":54,"context_line":"    if query.count():"},{"line_number":55,"context_line":"        # Since subnets are associated with segments, we are dealing with a"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_f6e972b8","line":52,"in_reply_to":"9ad45d7e_355b6089","updated":"2016-08-10 19:47:00.000000000","message":"My bad. I\u0027ll fix this up. Just add the TODO.","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8a35f2a0865aac870edb9abead4d957ef92b1e95","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    object_session \u003d session.Session.object_session(port_db)"},{"line_number":50,"context_line":"    query \u003d object_session.query(models_v2.Subnet)"},{"line_number":51,"context_line":"    query \u003d query.filter_by(network_id\u003dport_db.network_id)"},{"line_number":52,"context_line":"    query \u003d query.filter(models_v2.Subnet.segment_id.isnot(None))"},{"line_number":53,"context_line":"    # Check if subnets are associated with segments"},{"line_number":54,"context_line":"    if query.count():"},{"line_number":55,"context_line":"        # Since subnets are associated with segments, we are dealing with a"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_e1283c88","line":52,"in_reply_to":"9ad45d7e_f6e972b8","updated":"2016-08-12 02:03:03.000000000","message":"Done","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"00a2785f16350cf6953b3cce485fbc3fefe8a59e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        # Since subnets are associated with segments, we are dealing with a"},{"line_number":56,"context_line":"        # routed network"},{"line_number":57,"context_line":"        ips \u003d port_res.get(\u0027fixed_ips\u0027)"},{"line_number":58,"context_line":"        if not ips:"},{"line_number":59,"context_line":"            # NOTE Only routed network ports have deferred allocation"},{"line_number":60,"context_line":"            value \u003d ip_allocation.IP_ALLOCATION_DEFERRED"},{"line_number":61,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_82acabee","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":18},"updated":"2016-08-08 22:56:15.000000000","message":"If we put the \"if not ips\" outside of the \"query.count()\" then I think we could avoid running two queries in the code path through L62 by conditionally applying the filter before running any query and then maybe using \"query.one_or_none()\".","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8a35f2a0865aac870edb9abead4d957ef92b1e95","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        # Since subnets are associated with segments, we are dealing with a"},{"line_number":56,"context_line":"        # routed network"},{"line_number":57,"context_line":"        ips \u003d port_res.get(\u0027fixed_ips\u0027)"},{"line_number":58,"context_line":"        if not ips:"},{"line_number":59,"context_line":"            # NOTE Only routed network ports have deferred allocation"},{"line_number":60,"context_line":"            value \u003d ip_allocation.IP_ALLOCATION_DEFERRED"},{"line_number":61,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_c12b7880","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":18},"in_reply_to":"9ad45d7e_82acabee","updated":"2016-08-12 02:03:03.000000000","message":"Done","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"}],"neutron/tests/unit/extensions/test_segment.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"00a2785f16350cf6953b3cce485fbc3fefe8a59e","unresolved":false,"context_lines":[{"line_number":922,"context_line":"            self.assertEqual(segment_id,"},{"line_number":923,"context_line":"                             response[\u0027port\u0027][ext_segment.IPAM_SEGMENT_ID])"},{"line_number":924,"context_line":"        else:"},{"line_number":925,"context_line":"            self.assertIsNone(response[\u0027port\u0027][ext_segment.IPAM_SEGMENT_ID])"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def _create_deferred_ip_port(self, network):"},{"line_number":928,"context_line":"        response \u003d self._create_port(self.fmt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_a2f8cf7d","line":925,"range":{"start_line":925,"start_character":17,"end_line":925,"end_character":29},"updated":"2016-08-08 22:56:15.000000000","message":"In my opinion, you probably don\u0027t need to be sure to call assertIsNone is segment_id is None. I think assertEqual is fine for this.","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8a35f2a0865aac870edb9abead4d957ef92b1e95","unresolved":false,"context_lines":[{"line_number":922,"context_line":"            self.assertEqual(segment_id,"},{"line_number":923,"context_line":"                             response[\u0027port\u0027][ext_segment.IPAM_SEGMENT_ID])"},{"line_number":924,"context_line":"        else:"},{"line_number":925,"context_line":"            self.assertIsNone(response[\u0027port\u0027][ext_segment.IPAM_SEGMENT_ID])"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def _create_deferred_ip_port(self, network):"},{"line_number":928,"context_line":"        response \u003d self._create_port(self.fmt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_0122b0a2","line":925,"range":{"start_line":925,"start_character":17,"end_line":925,"end_character":29},"in_reply_to":"9ad45d7e_a2f8cf7d","updated":"2016-08-12 02:03:03.000000000","message":"Done","commit_id":"e2b816a9bbc5ec32e60f4833472e2df57189902e"}]}
