)]}'
{"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e344bf55a6e700d0a68f60da3eab298e26a956eb","unresolved":false,"context_lines":[{"line_number":2561,"context_line":"            else:"},{"line_number":2562,"context_line":"                # Check if any physical bridge wasn\u0027t recreated recently,"},{"line_number":2563,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2564,"context_line":"                if ovs_status !\u003d constants.OVS_RESTARTED"},{"line_number":2565,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2566,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2567,"context_line":"                    added_bridges)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_fdadedea","line":2564,"updated":"2020-05-11 13:15:50.000000000","message":"pep8: E901 SyntaxError: invalid syntax","commit_id":"ba9d8c7a8f38b2feb2a601ba18331c6701f799e4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3a7f16c7c843795cb8be8c904b785fdea4291b8c","unresolved":false,"context_lines":[{"line_number":2561,"context_line":"            else:"},{"line_number":2562,"context_line":"                # Check if any physical bridge wasn\u0027t recreated recently,"},{"line_number":2563,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2564,"context_line":"                if ovs_status !\u003d constants.OVS_RESTARTED"},{"line_number":2565,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2566,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2567,"context_line":"                    added_bridges)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_4277d43b","line":2564,"range":{"start_line":2564,"start_character":16,"end_line":2564,"end_character":56},"updated":"2020-05-11 12:50:26.000000000","message":"this is always True here as otherwise 2551 would work (and \u0027:\u0027 missed in the end)","commit_id":"ba9d8c7a8f38b2feb2a601ba18331c6701f799e4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"baefeb5123cb72d4ef1956a9bc52bb01ee19036d","unresolved":false,"context_lines":[{"line_number":2561,"context_line":"            else:"},{"line_number":2562,"context_line":"                # Check if any physical bridge wasn\u0027t recreated recently,"},{"line_number":2563,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2564,"context_line":"                if ovs_status !\u003d constants.OVS_RESTARTED"},{"line_number":2565,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2566,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2567,"context_line":"                    added_bridges)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d3e6fc44","line":2564,"range":{"start_line":2564,"start_character":16,"end_line":2564,"end_character":56},"in_reply_to":"ff570b3c_4277d43b","updated":"2020-05-12 14:57:32.000000000","message":"My bad. I mixed two versions of fix and I forgot to remove this one :) Sorry for that.","commit_id":"ba9d8c7a8f38b2feb2a601ba18331c6701f799e4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e117b9af479cd417e40b5df8c3b5ab12e9b89c9f","unresolved":false,"context_lines":[{"line_number":2568,"context_line":"                    # In case when any bridge was \"re-created\", we need to"},{"line_number":2569,"context_line":"                    # ensure that there is no any stale flows in bridges left"},{"line_number":2570,"context_line":"                    need_clean_stale_flow \u003d True"},{"line_number":2571,"context_line":"                sync |\u003d bridges_recreated"},{"line_number":2572,"context_line":"            # Notify the plugin of tunnel IP"},{"line_number":2573,"context_line":"            if self.enable_tunneling and tunnel_sync:"},{"line_number":2574,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_7fab5588","line":2571,"range":{"start_line":2571,"start_character":16,"end_line":2571,"end_character":41},"updated":"2020-05-13 16:15:46.000000000","message":"should sync be set to True in case OVS was restarted? I mean if in original code bridges_recreated is always True when OVS is restarted, then we lose this sync setting with this patch","commit_id":"8820546ac8f7289348025162f979a4cd74fbc775"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"1332057c6b4285c1508eefd8a0a5230e6db7e812","unresolved":false,"context_lines":[{"line_number":2568,"context_line":"                    # In case when any bridge was \"re-created\", we need to"},{"line_number":2569,"context_line":"                    # ensure that there is no any stale flows in bridges left"},{"line_number":2570,"context_line":"                    need_clean_stale_flow \u003d True"},{"line_number":2571,"context_line":"                sync |\u003d bridges_recreated"},{"line_number":2572,"context_line":"            # Notify the plugin of tunnel IP"},{"line_number":2573,"context_line":"            if self.enable_tunneling and tunnel_sync:"},{"line_number":2574,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_418788d8","line":2571,"range":{"start_line":2571,"start_character":16,"end_line":2571,"end_character":41},"in_reply_to":"ff570b3c_0b5014d4","updated":"2020-05-14 06:09:40.000000000","message":"Agree, thanks for clarification!","commit_id":"8820546ac8f7289348025162f979a4cd74fbc775"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b1a182898ff45bc3f0675e9438d79fdeee5a31c","unresolved":false,"context_lines":[{"line_number":2568,"context_line":"                    # In case when any bridge was \"re-created\", we need to"},{"line_number":2569,"context_line":"                    # ensure that there is no any stale flows in bridges left"},{"line_number":2570,"context_line":"                    need_clean_stale_flow \u003d True"},{"line_number":2571,"context_line":"                sync |\u003d bridges_recreated"},{"line_number":2572,"context_line":"            # Notify the plugin of tunnel IP"},{"line_number":2573,"context_line":"            if self.enable_tunneling and tunnel_sync:"},{"line_number":2574,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_0b5014d4","line":2571,"range":{"start_line":2571,"start_character":16,"end_line":2571,"end_character":41},"in_reply_to":"ff570b3c_7fab5588","updated":"2020-05-13 21:23:28.000000000","message":"if ovs is restarted it will restart polling manager (see L2521-2523 and comment there) so all ports will be treated as added and it will do kind of \"sync\". It was like that before adding this monitoring of recreated bridges and it was working fine. So I don\u0027t think that there is need to change that part of the logic when ovs was restarted.","commit_id":"8820546ac8f7289348025162f979a4cd74fbc775"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"04bbf560efb8f738540f40a20c5e0ffb696f191a","unresolved":false,"context_lines":[{"line_number":2556,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2557,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2558,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2559,"context_line":"                    added_bridges)"},{"line_number":2560,"context_line":"                if bridges_recreated:"},{"line_number":2561,"context_line":"                    # In case when any bridge was \"re-created\", we need to"},{"line_number":2562,"context_line":"                    # ensure that there is no any stale flows in bridges left"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_ed4b2d56","line":2559,"updated":"2020-05-14 09:02:10.000000000","message":"I was reading _reconfigure_physical_bridges(), _do_reconfigure_physical_bridges() and setup_physical_bridges() to see if they do anything that would need to be re-done after an ovs restart. I found these two lines:\n\nhttps://opendev.org/openstack/neutron/src/commit/cb55643a0695ebc5b41f50f6edb1546bcc676b71/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L1566-L1567\n\nThere we install the default port drop flows. Since these are flows they will be lost during an ovs restart and here we won\u0027t reinstall them after the current change.\n\nDo we reinstall them somewhere else or do we lose them?","commit_id":"515f656f447d761d61be468a7098ccd3e6a82c6b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2bd9e0bc8094a4cc3fb90e87d5699de05a1f755b","unresolved":false,"context_lines":[{"line_number":2556,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2557,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2558,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2559,"context_line":"                    added_bridges)"},{"line_number":2560,"context_line":"                if bridges_recreated:"},{"line_number":2561,"context_line":"                    # In case when any bridge was \"re-created\", we need to"},{"line_number":2562,"context_line":"                    # ensure that there is no any stale flows in bridges left"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_e5bb41c1","line":2559,"in_reply_to":"ff570b3c_ed4b2d56","updated":"2020-05-14 11:38:04.000000000","message":"If ovs is restarted it will install same flows by calling setup_physical_bridges() in L2491.\nBasically those 2 cases: restart of ovs agent and recreate of physical bridge are doing almost the same things with physical bridges. The difference is that in case of ovs restart it do it with all bridges in bridge mappings and in case of recreated bridges, only for those bridges :)","commit_id":"515f656f447d761d61be468a7098ccd3e6a82c6b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"744583a7c2aec7c39e7861aeef6f11fb163f1332","unresolved":false,"context_lines":[{"line_number":2555,"context_line":"                # Check if any physical bridge wasn\u0027t recreated recently,"},{"line_number":2556,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2557,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2558,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2559,"context_line":"                    added_bridges)"},{"line_number":2560,"context_line":"                if bridges_recreated:"},{"line_number":2561,"context_line":"                    # In case when any bridge was \"re-created\", we need to"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_ba7431d2","line":2558,"updated":"2020-05-21 20:44:28.000000000","message":"See below, but I think that failure to initialize this could theoretically cause a NameError below where it might be used. Should initialize \u0027bridges_recreated \u003d False\u0027 at the top of the loop around L2539 to be safe.  Doesn\u0027t look like the other variables here are used outside this block.","commit_id":"27b2418e67ac0bcf2c76bd0cb1fa3382279bba41"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d23ff03ad1004ffbb7605bbd48245470171b17ef","unresolved":false,"context_lines":[{"line_number":2555,"context_line":"                # Check if any physical bridge wasn\u0027t recreated recently,"},{"line_number":2556,"context_line":"                # in case when openvswitch was restarted, it\u0027s not needed"},{"line_number":2557,"context_line":"                added_bridges \u003d idl_monitor.bridges_added + self.added_bridges"},{"line_number":2558,"context_line":"                bridges_recreated \u003d self._reconfigure_physical_bridges("},{"line_number":2559,"context_line":"                    added_bridges)"},{"line_number":2560,"context_line":"                if bridges_recreated:"},{"line_number":2561,"context_line":"                    # In case when any bridge was \"re-created\", we need to"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_3d35bba9","line":2558,"in_reply_to":"ff570b3c_ba7431d2","updated":"2020-05-21 21:06:42.000000000","message":"Good catch. I will change that","commit_id":"27b2418e67ac0bcf2c76bd0cb1fa3382279bba41"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"744583a7c2aec7c39e7861aeef6f11fb163f1332","unresolved":false,"context_lines":[{"line_number":2626,"context_line":"                        LOG.debug(\"Starting to process devices in:%s\","},{"line_number":2627,"context_line":"                                  port_info)"},{"line_number":2628,"context_line":"                        provisioning_needed \u003d ("},{"line_number":2629,"context_line":"                                ovs_restarted or bridges_recreated)"},{"line_number":2630,"context_line":"                        failed_devices \u003d self.process_network_ports("},{"line_number":2631,"context_line":"                            port_info, provisioning_needed)"},{"line_number":2632,"context_line":"                        LOG.info(\"Agent rpc_loop - iteration:%(iter_num)d - \""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_7ab6198d","line":2629,"updated":"2020-05-21 20:44:28.000000000","message":"Here","commit_id":"27b2418e67ac0bcf2c76bd0cb1fa3382279bba41"}]}
