)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"f878b86b8153aef6a482b89aae7c67ac8f5e173c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Also, the patch always sets the \"mcast_flood_unregistered\" config in"},{"line_number":16,"context_line":"the OVN Logical_Switch to the same value as the \"mcast_snoop\" config."},{"line_number":17,"context_line":"This is so that OVN matches the OVS default behavior which is to enable"},{"line_number":18,"context_line":"IGMP flooding by default (in OVN, by default it\u0027s false)."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I32f61ba3dd06d7eacf76a74c5c44e1286f90e584"},{"line_number":21,"context_line":"Co-Authored-By: Daniel Alvarez \u003cdalvarez@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_86ef261b","line":18,"updated":"2020-02-04 15:37:13.000000000","message":"It\u0027d be nice to add a reference to the OVS documentation which states that it enables flood by default but I can\u0027t find it.\nI can find the code reference though [0].\n\n[0] https://github.com/openvswitch/ovs/blob/8e371aa497aa95e3562d53f566c2d634b4b0f589/vswitchd/bridge.c#L2205","commit_id":"5fccadd5d017e78e0996a9647c2c503c7e71d8ae"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0025bdfea094d8c487ff634f0b241d0b40ac5afc","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Also, the patch always sets the \"mcast_flood_unregistered\" config in"},{"line_number":16,"context_line":"the OVN Logical_Switch to the same value as the \"mcast_snoop\" config."},{"line_number":17,"context_line":"This is so that OVN matches the OVS default behavior which is to enable"},{"line_number":18,"context_line":"IGMP flooding by default (in OVN, by default it\u0027s false)."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I32f61ba3dd06d7eacf76a74c5c44e1286f90e584"},{"line_number":21,"context_line":"Co-Authored-By: Daniel Alvarez \u003cdalvarez@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_4db5bfef","line":18,"in_reply_to":"3fa7e38b_86ef261b","updated":"2020-02-05 11:43:01.000000000","message":"I found it at http://www.openvswitch.org/support/dist-docs/ovs-vsctl.8.txt, grep for \"mcast-snooping-disable\"","commit_id":"5fccadd5d017e78e0996a9647c2c503c7e71d8ae"}],"neutron/conf/plugins/ml2/drivers/ovn/ovn_conf.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6c2041e150b91f8ffdc2d7dc6a365ba694078024","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                default\u003dFalse,"},{"line_number":195,"context_line":"                help\u003d_(\u0027Enable Multicast Snooping support on the networks. \u0027"},{"line_number":196,"context_line":"                       \u0027Defaults to False.\\n\u0027"},{"line_number":197,"context_line":"                       \u0027IGMP snooping requires OVN version 2.12 or above.\u0027)),"},{"line_number":198,"context_line":"]"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"cfg.CONF.register_opts(ovn_opts, group\u003d\u0027ovn\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2e6f3dc8","line":197,"updated":"2020-02-03 16:49:28.000000000","message":"What happens if ovn\u003c2.12 and you use this parameter?\n\nIMO, you need a sanity check. If igmp_snooping_enabled\u003dTrue, then you should check that OVN\u003d\u003e2.12","commit_id":"16807b0e3d84436b5197f4a0476ba3104dacfd53"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"55b33bcb55aff000f8d1997abedf1b8fe0414758","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                default\u003dFalse,"},{"line_number":195,"context_line":"                help\u003d_(\u0027Enable Multicast Snooping support on the networks. \u0027"},{"line_number":196,"context_line":"                       \u0027Defaults to False.\\n\u0027"},{"line_number":197,"context_line":"                       \u0027IGMP snooping requires OVN version 2.12 or above.\u0027)),"},{"line_number":198,"context_line":"]"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"cfg.CONF.register_opts(ovn_opts, group\u003d\u0027ovn\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a64b49b0","line":197,"in_reply_to":"3fa7e38b_2e6f3dc8","updated":"2020-02-04 09:09:16.000000000","message":"Nothing really happens, the feature will not work and OVN will treat multicast as broadcast traffic.\n\nIn order to enable igmp snooping we need to set \"mcast_snoop\" on a field called \"other_config\" in the Logical_Switch table, this field is just a JSON blob. If OVN does not support it, the config will be ignored.\n\nChecking for OVN 2.12 is not ideal due to backports. For example, OVN 2.11 offered by Red Hat does support IGMP but upstream OVN it\u0027s 2.12+","commit_id":"16807b0e3d84436b5197f4a0476ba3104dacfd53"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c277f0be9c80c5b49680f4295945b703ce2536d6","unresolved":false,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":470,"context_line":"            for ls in self._nb_idl.ls_list().execute(check_error\u003dTrue):"},{"line_number":471,"context_line":"                value \u003d (\u0027true\u0027 if ovn_conf.is_igmp_snooping_enabled()"},{"line_number":472,"context_line":"                         else \u0027false\u0027)"},{"line_number":473,"context_line":"                if ls.other_config.get(ovn_const.MCAST_SNOOP, None) \u003d\u003d value:"},{"line_number":474,"context_line":"                    continue"},{"line_number":475,"context_line":"                txn.add(self._nb_idl.db_set("}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_62617805","line":472,"range":{"start_line":471,"start_character":0,"end_line":472,"end_character":38},"updated":"2020-03-03 10:14:42.000000000","message":"Can we put this on L470 as this is a loop invariant?","commit_id":"e2eb5e185be1617b7419f57eb850f835aa6dffc9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8b35d8f99b412950d76335973d5e1f3763e1e9b3","unresolved":false,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":470,"context_line":"            for ls in self._nb_idl.ls_list().execute(check_error\u003dTrue):"},{"line_number":471,"context_line":"                value \u003d (\u0027true\u0027 if ovn_conf.is_igmp_snooping_enabled()"},{"line_number":472,"context_line":"                         else \u0027false\u0027)"},{"line_number":473,"context_line":"                if ls.other_config.get(ovn_const.MCAST_SNOOP, None) \u003d\u003d value:"},{"line_number":474,"context_line":"                    continue"},{"line_number":475,"context_line":"                txn.add(self._nb_idl.db_set("}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_2d8ff175","line":472,"range":{"start_line":471,"start_character":0,"end_line":472,"end_character":38},"in_reply_to":"1fa4df85_62617805","updated":"2020-03-03 10:22:18.000000000","message":"++ ops yes","commit_id":"e2eb5e185be1617b7419f57eb850f835aa6dffc9"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_maintenance.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6c2041e150b91f8ffdc2d7dc6a365ba694078024","unresolved":false,"context_lines":[{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        # Change the value of the configuration"},{"line_number":812,"context_line":"        ovn_config.cfg.CONF.set_override(\u0027igmp_snooping_enabled\u0027, True,"},{"line_number":813,"context_line":"                                         group\u003d\u0027ovn\u0027)"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"        # Call the maintenance task and check that the value has been"},{"line_number":816,"context_line":"        # updated in the Logical Switch"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_aec80d76","line":813,"updated":"2020-02-03 16:49:28.000000000","message":"What is happening if we are testing with ovn\u003c2.12?","commit_id":"16807b0e3d84436b5197f4a0476ba3104dacfd53"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"55b33bcb55aff000f8d1997abedf1b8fe0414758","unresolved":false,"context_lines":[{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        # Change the value of the configuration"},{"line_number":812,"context_line":"        ovn_config.cfg.CONF.set_override(\u0027igmp_snooping_enabled\u0027, True,"},{"line_number":813,"context_line":"                                         group\u003d\u0027ovn\u0027)"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"        # Call the maintenance task and check that the value has been"},{"line_number":816,"context_line":"        # updated in the Logical Switch"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e6ce212b","line":813,"in_reply_to":"3fa7e38b_aec80d76","updated":"2020-02-04 09:09:16.000000000","message":"This test will still pass.\n\nBecause all we can do in the driver itself is assert that the configuration has been set correctly (in this case, a \"mcast_snoop\" key in a JSON blob field).\n\nIn order to verify that the multicast traffic is really working we need to use a tempest test such as [0].\n\n[0] https://github.com/openstack/neutron-tempest-plugin/blob/master/neutron_tempest_plugin/scenario/test_multicast.py","commit_id":"16807b0e3d84436b5197f4a0476ba3104dacfd53"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_maintenance.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c277f0be9c80c5b49680f4295945b703ce2536d6","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        self.periodic._log_maintenance_inconsistencies(incst, [])"},{"line_number":273,"context_line":"        self.assertFalse(mock_log.called)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_check_for_igmp_snoop_support(self):"},{"line_number":276,"context_line":"        cfg.CONF.set_override(\u0027igmp_snooping_enable\u0027, True, group\u003d\u0027OVS\u0027)"},{"line_number":277,"context_line":"        nb_idl \u003d self.fake_ovn_client._nb_idl"},{"line_number":278,"context_line":"        ls0 \u003d fakes.FakeOvsdbRow.create_one_ovsdb_row("}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_8d114555","line":275,"updated":"2020-03-03 10:14:42.000000000","message":"Suggestion only: I\u0027d be even in favor of removing this test because it technically does the same thing as the functional one, except having multiple logical switches.","commit_id":"e2eb5e185be1617b7419f57eb850f835aa6dffc9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8b35d8f99b412950d76335973d5e1f3763e1e9b3","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        self.periodic._log_maintenance_inconsistencies(incst, [])"},{"line_number":273,"context_line":"        self.assertFalse(mock_log.called)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_check_for_igmp_snoop_support(self):"},{"line_number":276,"context_line":"        cfg.CONF.set_override(\u0027igmp_snooping_enable\u0027, True, group\u003d\u0027OVS\u0027)"},{"line_number":277,"context_line":"        nb_idl \u003d self.fake_ovn_client._nb_idl"},{"line_number":278,"context_line":"        ls0 \u003d fakes.FakeOvsdbRow.create_one_ovsdb_row("}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_edd3195f","line":275,"in_reply_to":"1fa4df85_8d114555","updated":"2020-03-03 10:22:18.000000000","message":"I can remove it, I think one downside would be the coverage job right ? Cause AFAIK it doesn\u0027t account for functional tests","commit_id":"e2eb5e185be1617b7419f57eb850f835aa6dffc9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b319d377cf65502af6d5d819cde8cfe42db2232c","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        self.periodic._log_maintenance_inconsistencies(incst, [])"},{"line_number":273,"context_line":"        self.assertFalse(mock_log.called)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_check_for_igmp_snoop_support(self):"},{"line_number":276,"context_line":"        cfg.CONF.set_override(\u0027igmp_snooping_enable\u0027, True, group\u003d\u0027OVS\u0027)"},{"line_number":277,"context_line":"        nb_idl \u003d self.fake_ovn_client._nb_idl"},{"line_number":278,"context_line":"        ls0 \u003d fakes.FakeOvsdbRow.create_one_ovsdb_row("}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_adb3e109","line":275,"in_reply_to":"1fa4df85_edd3195f","updated":"2020-03-03 10:33:07.000000000","message":"Fair enough","commit_id":"e2eb5e185be1617b7419f57eb850f835aa6dffc9"}],"releasenotes/notes/ovn-igmp-snooping-support-1a6ec8e703311fce.yaml":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"021607a39e94b3743898f040a94e762599d3f2d0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for IGMP snooping (Multicast) in the OVN driver. A new"},{"line_number":5,"context_line":"    configuration option, ``igmp_snooping_enabled`` was added to the"},{"line_number":6,"context_line":"    ``ovn`` group. Defaults to False."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_03ba61df","line":6,"updated":"2020-02-03 09:56:06.000000000","message":"Can we add here (maybe somewhere else:?) that this option requires OVN 2.12 at least?\n\nhttps://github.com/openvswitch/ovs/commit/605535f9adf2e881aa6242b19bcec0c90ba8ad96","commit_id":"e802446582744603a647dbb0e4d7a1fa319bb8d1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e4f0619a1d651946216534b90febddf16173d325","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for IGMP snooping (Multicast) in the OVN driver. A new"},{"line_number":5,"context_line":"    configuration option, ``igmp_snooping_enabled`` was added to the"},{"line_number":6,"context_line":"    ``ovn`` group. Defaults to False."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_3ef8d2bf","line":6,"in_reply_to":"3fa7e38b_03ba61df","updated":"2020-02-03 10:58:08.000000000","message":"Great point! Will do","commit_id":"e802446582744603a647dbb0e4d7a1fa319bb8d1"}]}
