)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"7f4395883e4caf240ad2d86cb7fa5205924b3e21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3b4eb933_76f85085","updated":"2024-07-17 07:56:19.000000000","message":"So your plans in orde","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"72064d5e082fc833863075c3dd5e35e4e6b80008","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6cbe9673_ba0a283d","updated":"2024-07-22 05:52:45.000000000","message":"check experimental","commit_id":"a0e306aa628414181cadd25d5ddfe689572171a9"},{"author":{"_account_id":26832,"name":"Stefan Hoffmann","email":"stefan.hoffmann@cloudandheat.com","username":"shoffmann"},"change_message_id":"c2da316c5b8746c63e1700909b74c2eb34d52137","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9d586942_0e85cf26","updated":"2025-02-26 11:39:47.000000000","message":"We have another approach at nova for this issue: https://bugs.launchpad.net/nova/+bug/2073254","commit_id":"c8b67b6484de426f7e63632550416535c6acef2d"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"7f4395883e4caf240ad2d86cb7fa5205924b3e21","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        return utils.is_lsp_enabled(lsp) and utils.is_lsp_up(lsp)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def run(self, event, row, old\u003dNone):"},{"line_number":306,"context_line":"        self.driver.set_port_status_up(row.logical_port)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class ChassisAgentEvent(BaseEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"f74e483c_a75a7e5b","line":306,"updated":"2024-07-17 07:56:19.000000000","message":"Do you mean that it will only notify Nova of the network-vif-plugged event? But I think there is no need to set the port up, right?","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":26832,"name":"Stefan Hoffmann","email":"stefan.hoffmann@cloudandheat.com","username":"shoffmann"},"change_message_id":"7de22a4d1e3ceaa479ad391024cfa48dd62f3b97","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        return utils.is_lsp_enabled(lsp) and utils.is_lsp_up(lsp)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def run(self, event, row, old\u003dNone):"},{"line_number":306,"context_line":"        self.driver.set_port_status_up(row.logical_port)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class ChassisAgentEvent(BaseEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"4deef053_a83b83b8","line":306,"in_reply_to":"3516caaf_73aff468","updated":"2024-07-31 14:59:07.000000000","message":"Can you point me to how to schedule a nova zuul job with this change?","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ce98cb224677a609b19abb8f7fa4ffe89b22234","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        return utils.is_lsp_enabled(lsp) and utils.is_lsp_up(lsp)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def run(self, event, row, old\u003dNone):"},{"line_number":306,"context_line":"        self.driver.set_port_status_up(row.logical_port)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class ChassisAgentEvent(BaseEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5b241188_8f25615f","line":306,"in_reply_to":"58e0a6bf_7a2b4568","updated":"2024-07-19 13:38:19.000000000","message":"Liushy is right: the port is created by Nova but the VM is not started until we send the \"network-vif-plugged\" event, and that doens\u0027t happen until the VM is started and the port plugged. We have a deadlock here that is broken by sending the fake \"network-vif-plugged\" that you are deleting in this patch.","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":26832,"name":"Stefan Hoffmann","email":"stefan.hoffmann@cloudandheat.com","username":"shoffmann"},"change_message_id":"4194f09226b3070f7956048d9be5d5476e53b636","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        return utils.is_lsp_enabled(lsp) and utils.is_lsp_up(lsp)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def run(self, event, row, old\u003dNone):"},{"line_number":306,"context_line":"        self.driver.set_port_status_up(row.logical_port)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class ChassisAgentEvent(BaseEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"eb4cea85_020e46a6","line":306,"in_reply_to":"5b241188_8f25615f","updated":"2024-07-22 13:20:32.000000000","message":"We would have a deadlock, if we would wait for \"additional_chassis\" to be set. But if waiting for options[\"requested-chassis\"] to have more than one entry, we don\u0027t run into the deadlock, we only wait, till southbound has the change that multi-chassis should be set.\n\nThe port is also bound on the destination hypervisor, but the tap interface don\u0027t exist yet. There nova-compute waits for our event, than continues to create the port.\n\nSo maybe some description is wrong, but it works, as I don\u0027t wait for the port/tap interface to be there, but only for southbound to have the change (that is requested before nova-compute waits for the event.)","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"923d83edff7b01759874119cb5ec3528cd57c849","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        return utils.is_lsp_enabled(lsp) and utils.is_lsp_up(lsp)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def run(self, event, row, old\u003dNone):"},{"line_number":306,"context_line":"        self.driver.set_port_status_up(row.logical_port)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class ChassisAgentEvent(BaseEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3516caaf_73aff468","line":306,"in_reply_to":"eb4cea85_020e46a6","updated":"2024-07-30 09:14:44.000000000","message":"In order to test this, I would like to see the nova job \"nova-live-migration\" running with this patch, ensuring that the \"live_migration_wait_for_vif_plug\" flag is set.","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":26832,"name":"Stefan Hoffmann","email":"stefan.hoffmann@cloudandheat.com","username":"shoffmann"},"change_message_id":"f9811fcf4dd838c839dc233c5e57f2b1e1e1479d","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        return utils.is_lsp_enabled(lsp) and utils.is_lsp_up(lsp)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def run(self, event, row, old\u003dNone):"},{"line_number":306,"context_line":"        self.driver.set_port_status_up(row.logical_port)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class ChassisAgentEvent(BaseEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"58e0a6bf_7a2b4568","line":306,"in_reply_to":"f74e483c_a75a7e5b","updated":"2024-07-19 11:52:23.000000000","message":"Sorry, I don\u0027t get your question.\nNot sure, if  we still need to set the port up here. I only checked neutron DB, there the port is set to DOWN while migration, somewhere after this event, it\u0027s ACTIVE again.\nMaybe the port is also set as down in ovn, but not sure.","commit_id":"4ff2cccb826842730d447a400696765755f62a47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"923d83edff7b01759874119cb5ec3528cd57c849","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        # We can\u0027t wait for additional_chassis to be set, as nova-compute"},{"line_number":282,"context_line":"        # doesn\u0027t attach the tap interface before the plugged event is"},{"line_number":283,"context_line":"        # received."},{"line_number":284,"context_line":"        req_chassis \u003d utils.get_requested_chassis("},{"line_number":285,"context_line":"            row.options.get(ovn_const.LSP_OPTIONS_REQUESTED_CHASSIS_KEY, \u0027\u0027))"},{"line_number":286,"context_line":"        if (not (row.chassis and old_chassis) or row.chassis \u003d\u003d old_chassis) \\"},{"line_number":287,"context_line":"                and not (row.additional_chassis or len(req_chassis) \u003e 1):"},{"line_number":288,"context_line":"            return False"},{"line_number":289,"context_line":"        if row.type \u003d\u003d ovn_const.OVN_CHASSIS_REDIRECT:"},{"line_number":290,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"19402b03_a0cb1eb7","line":287,"range":{"start_line":284,"start_character":9,"end_line":287,"end_character":73},"updated":"2024-07-30 09:14:44.000000000","message":"There is no need to modify the current logic here but we can add a positive logic check. What we need here is to check if row.options.get(ovn_const.LSP_OPTIONS_REQUESTED_CHASSIS_KEY, \u0027\u0027) has been set (there is a difference with \"old.options\") and len(req_chassis)\u003e1. In that case we can return True directly.","commit_id":"c8b67b6484de426f7e63632550416535c6acef2d"},{"author":{"_account_id":26832,"name":"Stefan Hoffmann","email":"stefan.hoffmann@cloudandheat.com","username":"shoffmann"},"change_message_id":"7de22a4d1e3ceaa479ad391024cfa48dd62f3b97","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        # We can\u0027t wait for additional_chassis to be set, as nova-compute"},{"line_number":282,"context_line":"        # doesn\u0027t attach the tap interface before the plugged event is"},{"line_number":283,"context_line":"        # received."},{"line_number":284,"context_line":"        req_chassis \u003d utils.get_requested_chassis("},{"line_number":285,"context_line":"            row.options.get(ovn_const.LSP_OPTIONS_REQUESTED_CHASSIS_KEY, \u0027\u0027))"},{"line_number":286,"context_line":"        if (not (row.chassis and old_chassis) or row.chassis \u003d\u003d old_chassis) \\"},{"line_number":287,"context_line":"                and not (row.additional_chassis or len(req_chassis) \u003e 1):"},{"line_number":288,"context_line":"            return False"},{"line_number":289,"context_line":"        if row.type \u003d\u003d ovn_const.OVN_CHASSIS_REDIRECT:"},{"line_number":290,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"247fe7cb_6d327396","line":287,"range":{"start_line":284,"start_character":9,"end_line":287,"end_character":73},"in_reply_to":"19402b03_a0cb1eb7","updated":"2024-07-31 14:59:07.000000000","message":"I also thought first, no change should be needed here, but at debugging/testing old_chassis is quite often empty, so `(row.chassis and old_chassis)` becomes most of the times False and we return False, but len(req_chassis)\u003d2, so we should send the event, else nova would wait forever.","commit_id":"c8b67b6484de426f7e63632550416535c6acef2d"}]}
