)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a4d9ca7f137b917aa7a43dc275467c8fc9db4177","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"651ae593_bd807209","updated":"2022-10-06 12:38:32.000000000","message":"Oleg: I try to come back to this patch and your comments, thanks for them","commit_id":"a1d8ff30aea04101c6850b79887384edc6508cb6"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2bb36e8d990a118daba6c1a9a3c0eadd4b1a3da2","unresolved":true,"context_lines":[{"line_number":2335,"context_line":"            if not ret_val:"},{"line_number":2336,"context_line":"                LOG.debug(\u0027The host %s is not matching for port %s host %s!\u0027,"},{"line_number":2337,"context_line":"                          host, port_id, port_host)"},{"line_number":2338,"context_line":"            return ret_val, port"},{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":2341,"context_line":"    def get_ports_from_devices(self, context, devices):"}],"source_content_type":"text/x-python","patch_set":2,"id":"40adcb5d_ee459de3","line":2338,"updated":"2022-02-16 14:17:20.000000000","message":"now, here You will return port twice if port_host\u003d\u003dhost. Is that what You want?","commit_id":"d6a9176378516d7a49852b9afce610994d70edb3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"75629ad9ee1a3ce2975c69aae25cc8226301601f","unresolved":true,"context_lines":[{"line_number":2335,"context_line":"            if not ret_val:"},{"line_number":2336,"context_line":"                LOG.debug(\u0027The host %s is not matching for port %s host %s!\u0027,"},{"line_number":2337,"context_line":"                          host, port_id, port_host)"},{"line_number":2338,"context_line":"            return ret_val, port"},{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":2341,"context_line":"    def get_ports_from_devices(self, context, devices):"}],"source_content_type":"text/x-python","patch_set":2,"id":"11f24c66_6e72d4dd","line":2338,"in_reply_to":"40adcb5d_ee459de3","updated":"2022-02-21 12:45:27.000000000","message":"thanks, yes the 1st one can be a bool.","commit_id":"d6a9176378516d7a49852b9afce610994d70edb3"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"49ef66b48734ff9115d553fe6c947d63f9b8071c","unresolved":true,"context_lines":[{"line_number":2338,"context_line":"                if b.host \u003d\u003d host:"},{"line_number":2339,"context_line":"                    return True, b.host, port"},{"line_number":2340,"context_line":"            LOG.debug(\"No binding found for DVR port %s\", port[\u0027id\u0027])"},{"line_number":2341,"context_line":"            return None, None, None"},{"line_number":2342,"context_line":"        else:"},{"line_number":2343,"context_line":"            port_host \u003d db.get_port_binding_host(context, port_id)"},{"line_number":2344,"context_line":"            is_bound \u003d bool(port) if (port_host \u003d\u003d host) else None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3e831756_8acb6d30","line":2341,"range":{"start_line":2341,"start_character":25,"end_line":2341,"end_character":29},"updated":"2022-02-21 13:41:49.000000000","message":"None means port is unbound (no host set), right? But for DVR port this is not true. May this lead to wrongly forcing DVR port to DOWN?","commit_id":"ecf50cfafffd4ebc4a9290f9dc1f9038391c5a3c"}],"neutron/plugins/ml2/rpc.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2bb36e8d990a118daba6c1a9a3c0eadd4b1a3da2","unresolved":true,"context_lines":[{"line_number":284,"context_line":"                      {\u0027device\u0027: mac_or_device, \u0027host\u0027: host})"},{"line_number":285,"context_line":"            if port and port[\u0027status\u0027] !\u003d n_const.PORT_STATUS_DOWN:"},{"line_number":286,"context_line":"                LOG.debug(\"Port %(port_id)s is not in DOWN state but \""},{"line_number":287,"context_line":"                          \"in: %(status)s\","},{"line_number":288,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027], \u0027status\u0027: port[\u0027status\u0027]})"},{"line_number":289,"context_line":"                self._try_update_port_status_down(rpc_context, port_id, host)"},{"line_number":290,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2a283787_ceaf02b1","line":287,"updated":"2022-02-16 14:17:20.000000000","message":"nitty nit: You can add here info that we are forcing it to DOWN state now or something like that","commit_id":"d6a9176378516d7a49852b9afce610994d70edb3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"75629ad9ee1a3ce2975c69aae25cc8226301601f","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                      {\u0027device\u0027: mac_or_device, \u0027host\u0027: host})"},{"line_number":285,"context_line":"            if port and port[\u0027status\u0027] !\u003d n_const.PORT_STATUS_DOWN:"},{"line_number":286,"context_line":"                LOG.debug(\"Port %(port_id)s is not in DOWN state but \""},{"line_number":287,"context_line":"                          \"in: %(status)s\","},{"line_number":288,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027], \u0027status\u0027: port[\u0027status\u0027]})"},{"line_number":289,"context_line":"                self._try_update_port_status_down(rpc_context, port_id, host)"},{"line_number":290,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"39aa799c_38cf6546","line":287,"in_reply_to":"2a283787_ceaf02b1","updated":"2022-02-21 12:45:27.000000000","message":"Done","commit_id":"d6a9176378516d7a49852b9afce610994d70edb3"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"34a5841e579f3c5e9474fb7129040f8f063b9095","unresolved":true,"context_lines":[{"line_number":286,"context_line":"                LOG.debug(\"Port %(port_id)s is not in DOWN state but \""},{"line_number":287,"context_line":"                          \"in: %(status)s\","},{"line_number":288,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027], \u0027status\u0027: port[\u0027status\u0027]})"},{"line_number":289,"context_line":"                self._try_update_port_status_down(rpc_context, port_id, host)"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            port_exists \u003d self._try_update_port_status_down("},{"line_number":292,"context_line":"                rpc_context, port_id, host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c75365d3_295c72d4","line":289,"range":{"start_line":289,"start_character":16,"end_line":289,"end_character":77},"updated":"2022-02-16 16:14:55.000000000","message":"What if during live migration src host agent sends update_device_down and dst agent sends update_device_up, but for some reason (race) update_device_up is handled first (by some really quick rpc worker), then another rpc worker handles update_device_down?","commit_id":"d6a9176378516d7a49852b9afce610994d70edb3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"75629ad9ee1a3ce2975c69aae25cc8226301601f","unresolved":true,"context_lines":[{"line_number":286,"context_line":"                LOG.debug(\"Port %(port_id)s is not in DOWN state but \""},{"line_number":287,"context_line":"                          \"in: %(status)s\","},{"line_number":288,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027], \u0027status\u0027: port[\u0027status\u0027]})"},{"line_number":289,"context_line":"                self._try_update_port_status_down(rpc_context, port_id, host)"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            port_exists \u003d self._try_update_port_status_down("},{"line_number":292,"context_line":"                rpc_context, port_id, host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ae6bde5_e7fc896c","line":289,"range":{"start_line":289,"start_character":16,"end_line":289,"end_character":77},"in_reply_to":"c75365d3_295c72d4","updated":"2022-02-21 12:45:27.000000000","message":"Good one, thanks.\nI return the host of port also from port_bound_to_host, and if it is empty, try only than to force status to DOWN","commit_id":"d6a9176378516d7a49852b9afce610994d70edb3"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"49ef66b48734ff9115d553fe6c947d63f9b8071c","unresolved":true,"context_lines":[{"line_number":276,"context_line":"        port_id \u003d plugin._device_to_port_id(rpc_context, mac_or_device,"},{"line_number":277,"context_line":"                                            pci_slot\u003dpci_slot)"},{"line_number":278,"context_line":"        port_exists \u003d True"},{"line_number":279,"context_line":"        (is_port_bound, port_host, port) \u003d plugin.port_bound_to_host("},{"line_number":280,"context_line":"            rpc_context, port_id, host)"},{"line_number":281,"context_line":"        if host and not is_port_bound:"},{"line_number":282,"context_line":"            LOG.debug(\"Device %(device)s not bound to the\""}],"source_content_type":"text/x-python","patch_set":3,"id":"cfdd501f_41c0aa53","line":279,"range":{"start_line":279,"start_character":9,"end_line":279,"end_character":39},"updated":"2022-02-21 13:41:49.000000000","message":"seems a bit excessive. What if return only port status and hosts (list). Will it be enough?","commit_id":"ecf50cfafffd4ebc4a9290f9dc1f9038391c5a3c"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"49ef66b48734ff9115d553fe6c947d63f9b8071c","unresolved":true,"context_lines":[{"line_number":285,"context_line":"                       \u0027port_host\u0027: port_host})"},{"line_number":286,"context_line":"            if (port and port[\u0027status\u0027] !\u003d n_const.PORT_STATUS_DOWN and"},{"line_number":287,"context_line":"                    not port_host):"},{"line_number":288,"context_line":"                LOG.debug(\"Port %(port_id)s is not in DOWN state but \""},{"line_number":289,"context_line":"                          \"in: %(status)s, force it to DOWN.\","},{"line_number":290,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027], \u0027status\u0027: port[\u0027status\u0027]})"},{"line_number":291,"context_line":"                self._try_update_port_status_down(rpc_context, port_id, host)"},{"line_number":292,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa38e9de_87c437c2","line":289,"range":{"start_line":288,"start_character":27,"end_line":289,"end_character":60},"updated":"2022-02-21 13:41:49.000000000","message":"Consider adding \"Unbound\" in the beginning","commit_id":"ecf50cfafffd4ebc4a9290f9dc1f9038391c5a3c"}]}
