)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1d962714838a9c3577b22ee114f91f0b66f10ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e010584c_6e50206d","updated":"2021-11-18 13:09:33.000000000","message":"Tobias by the way i can add some uinit test for this fi you like.\nim going to make a follow up for reordering when we do the port bidnign activation to the start of post_live_migration anyway so i can update both.","commit_id":"83b46f61550417575aeba3454a509660b6b74bac"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"176452639cfbe616b3c8dada530d4640b2b6d17e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8bc03419_5c2f0328","updated":"2021-11-18 10:09:07.000000000","message":"missing unit testing","commit_id":"83b46f61550417575aeba3454a509660b6b74bac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e8e62322c81849e20ec98885c5d72f81f1e99a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f8974616_f01a5542","updated":"2021-11-18 13:07:48.000000000","message":"the centos 8 stream failure was unrealted to this patch its caused by a mirror failure\n\nill recheck this later after i check with infra to see if that is fixed or not\n","commit_id":"83b46f61550417575aeba3454a509660b6b74bac"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"59629dd570eb30277b2f2b11d20ca546ce4957d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1bf18025_fab6b835","in_reply_to":"e010584c_6e50206d","updated":"2021-11-19 08:23:55.000000000","message":"That would be great!","commit_id":"83b46f61550417575aeba3454a509660b6b74bac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ea5334ba0f0b32c9fb085e6cce122d44c72c1114","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"579cb251_9f507493","updated":"2021-11-30 09:38:13.000000000","message":"Looks good to me. It is hidden behind a workaround config flag that is disable by default. The tainting of the libvirt domain and therefore the support implication of the VM needs to be handled by the distros providing such support. ","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"8eda5b975e4f97abbe6d16b60845e3f1fb5d29db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"50e1ca5b_fa1d0e7e","updated":"2021-11-30 09:00:09.000000000","message":"Should we also do a LOG.exception to log the exception if the announce fails? (it\u0027s still a best-effort so should not stop anything, just log exception + warning then continue)","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"ffbd56b4474c9d4dc6c4513cb48543ab46fa2e47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6df97491_d2ac9716","updated":"2022-01-10 08:40:42.000000000","message":"Maybe something like this is better (not tested implementation yet will do that internally asap), also missing testing.","commit_id":"abd4942c262e548f8d2220dd74982ed1a9b410cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"719809371a21d2deaf0b9814429a39be7f123c36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5dbba0e4_672cb7ba","updated":"2022-01-14 18:20:52.000000000","message":"I agree that this shouldn\u0027t live here long-term and the correct fix lives elsewhere. However, this will stop the bleeding for some folks and is clearly marked as a temporary workaround, so it is acceptable on that front IMO.","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"03c7bf58f461bf60a22388eaffd5d8259d2f0b88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"33e5503b_f5bcc840","updated":"2022-01-13 09:13:01.000000000","message":"I\u0027ve tested this patch in it\u0027s entirety on a Victoria cloud. Just needs some testing which unfortunately isn\u0027t my strongest forte.","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"05ed916180a5ff35c68d17dba9a7c548d17f5847","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3d216b7e_13a63a02","updated":"2022-01-17 08:22:10.000000000","message":"recheck","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"43f1dfec3b3768c40fb33aed3b2433a176042f33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4edc0062_8d19c6aa","updated":"2022-01-18 19:11:42.000000000","message":"recheck","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"9f5acc86a8ef1cc9b23cc9a3c1e6fae18abd8802","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"78037469_9c0aded9","updated":"2022-01-18 08:56:22.000000000","message":"recheck","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e98292892561f9c9bf1f5c686f98c8ae3034d9ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"251cfb8e_335b9261","updated":"2022-01-18 15:57:45.000000000","message":"recheck test_shelve_volume_backed_instance failed with unrelated block io errors in the ceph multi store job","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"}],"nova/conf/workarounds.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":362,"context_line":"    cfg.BoolOpt(\u0027enable_qemu_monitor_announce_self\u0027,"},{"line_number":363,"context_line":"                default\u003dFalse,"},{"line_number":364,"context_line":"                help\u003d\"\"\""},{"line_number":365,"context_line":"If it is set to True and the QEMU version is \u003e\u003d 4.0.0 the libvirt driver will"},{"line_number":366,"context_line":"try to do a best effort trying to send the announce-self command to the QEMU"},{"line_number":367,"context_line":"monitor so that it generates RARP frames to update network switches in the"},{"line_number":368,"context_line":"post live migration phase on the destination."}],"source_content_type":"text/x-python","patch_set":7,"id":"eae70d5f_3b814bd7","line":365,"range":{"start_line":365,"start_character":29,"end_line":365,"end_character":53},"updated":"2021-12-06 13:57:06.000000000","message":"Our minimum already is 4.2.0 on master.","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":362,"context_line":"    cfg.BoolOpt(\u0027enable_qemu_monitor_announce_self\u0027,"},{"line_number":363,"context_line":"                default\u003dFalse,"},{"line_number":364,"context_line":"                help\u003d\"\"\""},{"line_number":365,"context_line":"If it is set to True and the QEMU version is \u003e\u003d 4.0.0 the libvirt driver will"},{"line_number":366,"context_line":"try to do a best effort trying to send the announce-self command to the QEMU"},{"line_number":367,"context_line":"monitor so that it generates RARP frames to update network switches in the"},{"line_number":368,"context_line":"post live migration phase on the destination."}],"source_content_type":"text/x-python","patch_set":7,"id":"e43874d0_7104dbfd","line":365,"range":{"start_line":365,"start_character":29,"end_line":365,"end_character":53},"in_reply_to":"eae70d5f_3b814bd7","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":363,"context_line":"                default\u003dFalse,"},{"line_number":364,"context_line":"                help\u003d\"\"\""},{"line_number":365,"context_line":"If it is set to True and the QEMU version is \u003e\u003d 4.0.0 the libvirt driver will"},{"line_number":366,"context_line":"try to do a best effort trying to send the announce-self command to the QEMU"},{"line_number":367,"context_line":"monitor so that it generates RARP frames to update network switches in the"},{"line_number":368,"context_line":"post live migration phase on the destination."},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0e13b0c4_17dad66c","line":366,"range":{"start_line":366,"start_character":0,"end_line":366,"end_character":64},"updated":"2021-12-06 13:57:06.000000000","message":"try as a best effort to send the announce-self command","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                default\u003dFalse,"},{"line_number":364,"context_line":"                help\u003d\"\"\""},{"line_number":365,"context_line":"If it is set to True and the QEMU version is \u003e\u003d 4.0.0 the libvirt driver will"},{"line_number":366,"context_line":"try to do a best effort trying to send the announce-self command to the QEMU"},{"line_number":367,"context_line":"monitor so that it generates RARP frames to update network switches in the"},{"line_number":368,"context_line":"post live migration phase on the destination."},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"c1580701_bef110c5","line":366,"range":{"start_line":366,"start_character":0,"end_line":366,"end_character":64},"in_reply_to":"0e13b0c4_17dad66c","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Related options:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":373,"context_line":"\"\"\"),"},{"line_number":374,"context_line":"]"},{"line_number":375,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0232d290_b985398b","line":372,"range":{"start_line":372,"start_character":4,"end_line":372,"end_character":18},"updated":"2021-12-06 13:57:06.000000000","message":"* :oslo.config:option:`DEFAULT.compute_driver` (libvirt)","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Related options:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":373,"context_line":"\"\"\"),"},{"line_number":374,"context_line":"]"},{"line_number":375,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"e9ffe1b1_b2180918","line":372,"range":{"start_line":372,"start_character":4,"end_line":372,"end_character":18},"in_reply_to":"0232d290_b985398b","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"}],"nova/privsep/libvirt.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b5cb374de7cbfa293d607369ab77e8a01e01e245","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"},{"line_number":258,"context_line":"def send_announce_self(instance_name):"},{"line_number":259,"context_line":"    \"\"\"Send announce_self HMP command to trigger generation of broadcast"},{"line_number":260,"context_line":"    RARP frames to update network switches.\"\"\""},{"line_number":261,"context_line":"    try:"},{"line_number":262,"context_line":"        processutils.execute(\u0027virsh\u0027, \u0027qemu-monitor-command\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_3825c9af","line":259,"updated":"2020-07-16 21:30:39.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"48418cad5f04e38b19ea2e68fefac7388a60a06a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b5cb374de7cbfa293d607369ab77e8a01e01e245","unresolved":false,"context_lines":[{"line_number":257,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"},{"line_number":258,"context_line":"def send_announce_self(instance_name):"},{"line_number":259,"context_line":"    \"\"\"Send announce_self HMP command to trigger generation of broadcast"},{"line_number":260,"context_line":"    RARP frames to update network switches.\"\"\""},{"line_number":261,"context_line":"    try:"},{"line_number":262,"context_line":"        processutils.execute(\u0027virsh\u0027, \u0027qemu-monitor-command\u0027,"},{"line_number":263,"context_line":"                             instance_name, \u0027--hmp\u0027, \u0027announce_self\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_182a857d","line":260,"updated":"2020-07-16 21:30:39.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"48418cad5f04e38b19ea2e68fefac7388a60a06a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbaa597a57d5b8ced4be483bbbb4da706cc57ff2","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    \"\"\"Send announce_self HMP command to trigger generation of broadcast"},{"line_number":260,"context_line":"    RARP frames to update network switches.\"\"\""},{"line_number":261,"context_line":"    try:"},{"line_number":262,"context_line":"        processutils.execute(\u0027virsh\u0027, \u0027qemu-monitor-command\u0027,"},{"line_number":263,"context_line":"                             instance_name, \u0027--hmp\u0027, \u0027announce_self\u0027)"},{"line_number":264,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":265,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_4f84380b","line":263,"range":{"start_line":262,"start_character":8,"end_line":263,"end_character":69},"updated":"2020-07-16 19:54:37.000000000","message":"we do not use virsh in nova.\nyou will need to use the libvirt python binding instead.","commit_id":"48418cad5f04e38b19ea2e68fefac7388a60a06a"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"645f082c1759474f0bdaa7916633e95278a25a28","unresolved":false,"context_lines":[{"line_number":9799,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9800,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9801,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9802,"context_line":"        except:"},{"line_number":9803,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9804,"context_line":"                        \u0027for %(instance_name)s\u0027,"},{"line_number":9805,"context_line":"                        {\u0027instance_name\u0027: instance.name})"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_fb8fcbca","line":9802,"updated":"2020-07-16 23:40:03.000000000","message":"pep8: E722 do not use bare \u0027except\u0027","commit_id":"cc8da8c9e3f0b6f696c0ed49f8f4a2609423b8a2"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"645f082c1759474f0bdaa7916633e95278a25a28","unresolved":false,"context_lines":[{"line_number":9799,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9800,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9801,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9802,"context_line":"        except:"},{"line_number":9803,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9804,"context_line":"                        \u0027for %(instance_name)s\u0027,"},{"line_number":9805,"context_line":"                        {\u0027instance_name\u0027: instance.name})"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_db8c87d9","line":9802,"updated":"2020-07-16 23:40:03.000000000","message":"pep8: H201: no \u0027except:\u0027 at least use \u0027except Exception:\u0027","commit_id":"cc8da8c9e3f0b6f696c0ed49f8f4a2609423b8a2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aee569c2ab3c6810ebbee449c07a3486532237ba","unresolved":true,"context_lines":[{"line_number":9802,"context_line":""},{"line_number":9803,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9804,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9805,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9806,"context_line":"        except Exception:"},{"line_number":9807,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9808,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3cf236ad_94eba442","line":9805,"updated":"2021-11-17 17:45:30.000000000","message":"@Tobias just an FYI we have kind of hit a roadblock with fixing this issue for ovn any other way.\n\nwould you be ok with restoring this.\nit turns out that OVN is lacking the ablity to model that a port is moving form one host to anohter.\nso you cannot correctly tell ovn to install flows on the dest without it removing them form the souce today.\n\nas a result there will alwasy be packet lost (includign the RARP frames) whcn using ovn until \nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d2012179# is implemented.\n\nto that end we want to repoen the idea of merging this workaround upstream while we follow up with libvirt to add a public interface to trigger the self announce.\n\nfor libvirt without the public api we would fallback to the direct qemu monitor comamnd and use the new interface when its avaiable.\n\nthe other change we likely will make is move the binding profile activation to the start of post_live_migrate to also make that happen as early in that callback as possibel. it wont help much but i might help if you have a lot of cinder volumes i can adress that in a followup patch.","commit_id":"dfdc3f6d20b335acf291bfac5b2ad91ef2ce696e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"a05a97f0c1965fc5c1509c0a10fad5e119d39dba","unresolved":false,"context_lines":[{"line_number":9801,"context_line":"            import libvirtmod_qemu"},{"line_number":9802,"context_line":""},{"line_number":9803,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9804,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9805,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9806,"context_line":"        except Exception:"},{"line_number":9807,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9808,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_55eddb8c","line":9805,"range":{"start_line":9804,"start_character":0,"end_line":9805,"end_character":46},"updated":"2020-07-17 13:27:40.000000000","message":"This doesn\u0027t really throw an exception, unless libvirtmod_qemu causes an ImportError or the virDomainQemuMonitorCommand method doesn\u0027t exist.\n\nThe return value of virDomainQemuMonitorCommand if successfull is an empty string, might want to check it here and assert or raise an Exception to give the proper warning in the log.","commit_id":"dfdc3f6d20b335acf291bfac5b2ad91ef2ce696e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"1915ce146d2f27e44dc793113f21ae8a70c470cc","unresolved":true,"context_lines":[{"line_number":9802,"context_line":""},{"line_number":9803,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9804,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9805,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9806,"context_line":"        except Exception:"},{"line_number":9807,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9808,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"8d89feb9_23944d0d","line":9805,"in_reply_to":"3cf236ad_94eba442","updated":"2021-11-17 22:10:47.000000000","message":"Yes, I have no problem with fixing this up as a workaround. We\u0027ve have actually been running this in production for quite a while now, the only side-effect is as you described that instances in libvirt\u0027s view gets tainted.","commit_id":"dfdc3f6d20b335acf291bfac5b2ad91ef2ce696e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"d560cd1e831489936f6b6d06a3fb4ea88acbc859","unresolved":false,"context_lines":[{"line_number":9801,"context_line":"            import libvirtmod_qemu"},{"line_number":9802,"context_line":""},{"line_number":9803,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9804,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9805,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9806,"context_line":"        except Exception:"},{"line_number":9807,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9808,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f65232a_9c2bed2e","line":9805,"range":{"start_line":9804,"start_character":0,"end_line":9805,"end_character":46},"in_reply_to":"9f560f44_29449972","updated":"2020-10-26 15:04:31.000000000","message":"15:54 \u003c sean-k-mooney\u003e tobias-urdin: so our libvirt/qemu team say that once you use the qemu commands it marks the instacne as tainted and they \n                       nolonger will support it\n15:54 \u003c sean-k-mooney\u003e e.g. if you ever use raw qemu command vi libvirt you nolonger have support for that vm from redhat virt team\n15:55 \u003c sean-k-mooney\u003e tobias-urdin: some qemu monitor command can break libvirt or currpt the guest\n15:56 \u003c sean-k-mooney\u003e tobias-urdin: specificly some of the lowlevel block deivce commands\n15:56 \u003c tobias-urdin\u003e sean-k-mooney: ok, i\u0027m more curious the reasoning because, if the command im running adds a risk\n15:56 \u003c tobias-urdin\u003e but maybe that more of a question for somebody on that team\n15:56 \u003c sean-k-mooney\u003e that command does not\n15:57 \u003c sean-k-mooney\u003e but we dont want ot say yes and no on a per command basis\n15:57 \u003c sean-k-mooney\u003e that said danpb said adding a libvirt api for this would be a resonable thing to do","commit_id":"dfdc3f6d20b335acf291bfac5b2ad91ef2ce696e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"108c0dad433389bc1c0d68b60fca67fa900d8573","unresolved":false,"context_lines":[{"line_number":9801,"context_line":"            import libvirtmod_qemu"},{"line_number":9802,"context_line":""},{"line_number":9803,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9804,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9805,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9806,"context_line":"        except Exception:"},{"line_number":9807,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9808,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_29449972","line":9805,"range":{"start_line":9804,"start_character":0,"end_line":9805,"end_character":46},"in_reply_to":"9f560f44_ef6e0afe","updated":"2020-10-12 10:13:42.000000000","message":"Can you elaborate why a VM would be considered unsupported after issuing a QEMU monitor command downstream? Is it a policy/support decision or a underlying issue that could actually cause harm or damage to the lifecycle of the VM?","commit_id":"dfdc3f6d20b335acf291bfac5b2ad91ef2ce696e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb994ebc896cc470fda73e345982a7f3a2dfcb34","unresolved":false,"context_lines":[{"line_number":9801,"context_line":"            import libvirtmod_qemu"},{"line_number":9802,"context_line":""},{"line_number":9803,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":9804,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":9805,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":9806,"context_line":"        except Exception:"},{"line_number":9807,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":9808,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_ef6e0afe","line":9805,"range":{"start_line":9804,"start_character":0,"end_line":9805,"end_character":46},"in_reply_to":"bf51134e_55eddb8c","updated":"2020-08-07 16:03:19.000000000","message":"i just ask some of our virt folks about the supprotablity of this. from a downstream persctiove if you use the raw qemu monitor command it rednders the vm unsupported form that point. in libvirt this marks the domain as tainted and at that point there is nolonger any support provided.\n\nso if we were to merged this ti would have to be a temperoy workaround that is disabled by default and then you would need to get a suppot excption form your vendor.\n\nwith out an offically support libvirt api to do this(on of the libvirt maintainer suggested this would be a valid feature request) we cannot really use this in nova by defualt.\n\nin this case it is guarded by a workaround config option but\nim not sure how people feel about merging this with that context.\n\nthe other thing to keep in mind is rodolfo picked back up my neutron patch during the week\nhttps://review.opendev.org/#/c/640258/\nand seams to have fixed the dvr issue which was the blocker to this progressing previously.\n\nif we rebase https://review.opendev.org/#/c/602432/ then i belive we coudl fully fix the race instead of having the workaround. so maybe that is a better route to take.","commit_id":"dfdc3f6d20b335acf291bfac5b2ad91ef2ce696e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":10525,"context_line":"        This is to trigger generation of broadcast RARP frames to"},{"line_number":10526,"context_line":"        update network switches. This is best effort."},{"line_number":10527,"context_line":"        \"\"\""},{"line_number":10528,"context_line":"        if (not CONF.workarounds.enable_qemu_monitor_announce_self or"},{"line_number":10529,"context_line":"            not self._host.has_min_version(hv_ver\u003d(4, 0, 0))):"},{"line_number":10530,"context_line":"            return"},{"line_number":10531,"context_line":""},{"line_number":10532,"context_line":"        LOG.info(\u0027Sending announce-self command to QEMU monitor \u0027"},{"line_number":10533,"context_line":"                 \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"18cd1f93_8ff50b8e","line":10530,"range":{"start_line":10528,"start_character":0,"end_line":10530,"end_character":18},"updated":"2021-12-06 13:57:06.000000000","message":"We already have 4.2.0 as the min so the second check here isn\u0027t required.\n\n  MIN_QEMU_VERSION \u003d (4, 2, 0)","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":10525,"context_line":"        This is to trigger generation of broadcast RARP frames to"},{"line_number":10526,"context_line":"        update network switches. This is best effort."},{"line_number":10527,"context_line":"        \"\"\""},{"line_number":10528,"context_line":"        if (not CONF.workarounds.enable_qemu_monitor_announce_self or"},{"line_number":10529,"context_line":"            not self._host.has_min_version(hv_ver\u003d(4, 0, 0))):"},{"line_number":10530,"context_line":"            return"},{"line_number":10531,"context_line":""},{"line_number":10532,"context_line":"        LOG.info(\u0027Sending announce-self command to QEMU monitor \u0027"},{"line_number":10533,"context_line":"                 \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"e075b816_42b60846","line":10530,"range":{"start_line":10528,"start_character":0,"end_line":10530,"end_character":18},"in_reply_to":"18cd1f93_8ff50b8e","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":10529,"context_line":"            not self._host.has_min_version(hv_ver\u003d(4, 0, 0))):"},{"line_number":10530,"context_line":"            return"},{"line_number":10531,"context_line":""},{"line_number":10532,"context_line":"        LOG.info(\u0027Sending announce-self command to QEMU monitor \u0027"},{"line_number":10533,"context_line":"                 \u0027for %(instance_name)s\u0027,"},{"line_number":10534,"context_line":"                 {\u0027instance_name\u0027: instance.name})"},{"line_number":10535,"context_line":""},{"line_number":10536,"context_line":"        try:"},{"line_number":10537,"context_line":"            import libvirtmod_qemu"}],"source_content_type":"text/x-python","patch_set":7,"id":"70967e8d_77716925","line":10534,"range":{"start_line":10532,"start_character":0,"end_line":10534,"end_character":50},"updated":"2021-12-06 13:57:06.000000000","message":"There\u0027s no need to reference instance.name here, just include instance\u003dinstance as a kwarg to LOG.info()","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":10529,"context_line":"            not self._host.has_min_version(hv_ver\u003d(4, 0, 0))):"},{"line_number":10530,"context_line":"            return"},{"line_number":10531,"context_line":""},{"line_number":10532,"context_line":"        LOG.info(\u0027Sending announce-self command to QEMU monitor \u0027"},{"line_number":10533,"context_line":"                 \u0027for %(instance_name)s\u0027,"},{"line_number":10534,"context_line":"                 {\u0027instance_name\u0027: instance.name})"},{"line_number":10535,"context_line":""},{"line_number":10536,"context_line":"        try:"},{"line_number":10537,"context_line":"            import libvirtmod_qemu"}],"source_content_type":"text/x-python","patch_set":7,"id":"a7f898e4_b631b6cb","line":10534,"range":{"start_line":10532,"start_character":0,"end_line":10534,"end_character":50},"in_reply_to":"70967e8d_77716925","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":false,"context_lines":[{"line_number":10534,"context_line":"                 {\u0027instance_name\u0027: instance.name})"},{"line_number":10535,"context_line":""},{"line_number":10536,"context_line":"        try:"},{"line_number":10537,"context_line":"            import libvirtmod_qemu"},{"line_number":10538,"context_line":""},{"line_number":10539,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":10540,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("}],"source_content_type":"text/x-python","patch_set":7,"id":"62abdede_dbd09f04","line":10537,"range":{"start_line":10537,"start_character":12,"end_line":10537,"end_character":34},"updated":"2021-12-06 13:57:06.000000000","message":"I guess this is pulled in as a dependency by the main libvirt module so we don\u0027t need to list it as a requirement?","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ea5334ba0f0b32c9fb085e6cce122d44c72c1114","unresolved":false,"context_lines":[{"line_number":10538,"context_line":""},{"line_number":10539,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":10540,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":10541,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":10542,"context_line":"        except Exception:"},{"line_number":10543,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":10544,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9b43a710_ae409be6","line":10541,"range":{"start_line":10541,"start_character":16,"end_line":10541,"end_character":25},"updated":"2021-11-30 09:38:13.000000000","message":"That feels bad as it depends on the internals of the Domain object that can change any time. Still I have no better idea and this is behind a workaround flag. So meh.","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":10535,"context_line":""},{"line_number":10536,"context_line":"        try:"},{"line_number":10537,"context_line":"            import libvirtmod_qemu"},{"line_number":10538,"context_line":""},{"line_number":10539,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":10540,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":10541,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":10542,"context_line":"        except Exception:"},{"line_number":10543,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":10544,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"61958986_8f7ff443","line":10541,"range":{"start_line":10538,"start_character":0,"end_line":10541,"end_character":46},"updated":"2021-12-06 13:57:06.000000000","message":"This should really be part of nova.virt.libvirt.guest.Guest IMHO where we already have a reference to the domain under self._domain.","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":10535,"context_line":""},{"line_number":10536,"context_line":"        try:"},{"line_number":10537,"context_line":"            import libvirtmod_qemu"},{"line_number":10538,"context_line":""},{"line_number":10539,"context_line":"            domain \u003d self._host._get_domain(instance)"},{"line_number":10540,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":10541,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":10542,"context_line":"        except Exception:"},{"line_number":10543,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":10544,"context_line":"                        \u0027for %(instance_name)s\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"c8ce4a0f_fe652748","line":10541,"range":{"start_line":10538,"start_character":0,"end_line":10541,"end_character":46},"in_reply_to":"61958986_8f7ff443","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":10540,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":10541,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":10542,"context_line":"        except Exception:"},{"line_number":10543,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":10544,"context_line":"                        \u0027for %(instance_name)s\u0027,"},{"line_number":10545,"context_line":"                        {\u0027instance_name\u0027: instance.name})"},{"line_number":10546,"context_line":""},{"line_number":10547,"context_line":"    def post_live_migration_at_destination(self, context,"},{"line_number":10548,"context_line":"                                           instance,"}],"source_content_type":"text/x-python","patch_set":7,"id":"12799d21_025d3f3e","line":10545,"range":{"start_line":10543,"start_character":0,"end_line":10545,"end_character":57},"updated":"2021-12-06 13:57:06.000000000","message":"As above, also use LOG.exception to avoid swallowing the useful exception trace.","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"157297bbc48d0166cd6068160152745312620c90","unresolved":false,"context_lines":[{"line_number":10540,"context_line":"            libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":10541,"context_line":"                domain._o, \u0027announce_self\u0027, 1)"},{"line_number":10542,"context_line":"        except Exception:"},{"line_number":10543,"context_line":"            LOG.warning(\u0027Failed to send announce-self command to QEMU monitor \u0027"},{"line_number":10544,"context_line":"                        \u0027for %(instance_name)s\u0027,"},{"line_number":10545,"context_line":"                        {\u0027instance_name\u0027: instance.name})"},{"line_number":10546,"context_line":""},{"line_number":10547,"context_line":"    def post_live_migration_at_destination(self, context,"},{"line_number":10548,"context_line":"                                           instance,"}],"source_content_type":"text/x-python","patch_set":7,"id":"8e8ee10c_2e353981","line":10545,"range":{"start_line":10543,"start_character":0,"end_line":10545,"end_character":57},"in_reply_to":"12799d21_025d3f3e","updated":"2022-01-10 08:40:12.000000000","message":"Done","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"de85c1d2da837bc9416ed3f6667f4a531c3629bd","unresolved":true,"context_lines":[{"line_number":639,"context_line":"        self._domain.migrateStartPostCopy()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def announce_self(self):"},{"line_number":642,"context_line":"        libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":643,"context_line":"            self._domain._o, \u0027announce_self\u0027, 1)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def get_job_info(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ea70d5b_e72ce955","line":642,"updated":"2022-01-13 12:42:56.000000000","message":"nit: technialy since libvirtmod_qemu can be None you should wrap this in an if is not None\n\nbut on the other hand this code is disabled by default and the operator has to opt into it so they shoudl install it if they want to use it so this should not break anything.","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"a7cc42f324bfbc92e166e20a089659cb03688c3a","unresolved":true,"context_lines":[{"line_number":639,"context_line":"        self._domain.migrateStartPostCopy()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def announce_self(self):"},{"line_number":642,"context_line":"        libvirtmod_qemu.virDomainQemuMonitorCommand("},{"line_number":643,"context_line":"            self._domain._o, \u0027announce_self\u0027, 1)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def get_job_info(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"6f82c773_042c7bc6","line":642,"in_reply_to":"9ea70d5b_e72ce955","updated":"2022-01-14 10:01:33.000000000","message":"I actually wanted that on purpose, because that causes the libvirt driver to catch the exception and log that announce_self failed and the exception itself.","commit_id":"d44e24efe28e825fbfd2c75a032bf2d10109a439"}],"releasenotes/notes/announce-self-post-live-migration-936721b1ab887514.yaml":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3d68e01b0303c330bca39c0b3a2c5e699ddd978c","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a new configuration option ``[workarounds]/enable_qemu_monitor_announce_self``"},{"line_number":5,"context_line":"    that when enabled causes the Libvirt driver to send a announce_self QEMU"},{"line_number":6,"context_line":"    monitor command post live-migration. Please see `bug 1815989 \u003chttps://bugs.launchpad.net/nova/+bug/1815989\u003e`_"},{"line_number":7,"context_line":"    for more details. Please note that this causes the domain to be considered"},{"line_number":8,"context_line":"    tainted by libvirt."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"63e7ba21_ecb39606","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":40},"updated":"2021-12-06 13:57:06.000000000","message":"libvirt","commit_id":"e453a5e6d27b63b94ba82c4f88b1b5a560885d10"}]}
