)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"600f8774f9268189ef3689c013828e5fb85cb97b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1e531803_55f4879b","updated":"2022-01-28 16:10:20.000000000","message":"Need to add the unittest","commit_id":"73228abe807a546ac746fae2380156ea59973aaa"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"ab0d48119bd31b1ac296e1c8289c16e70314a274","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b79e9326_f46f290c","updated":"2022-01-28 19:19:07.000000000","message":"Thanks Lucas!","commit_id":"73228abe807a546ac746fae2380156ea59973aaa"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3819ee4e99f4ea297b24622793f537a644bb0d02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"880ad357_fb6fb984","updated":"2022-02-01 12:46:13.000000000","message":"-1 just for visibility","commit_id":"88d50ca3994624e0dba1e1a8ea9937bf467dde27"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a42ab32c2728b8cd2e224afb9dae17034ac45e25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3ab3ccaa_6278751d","updated":"2022-02-07 16:57:36.000000000","message":"recheck","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cba4650f1d68b897a1eede6acbf374b218a28537","unresolved":true,"context_lines":[{"line_number":733,"context_line":"                    txn.add(cmd)"},{"line_number":734,"context_line":"        raise periodics.NeverAgain()"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    # TODO(lucasagomes): Remove this in the Z cycle"},{"line_number":737,"context_line":"    # A static spacing value is used here, but this method will only run"},{"line_number":738,"context_line":"    # once per lock due to the use of periodics.NeverAgain()."},{"line_number":739,"context_line":"    @periodics.periodic(spacing\u003d600, run_immediately\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"90c0acff_e418b22e","line":736,"updated":"2022-01-28 16:11:13.000000000","message":"Ops, I meant to delete this one","commit_id":"73228abe807a546ac746fae2380156ea59973aaa"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9605b32bf92da51692cad0001280db91c3028801","unresolved":false,"context_lines":[{"line_number":733,"context_line":"                    txn.add(cmd)"},{"line_number":734,"context_line":"        raise periodics.NeverAgain()"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    # TODO(lucasagomes): Remove this in the Z cycle"},{"line_number":737,"context_line":"    # A static spacing value is used here, but this method will only run"},{"line_number":738,"context_line":"    # once per lock due to the use of periodics.NeverAgain()."},{"line_number":739,"context_line":"    @periodics.periodic(spacing\u003d600, run_immediately\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef5eb457_bd1ef14a","line":736,"in_reply_to":"90c0acff_e418b22e","updated":"2022-01-31 11:32:47.000000000","message":"Done","commit_id":"73228abe807a546ac746fae2380156ea59973aaa"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3819ee4e99f4ea297b24622793f537a644bb0d02","unresolved":true,"context_lines":[{"line_number":762,"context_line":"            lrp \u003d self._nb_idl.get_lrouter_port(lrp_name)"},{"line_number":763,"context_line":"            if lrp.options.get("},{"line_number":764,"context_line":"                    ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH) !\u003d expected_value:"},{"line_number":765,"context_line":"                options \u003d self._ovn_client._gen_router_port_options(rp)"},{"line_number":766,"context_line":"                cmds.append(self._nb_idl.lrp_set_options(lrp_name, **options))"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        if cmds:"}],"source_content_type":"text/x-python","patch_set":2,"id":"94052347_936bbf17","line":765,"range":{"start_line":765,"start_character":43,"end_line":765,"end_character":67},"updated":"2022-02-01 12:46:13.000000000","message":"This method requires DB access (get network and ports).\n\nIs it possible to just retrieve the lrp options and change only the \"LRP_OPTIONS_RESIDE_REDIR_CH\" value?","commit_id":"88d50ca3994624e0dba1e1a8ea9937bf467dde27"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8f2081ef4ba507ff64734c7dfcdc39982599c6ef","unresolved":true,"context_lines":[{"line_number":762,"context_line":"            lrp \u003d self._nb_idl.get_lrouter_port(lrp_name)"},{"line_number":763,"context_line":"            if lrp.options.get("},{"line_number":764,"context_line":"                    ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH) !\u003d expected_value:"},{"line_number":765,"context_line":"                options \u003d self._ovn_client._gen_router_port_options(rp)"},{"line_number":766,"context_line":"                cmds.append(self._nb_idl.lrp_set_options(lrp_name, **options))"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        if cmds:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fb433ba8_3aaab82f","line":765,"range":{"start_line":765,"start_character":43,"end_line":765,"end_character":67},"in_reply_to":"94052347_936bbf17","updated":"2022-02-01 15:18:18.000000000","message":"Thanks for the review.\n\nIt\u0027s certainly possible but not sure if desirable because if I do this via OVSDB I will have to interact over every LRP object and check whether it belongs to a VLAN network or not in python, this can be very slow on large deployments. I thought it would be more performant if I query MariaDB and fetch only the ports that makes sense for this option.\n\nDoes it make sense ?","commit_id":"88d50ca3994624e0dba1e1a8ea9937bf467dde27"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"54cb3c7ce7fa80f6ac0bacb23cf851a877a9b388","unresolved":false,"context_lines":[{"line_number":762,"context_line":"            lrp \u003d self._nb_idl.get_lrouter_port(lrp_name)"},{"line_number":763,"context_line":"            if lrp.options.get("},{"line_number":764,"context_line":"                    ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH) !\u003d expected_value:"},{"line_number":765,"context_line":"                options \u003d self._ovn_client._gen_router_port_options(rp)"},{"line_number":766,"context_line":"                cmds.append(self._nb_idl.lrp_set_options(lrp_name, **options))"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        if cmds:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2b18d224_6a0b4253","line":765,"range":{"start_line":765,"start_character":43,"end_line":765,"end_character":67},"in_reply_to":"fb433ba8_3aaab82f","updated":"2022-02-07 14:55:37.000000000","message":"Done","commit_id":"88d50ca3994624e0dba1e1a8ea9937bf467dde27"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a42ab32c2728b8cd2e224afb9dae17034ac45e25","unresolved":false,"context_lines":[{"line_number":796,"context_line":"            lrp \u003d self._nb_idl.get_lrouter_port(lrp_name)"},{"line_number":797,"context_line":"            if lrp.options.get("},{"line_number":798,"context_line":"                    ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH) !\u003d expected_value:"},{"line_number":799,"context_line":"                opt \u003d {ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH: expected_value}"},{"line_number":800,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":801,"context_line":"                    \u0027Logical_Router_Port\u0027, lrp_name, (\u0027options\u0027, opt)))"},{"line_number":802,"context_line":"        if cmds:"}],"source_content_type":"text/x-python","patch_set":3,"id":"20aef24e_52c18670","line":799,"range":{"start_line":799,"start_character":16,"end_line":799,"end_character":77},"updated":"2022-02-07 16:57:36.000000000","message":"+1: this is what I was talking about, just to modify this key:value and push the update.","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8b3d871a654a0d6c02fb8362744eda37368709a0","unresolved":true,"context_lines":[{"line_number":798,"context_line":"                    ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH) !\u003d expected_value:"},{"line_number":799,"context_line":"                opt \u003d {ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH: expected_value}"},{"line_number":800,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":801,"context_line":"                    \u0027Logical_Router_Port\u0027, lrp_name, (\u0027options\u0027, opt)))"},{"line_number":802,"context_line":"        if cmds:"},{"line_number":803,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":804,"context_line":"                for cmd in cmds:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4f3bd7bf_b641c1a6","line":801,"updated":"2022-02-07 15:02:27.000000000","message":"Note for reviewers: I am using db_set() instead of lrp_set_options() here because lrp_set_options() does replace all options in that column where db_set() only adds or replace the specified options","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"0992c23c496aff59b5807d63b75b126d07f91c69","unresolved":true,"context_lines":[{"line_number":798,"context_line":"                    ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH) !\u003d expected_value:"},{"line_number":799,"context_line":"                opt \u003d {ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH: expected_value}"},{"line_number":800,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":801,"context_line":"                    \u0027Logical_Router_Port\u0027, lrp_name, (\u0027options\u0027, opt)))"},{"line_number":802,"context_line":"        if cmds:"},{"line_number":803,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":804,"context_line":"                for cmd in cmds:"}],"source_content_type":"text/x-python","patch_set":3,"id":"8ca5f46d_d845bf66","line":801,"in_reply_to":"4f3bd7bf_b641c1a6","updated":"2022-02-10 11:47:20.000000000","message":"++, weird behavior of the lrp_set_options API for options not passed","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"0992c23c496aff59b5807d63b75b126d07f91c69","unresolved":true,"context_lines":[{"line_number":1415,"context_line":"        # distributed gateway port."},{"line_number":1416,"context_line":"        # https://github.com/openvswitch/ovs/commit/85706c34d53d4810f54bec1de662392a3c06a996"},{"line_number":1417,"context_line":"        if network.get(pnet.NETWORK_TYPE) \u003d\u003d const.TYPE_VLAN:"},{"line_number":1418,"context_line":"            options[ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH] \u003d ("},{"line_number":1419,"context_line":"                \u0027false\u0027 if ovn_conf.is_ovn_distributed_floating_ip()"},{"line_number":1420,"context_line":"                else \u0027true\u0027)"},{"line_number":1421,"context_line":""},{"line_number":1422,"context_line":"        is_gw_port \u003d const.DEVICE_OWNER_ROUTER_GW \u003d\u003d port.get("},{"line_number":1423,"context_line":"            \u0027device_owner\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"86acb5f5_883187eb","line":1420,"range":{"start_line":1418,"start_character":58,"end_line":1420,"end_character":28},"updated":"2022-02-10 11:47:20.000000000","message":"nit:\n\noptions[ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH] \u003d not ovn_conf.is_ovn_distributed_floating_ip()\n\n? perhaps is more readable as you wrote it :)","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"8b33527dc04ea8492b97fa3a9ca1aac2a0697b6e","unresolved":true,"context_lines":[{"line_number":1415,"context_line":"        # distributed gateway port."},{"line_number":1416,"context_line":"        # https://github.com/openvswitch/ovs/commit/85706c34d53d4810f54bec1de662392a3c06a996"},{"line_number":1417,"context_line":"        if network.get(pnet.NETWORK_TYPE) \u003d\u003d const.TYPE_VLAN:"},{"line_number":1418,"context_line":"            options[ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH] \u003d ("},{"line_number":1419,"context_line":"                \u0027false\u0027 if ovn_conf.is_ovn_distributed_floating_ip()"},{"line_number":1420,"context_line":"                else \u0027true\u0027)"},{"line_number":1421,"context_line":""},{"line_number":1422,"context_line":"        is_gw_port \u003d const.DEVICE_OWNER_ROUTER_GW \u003d\u003d port.get("},{"line_number":1423,"context_line":"            \u0027device_owner\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"963d1e70_a97946c4","line":1420,"range":{"start_line":1418,"start_character":58,"end_line":1420,"end_character":28},"in_reply_to":"65864b83_f498806b","updated":"2022-02-10 13:34:40.000000000","message":"ah yeah string and lower case is definitely uglier than what you did!","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"83e459de6647ef16a517c1d8f4412b065758ff13","unresolved":true,"context_lines":[{"line_number":1415,"context_line":"        # distributed gateway port."},{"line_number":1416,"context_line":"        # https://github.com/openvswitch/ovs/commit/85706c34d53d4810f54bec1de662392a3c06a996"},{"line_number":1417,"context_line":"        if network.get(pnet.NETWORK_TYPE) \u003d\u003d const.TYPE_VLAN:"},{"line_number":1418,"context_line":"            options[ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH] \u003d ("},{"line_number":1419,"context_line":"                \u0027false\u0027 if ovn_conf.is_ovn_distributed_floating_ip()"},{"line_number":1420,"context_line":"                else \u0027true\u0027)"},{"line_number":1421,"context_line":""},{"line_number":1422,"context_line":"        is_gw_port \u003d const.DEVICE_OWNER_ROUTER_GW \u003d\u003d port.get("},{"line_number":1423,"context_line":"            \u0027device_owner\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"65864b83_f498806b","line":1420,"range":{"start_line":1418,"start_character":58,"end_line":1420,"end_character":28},"in_reply_to":"86acb5f5_883187eb","updated":"2022-02-10 11:48:41.000000000","message":"problem is that OVN wants strings and not boolean but yeah, we could do the bool operation and then convert to string and lower-case it. Just looked more obscure heh","commit_id":"5bef86847790f60bf2cb87903db8b9ef88051623"}]}
