)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f3ed1440aaae8d5d695abd73a7b9842328169ecb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix update of network\u0027s segmentation id for network with ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Filter neutron_lib.objects.utils.NotIn, designed to work with OVO objects"},{"line_number":10,"context_line":"was used in db query and because of that ports belong to network wasn\u0027t"},{"line_number":11,"context_line":"filtered by vif_type thus if there were any ports in network, it was not"},{"line_number":12,"context_line":"possible to change its segmentation id."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_792be52f","line":9,"range":{"start_line":9,"start_character":33,"end_line":9,"end_character":38},"updated":"2019-06-17 18:08:48.000000000","message":"You are right, this is class method for filtering objects, but this is not a query filter itself.","commit_id":"96171d812adbdacd7179b0f48fac311558290226"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"333c03945b13ab06dfff776d27bdee815a342a46","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Slawek Kaplonski \u003cskaplons@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-19 09:02:39 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix update of network\u0027s segmentation id for network with ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Filter neutron_lib.objects.utils.NotIn, designed to work with OVO objects"},{"line_number":10,"context_line":"was used in db query and because of that ports belong to network wasn\u0027t"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9fb8cfa7_f4033372","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":62},"updated":"2019-06-19 15:45:41.000000000","message":"As ralonsoh mentioned during the meeting, if ovs-agent restart is not needed, we still have two issues:\n1. OF port other_config does not change the segmentation_id.\n2. stale old VLAN tag based flows are not cleaned.","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"1ce2c41a5a850d7c6c64aabb051b75f7dfcfbf43","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Slawek Kaplonski \u003cskaplons@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-19 09:02:39 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix update of network\u0027s segmentation id for network with ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Filter neutron_lib.objects.utils.NotIn, designed to work with OVO objects"},{"line_number":10,"context_line":"was used in db query and because of that ports belong to network wasn\u0027t"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9fb8cfa7_835e3674","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":62},"in_reply_to":"9fb8cfa7_125ff7e5","updated":"2019-06-20 00:26:20.000000000","message":"OK, maybe this title here should be changed to something related.","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"31e9df0ac089dd917c7e6409222ef8bd8ccf9c19","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Slawek Kaplonski \u003cskaplons@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-19 09:02:39 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix update of network\u0027s segmentation id for network with ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Filter neutron_lib.objects.utils.NotIn, designed to work with OVO objects"},{"line_number":10,"context_line":"was used in db query and because of that ports belong to network wasn\u0027t"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9fb8cfa7_125ff7e5","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":62},"in_reply_to":"9fb8cfa7_17bb69e5","updated":"2019-06-19 16:50:25.000000000","message":"I agree with Rodolfo here. Lets report another bug for agent\u0027s part and solve it separately","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"acd79418845aa0ecad63d1bec583c7d1fceccfa0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Slawek Kaplonski \u003cskaplons@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-19 09:02:39 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix update of network\u0027s segmentation id for network with ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Filter neutron_lib.objects.utils.NotIn, designed to work with OVO objects"},{"line_number":10,"context_line":"was used in db query and because of that ports belong to network wasn\u0027t"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_25768108","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":62},"in_reply_to":"9fb8cfa7_835e3674","updated":"2019-07-06 21:59:14.000000000","message":"This title is IMO ok as it describes what patch is actually fixing. It fixes server\u0027s side update of segmentation_id when there are some ports created in network already.","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d381f547fdfd88bb792270a8492f8b4879d86a2f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Slawek Kaplonski \u003cskaplons@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-19 09:02:39 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix update of network\u0027s segmentation id for network with ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Filter neutron_lib.objects.utils.NotIn, designed to work with OVO objects"},{"line_number":10,"context_line":"was used in db query and because of that ports belong to network wasn\u0027t"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9fb8cfa7_17bb69e5","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":62},"in_reply_to":"9fb8cfa7_f4033372","updated":"2019-06-19 16:14:11.000000000","message":"This patch is solving the issue with the filter misuse.\n\nThis code is not affecting the OVS agent code.\n\n1. The segmentation ID in the port once the segment segmentation ID is.\n2. Which VLAN tagged flows are not cleaned? BTW, this should be in another bug.","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"}],"neutron/objects/ports.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"ed44fe816dd7f1a21e351773874821365da91ad8","unresolved":false,"context_lines":[{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    @classmethod"},{"line_number":546,"context_line":"    def check_network_ports_by_binding_types("},{"line_number":547,"context_line":"            cls, context, network_id, binding_types, negative_search\u003dFalse):"},{"line_number":548,"context_line":"        \"\"\"This method is to check whether networks have ports with given"},{"line_number":549,"context_line":"        binding_types."},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_7e6c2008","line":547,"range":{"start_line":547,"start_character":53,"end_line":547,"end_character":68},"updated":"2019-07-05 02:37:14.000000000","message":"If this parameter is always True, we can simply remove it. If you expect False will be used in the future, that is fine.","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"26b67fd0c4b32c7958139e138b3838fcf891ff09","unresolved":false,"context_lines":[{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    @classmethod"},{"line_number":546,"context_line":"    def check_network_ports_by_binding_types("},{"line_number":547,"context_line":"            cls, context, network_id, binding_types, negative_search\u003dFalse):"},{"line_number":548,"context_line":"        \"\"\"This method is to check whether networks have ports with given"},{"line_number":549,"context_line":"        binding_types."},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_656c7936","line":547,"range":{"start_line":547,"start_character":53,"end_line":547,"end_character":68},"in_reply_to":"7faddb67_7e6c2008","updated":"2019-07-06 21:58:04.000000000","message":"I think that it may be used that way in the future also and that\u0027s why I added this flag :)","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"74cf4b73b2c2664ee9e76fd0226edda661fcb322","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        \"\"\"This method is to check whether networks have ports with given"},{"line_number":549,"context_line":"        binding_types."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        :param context:"},{"line_number":552,"context_line":"        :param network_id: ID of network to check"},{"line_number":553,"context_line":"        :param binding_types: list of binding types to look for"},{"line_number":554,"context_line":"        :param negative_search: if set to true, ports with with binding_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_4ca081f5","line":551,"updated":"2019-07-08 09:39:48.000000000","message":"nit: missing description","commit_id":"3367e2081bfd57030a3a3427eec630aa2f483d25"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"38ecec7b4793af7758424c32efd860cd56c15ee9","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        \"\"\"This method is to check whether networks have ports with given"},{"line_number":549,"context_line":"        binding_types."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        :param context:"},{"line_number":552,"context_line":"        :param network_id: ID of network to check"},{"line_number":553,"context_line":"        :param binding_types: list of binding types to look for"},{"line_number":554,"context_line":"        :param negative_search: if set to true, ports with with binding_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_f067a250","line":551,"in_reply_to":"7faddb67_4ca081f5","updated":"2019-07-09 20:13:16.000000000","message":"I think this can be fixed in a follow-up.","commit_id":"3367e2081bfd57030a3a3427eec630aa2f483d25"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f3ed1440aaae8d5d695abd73a7b9842328169ecb","unresolved":false,"context_lines":[{"line_number":853,"context_line":"        filters \u003d {portbindings.VIF_TYPE:"},{"line_number":854,"context_line":"                   filter_obj.filter(models.PortBinding.vif_type),"},{"line_number":855,"context_line":"                   \u0027network_id\u0027: [network[\u0027id\u0027]]}"},{"line_number":856,"context_line":"        if super(Ml2Plugin, self).get_ports_count(context,"},{"line_number":857,"context_line":"                                                  filters\u003dfilters):"},{"line_number":858,"context_line":"            msg \u003d (_(\u0027Provider network attribute %(attr)s cannot be updated \u0027"},{"line_number":859,"context_line":"                     \u0027if any port in the network has not the following \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_b9d63d27","side":"PARENT","line":856,"range":{"start_line":856,"start_character":34,"end_line":856,"end_character":49},"updated":"2019-06-17 18:08:48.000000000","message":"In the previous version I was using \"get_ports_count\" because is much faster than retrieving the ports.","commit_id":"352f5ac674dde0d76ebe92d80b2cb02638b80ade"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"67c79ffcdb50e06e15cc91448f335eab8965edcf","unresolved":false,"context_lines":[{"line_number":853,"context_line":"        filters \u003d {portbindings.VIF_TYPE:"},{"line_number":854,"context_line":"                   filter_obj.filter(models.PortBinding.vif_type),"},{"line_number":855,"context_line":"                   \u0027network_id\u0027: [network[\u0027id\u0027]]}"},{"line_number":856,"context_line":"        if super(Ml2Plugin, self).get_ports_count(context,"},{"line_number":857,"context_line":"                                                  filters\u003dfilters):"},{"line_number":858,"context_line":"            msg \u003d (_(\u0027Provider network attribute %(attr)s cannot be updated \u0027"},{"line_number":859,"context_line":"                     \u0027if any port in the network has not the following \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_9638db3d","side":"PARENT","line":856,"range":{"start_line":856,"start_character":34,"end_line":856,"end_character":49},"in_reply_to":"9fb8cfa7_b9d63d27","updated":"2019-06-18 09:49:22.000000000","message":"good point. changed","commit_id":"352f5ac674dde0d76ebe92d80b2cb02638b80ade"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"ed44fe816dd7f1a21e351773874821365da91ad8","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        with self.network() as net:"},{"line_number":467,"context_line":"            with mock.patch.object("},{"line_number":468,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":469,"context_line":"                    return_value\u003d[\u0027port\u0027]):"},{"line_number":470,"context_line":"                self.assertRaises("},{"line_number":471,"context_line":"                    exc.InvalidInput, plugin._update_segmentation_id,"},{"line_number":472,"context_line":"                    self.context, net[\u0027network\u0027], {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_1e8f2ccd","line":469,"range":{"start_line":469,"start_character":33,"end_line":469,"end_character":41},"updated":"2019-07-05 02:37:14.000000000","message":"check_network_ports_by_binding_types should return either true or false, right?","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"54968a2bd9c5f6dca83a371ec8153d9971e9ccf2","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        with self.network() as net:"},{"line_number":467,"context_line":"            with mock.patch.object("},{"line_number":468,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":469,"context_line":"                    return_value\u003d[\u0027port\u0027]):"},{"line_number":470,"context_line":"                self.assertRaises("},{"line_number":471,"context_line":"                    exc.InvalidInput, plugin._update_segmentation_id,"},{"line_number":472,"context_line":"                    self.context, net[\u0027network\u0027], {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_bfb7e786","line":469,"range":{"start_line":469,"start_character":33,"end_line":469,"end_character":41},"in_reply_to":"7faddb67_1e8f2ccd","updated":"2019-07-05 20:00:57.000000000","message":"Yes, in neutron/objects/ports.py you specify the return for check_network_ports_by_binding_types as:\n\n    :return: True if any port is found, False otherwise","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"26b67fd0c4b32c7958139e138b3838fcf891ff09","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        with self.network() as net:"},{"line_number":467,"context_line":"            with mock.patch.object("},{"line_number":468,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":469,"context_line":"                    return_value\u003d[\u0027port\u0027]):"},{"line_number":470,"context_line":"                self.assertRaises("},{"line_number":471,"context_line":"                    exc.InvalidInput, plugin._update_segmentation_id,"},{"line_number":472,"context_line":"                    self.context, net[\u0027network\u0027], {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a58271c7","line":469,"range":{"start_line":469,"start_character":33,"end_line":469,"end_character":41},"in_reply_to":"7faddb67_bfb7e786","updated":"2019-07-06 21:58:04.000000000","message":"Done","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"ed44fe816dd7f1a21e351773874821365da91ad8","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                             mpnet_apidef.SEGMENTS: segments}) as net, \\"},{"line_number":487,"context_line":"                mock.patch.object("},{"line_number":488,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":489,"context_line":"                    return_value\u003d[]) as check_network_ports_by_binding_types, \\"},{"line_number":490,"context_line":"                mock.patch.object(plugin.type_manager,"},{"line_number":491,"context_line":"                                  \u0027update_network_segment\u0027), \\"},{"line_number":492,"context_line":"                mock.patch.object(plugin, \u0027get_agents\u0027) as mock_get_agents:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_5eae042f","line":489,"range":{"start_line":489,"start_character":33,"end_line":489,"end_character":35},"updated":"2019-07-05 02:37:14.000000000","message":"ditto","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"26b67fd0c4b32c7958139e138b3838fcf891ff09","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                             mpnet_apidef.SEGMENTS: segments}) as net, \\"},{"line_number":487,"context_line":"                mock.patch.object("},{"line_number":488,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":489,"context_line":"                    return_value\u003d[]) as check_network_ports_by_binding_types, \\"},{"line_number":490,"context_line":"                mock.patch.object(plugin.type_manager,"},{"line_number":491,"context_line":"                                  \u0027update_network_segment\u0027), \\"},{"line_number":492,"context_line":"                mock.patch.object(plugin, \u0027get_agents\u0027) as mock_get_agents:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c5876dd7","line":489,"range":{"start_line":489,"start_character":33,"end_line":489,"end_character":35},"in_reply_to":"7faddb67_5eae042f","updated":"2019-07-06 21:58:04.000000000","message":"Done","commit_id":"224a5fa7236090d0a636158fc6ad47ff38c2e921"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"dc15b78b7e8c6df60dfc79a34d9821adc54d62d7","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                             mpnet_apidef.SEGMENTS: segments}) as net, \\"},{"line_number":516,"context_line":"                mock.patch.object("},{"line_number":517,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":518,"context_line":"                    return_value\u003d[]) as check_network_ports_by_binding_types, \\"},{"line_number":519,"context_line":"                mock.patch.object(plugin.type_manager,"},{"line_number":520,"context_line":"                                  \u0027update_network_segment\u0027), \\"},{"line_number":521,"context_line":"                mock.patch.object(plugin, \u0027get_agents\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_db2d1047","line":518,"range":{"start_line":518,"start_character":33,"end_line":518,"end_character":35},"updated":"2019-07-07 17:58:08.000000000","message":"need to change this as well.","commit_id":"5847316fbe9f3651a8864ac559b9100b3a28fd77"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"91867d8c7dbbdd57c7daac11dec705f3a0d63480","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                             mpnet_apidef.SEGMENTS: segments}) as net, \\"},{"line_number":516,"context_line":"                mock.patch.object("},{"line_number":517,"context_line":"                    port_obj.Port, \u0027check_network_ports_by_binding_types\u0027,"},{"line_number":518,"context_line":"                    return_value\u003d[]) as check_network_ports_by_binding_types, \\"},{"line_number":519,"context_line":"                mock.patch.object(plugin.type_manager,"},{"line_number":520,"context_line":"                                  \u0027update_network_segment\u0027), \\"},{"line_number":521,"context_line":"                mock.patch.object(plugin, \u0027get_agents\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_3bf0e490","line":518,"range":{"start_line":518,"start_character":33,"end_line":518,"end_character":35},"in_reply_to":"7faddb67_db2d1047","updated":"2019-07-07 19:16:33.000000000","message":"Done","commit_id":"5847316fbe9f3651a8864ac559b9100b3a28fd77"}]}
