)]}'
{"neutron/conf/plugins/ml2/drivers/ovn/ovn_conf.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fc2c6926f379ba8abd6760b92e543dd5a308b422","unresolved":true,"context_lines":[{"line_number":200,"context_line":"    cfg.BoolOpt(\u0027igmp_querier_enabled\u0027,"},{"line_number":201,"context_line":"                default\u003dFalse,"},{"line_number":202,"context_line":"                help\u003d_(\u0027Enables/disables IP Multicast Querier on the \u0027"},{"line_number":203,"context_line":"                       \u0027logical switch.\u0027)),"},{"line_number":204,"context_line":"]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"cfg.CONF.register_opts(ovn_opts, group\u003d\u0027ovn\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a810466_7bc87283","line":203,"updated":"2021-06-18 17:06:50.000000000","message":"I think the help message should mention that this has no effect unless IGMP snooping is also enabled, something like\n\n\"This setting has no effect unless the [OVS] igmp_snooping_enable value is also set to True.\"","commit_id":"099d62da0f0e419cc2d71d4c5faf9ff5fffd4d26"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f55242dbc5d7c5abc06fa62d42847b95a78d6859","unresolved":true,"context_lines":[{"line_number":559,"context_line":"            value \u003d (\u0027true\u0027 if ovn_conf.is_igmp_snooping_enabled()"},{"line_number":560,"context_line":"                     else \u0027false\u0027)"},{"line_number":561,"context_line":"            for ls in self._nb_idl.ls_list().execute(check_error\u003dTrue):"},{"line_number":562,"context_line":"                mcast_eth, mcast_ip \u003d \u0027\u0027, \u0027\u0027"},{"line_number":563,"context_line":"                if (ls.other_config.get(ovn_const.MCAST_SNOOP,"},{"line_number":564,"context_line":"                                        None) \u003d\u003d value or not ls.name):"},{"line_number":565,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"d79ab1ea_bf311bb2","line":562,"range":{"start_line":562,"start_character":16,"end_line":562,"end_character":44},"updated":"2021-06-18 08:26:33.000000000","message":"Not needed.","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"e6987afb88ea41a71dc1c25f07ac12e47b44a528","unresolved":false,"context_lines":[{"line_number":559,"context_line":"            value \u003d (\u0027true\u0027 if ovn_conf.is_igmp_snooping_enabled()"},{"line_number":560,"context_line":"                     else \u0027false\u0027)"},{"line_number":561,"context_line":"            for ls in self._nb_idl.ls_list().execute(check_error\u003dTrue):"},{"line_number":562,"context_line":"                mcast_eth, mcast_ip \u003d \u0027\u0027, \u0027\u0027"},{"line_number":563,"context_line":"                if (ls.other_config.get(ovn_const.MCAST_SNOOP,"},{"line_number":564,"context_line":"                                        None) \u003d\u003d value or not ls.name):"},{"line_number":565,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf0fa147_50ce38fa","line":562,"range":{"start_line":562,"start_character":16,"end_line":562,"end_character":44},"in_reply_to":"d79ab1ea_bf311bb2","updated":"2021-06-21 09:52:47.000000000","message":"Done","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f55242dbc5d7c5abc06fa62d42847b95a78d6859","unresolved":true,"context_lines":[{"line_number":570,"context_line":"                    txn.add(self._nb_idl.db_set("},{"line_number":571,"context_line":"                        \u0027Logical_Switch\u0027, ls.name,"},{"line_number":572,"context_line":"                        (\u0027other_config\u0027, {"},{"line_number":573,"context_line":"                            ovn_const.MCAST_SNOOP: value,"},{"line_number":574,"context_line":"                            ovn_const.MCAST_QUERIER: \u0027true\u0027,"},{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"}],"source_content_type":"text/x-python","patch_set":1,"id":"38e50cb0_16f26046","line":573,"range":{"start_line":573,"start_character":38,"end_line":573,"end_character":49},"updated":"2021-06-18 08:26:33.000000000","message":"Should always be MCAST_QUERIER\u003dTrue? Even if multicast snooping is False?","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"e6987afb88ea41a71dc1c25f07ac12e47b44a528","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                    txn.add(self._nb_idl.db_set("},{"line_number":571,"context_line":"                        \u0027Logical_Switch\u0027, ls.name,"},{"line_number":572,"context_line":"                        (\u0027other_config\u0027, {"},{"line_number":573,"context_line":"                            ovn_const.MCAST_SNOOP: value,"},{"line_number":574,"context_line":"                            ovn_const.MCAST_QUERIER: \u0027true\u0027,"},{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7c643042_b8646b6e","line":573,"range":{"start_line":573,"start_character":38,"end_line":573,"end_character":49},"in_reply_to":"38e50cb0_16f26046","updated":"2021-06-21 09:52:47.000000000","message":"Done","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"26e47524956fe64924434efcebefa06f0eb12ebd","unresolved":true,"context_lines":[{"line_number":571,"context_line":"                        \u0027Logical_Switch\u0027, ls.name,"},{"line_number":572,"context_line":"                        (\u0027other_config\u0027, {"},{"line_number":573,"context_line":"                            ovn_const.MCAST_SNOOP: value,"},{"line_number":574,"context_line":"                            ovn_const.MCAST_QUERIER: \u0027true\u0027,"},{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":577,"context_line":"                            ovn_const.MCAST_IP_SRC: mcast_ip})))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef29e977_180a89d4","line":574,"range":{"start_line":574,"start_character":28,"end_line":574,"end_character":60},"updated":"2021-06-18 08:43:47.000000000","message":"I think it does not do any harm as OVN will ignore it if snooping is not enabled but, it looks odd. Should this be \"ovn_const.MCAST_QUERIER: value\" so both MCAST_SNOOP AND MCAST_QUERIR matches ?","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"e6987afb88ea41a71dc1c25f07ac12e47b44a528","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                        \u0027Logical_Switch\u0027, ls.name,"},{"line_number":572,"context_line":"                        (\u0027other_config\u0027, {"},{"line_number":573,"context_line":"                            ovn_const.MCAST_SNOOP: value,"},{"line_number":574,"context_line":"                            ovn_const.MCAST_QUERIER: \u0027true\u0027,"},{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":577,"context_line":"                            ovn_const.MCAST_IP_SRC: mcast_ip})))"}],"source_content_type":"text/x-python","patch_set":1,"id":"b63ff0b3_1f3df810","line":574,"range":{"start_line":574,"start_character":28,"end_line":574,"end_character":60},"in_reply_to":"ef29e977_180a89d4","updated":"2021-06-21 09:52:47.000000000","message":"Done","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f55242dbc5d7c5abc06fa62d42847b95a78d6859","unresolved":true,"context_lines":[{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":577,"context_line":"                            ovn_const.MCAST_IP_SRC: mcast_ip})))"},{"line_number":578,"context_line":"                    break"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        raise periodics.NeverAgain()"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"367e24ff_12c9ccfd","line":578,"range":{"start_line":578,"start_character":20,"end_line":578,"end_character":25},"updated":"2021-06-18 08:26:33.000000000","message":"Why don\u0027t you set this value for all ports in the LS?\n\nCONT.: OK, I think I understand this code looking at [1]. My question then is why the mcast addresses are those one from the first port in the list?\n\n[1]https://review.opendev.org/c/openstack/neutron/+/796997/1/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"e6987afb88ea41a71dc1c25f07ac12e47b44a528","unresolved":true,"context_lines":[{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":577,"context_line":"                            ovn_const.MCAST_IP_SRC: mcast_ip})))"},{"line_number":578,"context_line":"                    break"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        raise periodics.NeverAgain()"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"eca4385c_1d3192ee","line":578,"range":{"start_line":578,"start_character":20,"end_line":578,"end_character":25},"in_reply_to":"367e24ff_12c9ccfd","updated":"2021-06-21 09:52:47.000000000","message":"We need any localport from LS for working querier so we can set any (also first) ip/eth","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f141e8f92b00fc82d09f7ebedcd7891df915dcaa","unresolved":true,"context_lines":[{"line_number":575,"context_line":"                            ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":576,"context_line":"                            ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":577,"context_line":"                            ovn_const.MCAST_IP_SRC: mcast_ip})))"},{"line_number":578,"context_line":"                    break"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        raise periodics.NeverAgain()"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"408d7f57_73e42409","line":578,"range":{"start_line":578,"start_character":20,"end_line":578,"end_character":25},"in_reply_to":"eca4385c_1d3192ee","updated":"2021-06-22 08:33:54.000000000","message":"And what happens if this port is deleted? These MAC/IP addresses won\u0027t be valid anymore.","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"26e47524956fe64924434efcebefa06f0eb12ebd","unresolved":true,"context_lines":[{"line_number":1625,"context_line":"                    ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":1626,"context_line":"                    ovn_const.MCAST_IP_SRC: mcast_ip,"},{"line_number":1627,"context_line":""},{"line_number":1628,"context_line":"                })"},{"line_number":1629,"context_line":"                break"},{"line_number":1630,"context_line":"        return params"},{"line_number":1631,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d3426b76_2188b2bf","line":1628,"updated":"2021-06-18 08:43:47.000000000","message":"This is more an operator question I think but, do we always want to have querier enabled when we enable multicast or it should be a separated configuration ?\n\nI am asking because it\u0027s possible to enable external queriers and I am not sure if there\u0027s any conflict between the OVN one and the external one. Maybe it\u0027s something to verify with the core OVN team.","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"e6987afb88ea41a71dc1c25f07ac12e47b44a528","unresolved":false,"context_lines":[{"line_number":1625,"context_line":"                    ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":1626,"context_line":"                    ovn_const.MCAST_IP_SRC: mcast_ip,"},{"line_number":1627,"context_line":""},{"line_number":1628,"context_line":"                })"},{"line_number":1629,"context_line":"                break"},{"line_number":1630,"context_line":"        return params"},{"line_number":1631,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cfb0089b_68bb7d69","line":1628,"in_reply_to":"d3426b76_2188b2bf","updated":"2021-06-21 09:52:47.000000000","message":"Done","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"604f57fee3830f38be9d80aaad24c91de3f33426","unresolved":true,"context_lines":[{"line_number":1624,"context_line":"                    continue"},{"line_number":1625,"context_line":"                mcast_eth, mcast_ip \u003d lsp.addresses[0].split()"},{"line_number":1626,"context_line":"                params[\u0027other_config\u0027].update({"},{"line_number":1627,"context_line":"                    ovn_const.MCAST_QUERIER: querier_value,"},{"line_number":1628,"context_line":"                    ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":1629,"context_line":"                    ovn_const.MCAST_IP_SRC: mcast_ip,"},{"line_number":1630,"context_line":"                })"}],"source_content_type":"text/x-python","patch_set":3,"id":"df946018_27aa8353","line":1627,"updated":"2021-06-21 13:44:03.000000000","message":"This can be hardcoded to \"true\" because we will only get into this block if both snoop and igmp querier are enabled. We do not need variable from L1613","commit_id":"478db751d767ca2f9e420137eb36a098c756cc8c"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"b52ccfa241cd6258bf7217b7fab5d3d73054882a","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"                    continue"},{"line_number":1625,"context_line":"                mcast_eth, mcast_ip \u003d lsp.addresses[0].split()"},{"line_number":1626,"context_line":"                params[\u0027other_config\u0027].update({"},{"line_number":1627,"context_line":"                    ovn_const.MCAST_QUERIER: querier_value,"},{"line_number":1628,"context_line":"                    ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":1629,"context_line":"                    ovn_const.MCAST_IP_SRC: mcast_ip,"},{"line_number":1630,"context_line":"                })"}],"source_content_type":"text/x-python","patch_set":3,"id":"eaf2a741_3354969c","line":1627,"in_reply_to":"df946018_27aa8353","updated":"2021-06-21 13:52:48.000000000","message":"Done","commit_id":"478db751d767ca2f9e420137eb36a098c756cc8c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f141e8f92b00fc82d09f7ebedcd7891df915dcaa","unresolved":true,"context_lines":[{"line_number":1622,"context_line":"                    continue"},{"line_number":1623,"context_line":"                mcast_eth, mcast_ip \u003d lsp.addresses[0].split()"},{"line_number":1624,"context_line":"                params[\u0027other_config\u0027].update({"},{"line_number":1625,"context_line":"                    ovn_const.MCAST_QUERIER: \u0027true\u0027,"},{"line_number":1626,"context_line":"                    ovn_const.MCAST_ETH_SRC: mcast_eth,"},{"line_number":1627,"context_line":"                    ovn_const.MCAST_IP_SRC: mcast_ip,"},{"line_number":1628,"context_line":"                })"},{"line_number":1629,"context_line":"                break"},{"line_number":1630,"context_line":"        return params"}],"source_content_type":"text/x-python","patch_set":5,"id":"e67e668a_b45a3bd3","line":1627,"range":{"start_line":1625,"start_character":20,"end_line":1627,"end_character":53},"updated":"2021-06-22 08:33:54.000000000","message":"I still don\u0027t see why are we using a random port in the LS. If this port is deleted, the MAC/IP address won\u0027t be valid but still configured in the LS config.\n\nBTW, do you have a reference documentation for this feature? Just to understand why any random MAC/IP on this LS is a valid parameter.","commit_id":"1a234543e13596e18c89902732d0d342df2e51bf"}],"releasenotes/notes/ovn-igmp-querier-support-6a3ee4020b226bcf.yaml":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f55242dbc5d7c5abc06fa62d42847b95a78d6859","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for IGMP querier (Multicast) in the OVN driver."},{"line_number":5,"context_line":"    IGMP querier requires OVN version 2.12 or above."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"dfb3c4c8_1edc7b38","line":5,"range":{"start_line":5,"start_character":26,"end_line":5,"end_character":42},"updated":"2021-06-18 08:26:33.000000000","message":"That requires a sanity check","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f141e8f92b00fc82d09f7ebedcd7891df915dcaa","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for IGMP querier (Multicast) in the OVN driver."},{"line_number":5,"context_line":"    IGMP querier requires OVN version 2.12 or above."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"12648108_8ec256a4","line":5,"range":{"start_line":5,"start_character":26,"end_line":5,"end_character":42},"in_reply_to":"6100f759_096f86e9","updated":"2021-06-22 08:33:54.000000000","message":"If the sanity check does not find the binary, should raise an error. And if the version is not the needed one, a warning with the needed info. But a sanity check should be included in this patch.","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"e6987afb88ea41a71dc1c25f07ac12e47b44a528","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for IGMP querier (Multicast) in the OVN driver."},{"line_number":5,"context_line":"    IGMP querier requires OVN version 2.12 or above."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"6100f759_096f86e9","line":5,"range":{"start_line":5,"start_character":26,"end_line":5,"end_character":42},"in_reply_to":"dfb3c4c8_1edc7b38","updated":"2021-06-21 09:52:47.000000000","message":"We don\u0027t have any easy way to validate ovn version on neutron if we don\u0027t have any ovn client (eg ovn-nbctl --version). But can we try do something with that in folow up patch? (I can try do something based on https://review.opendev.org/dashboard/self)","commit_id":"88c0ecf204370a97e7d167d0324e95c1b6fc6e7b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fc2c6926f379ba8abd6760b92e543dd5a308b422","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for IGMP querier (Multicast) in the OVN driver."},{"line_number":5,"context_line":"    IGMP querier requires OVN version 2.12 or above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"47a8930c_1af94a5c","line":5,"updated":"2021-06-18 17:06:50.000000000","message":"I think you should put the config section and new variable here as well, something like:\n\n\"This new value can be enabled by setting ``igmp_querier_enabled`` to True in the ``[OVN]`` section of the configuration file.\"","commit_id":"099d62da0f0e419cc2d71d4c5faf9ff5fffd4d26"}]}
