)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1377aff48c7bd108fef8cf74ef19984d21109485","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1605a8a8_5ceca16f","updated":"2022-05-17 21:29:17.000000000","message":"Clean backport with differences from the cherry picked change documented in the commit message, LGTM","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"}],"nova/tests/functional/libvirt/base.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1f0d5bbbd4022f84a6a78b0ffebf4b21abf17904","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"76186b76_bb1cb661","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"updated":"2022-05-13 19:35:12.000000000","message":"Where does this com from and why is it needed? It\u0027s not present in the LibvirtMigrationMixin on master or stable/xena.","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1377aff48c7bd108fef8cf74ef19984d21109485","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"31c493b5_e9fb5a0f","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"1d41c975_7069652b","updated":"2022-05-17 21:29:17.000000000","message":"This all makes sense, thanks Elod and Alex. Given the discussion, I think the one-off is OK. I\u0027m a little torn about adding it here in a way that doesn\u0027t exist anywhere else vs adding it in the test the way it is in nova/tests/functional/libvirt/test_numa_live_migration.py ... but going back to my concern to avoid future repetition, locating it here can avoid some of that. So, I think this works fine.","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"5d037b76b1fb10fb976e664c38daf649a7a8cb16","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"1d41c975_7069652b","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"2e50522f_66e509b6","updated":"2022-05-17 14:20:58.000000000","message":"I would like to revoke my previous comment and claim that we need extra backports [1] before two patches we have mentioned for stable/wallaby and older branches. As a result, current approach looks better to me...\n\nPlease let me know if I am missing something.\n\n[1]\nhttps://review.opendev.org/q/topic:fixture-cleanup","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"295349b50b8233180cd5015ab8b977bab074765b","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"d0553b47_f6cb3353","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"63a8d5af_d444d654","updated":"2022-05-17 03:13:36.000000000","message":"Thanks for the details, you helped me find why this doesn\u0027t fail despite the same code no longer existing in nova/tests/functional/libvirt/test_numa_live_migration.py beyond stable/wallaby. Looks like we had a couple of refactoring changes [1][2] that commonized code for reuse.\n\nI\u0027m wondering if we\u0027d be better off backporting [1][2] under your changes (I\u0027m imagining adding one-off MonkeyPatch(...) for the os-brick connector repeatedly in future backports). But maybe that would be preferred. Let me ask elodilles what he thinks.\n\n[1] Ic5e513fde04032113f22085ce8012fd456f2f844\n[2] I7ffcb69f6f1613ddd3427472148b8e780a268271","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"dafa7513cccfece1c951697d72165fa70ef485f9","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"8a457f77_c92525fc","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"76186b76_bb1cb661","updated":"2022-05-14 12:40:50.000000000","message":"Thank you very much for taking a look.\n\nI added this line intentionally because without it new functional tests fail with error [1]. I found that similar problem was resolved by stubbing out appropriate call Id181f5fa5b8edb92fdcad2ce777bafb9e3d60b5e and try to find why other stable/wallaby functional tests related to live migration are not failing with the same error. I found this code in nova/tests/functional/libvirt/test_numa_live_migration.py and decided to try: it solved the issue, so I left it.\n\n\n[1]\n  File \"/root/openstack/openstack/nova/nova/virt/libvirt/driver.py\", line 1668, in get_volume_connector\n    return connector.get_connector_properties(\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/os_brick/utils.py\", line 154, in trace_logging_wrapper\n    result \u003d f(*args, **kwargs)\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/os_brick/initiator/connector.py\", line 232, in get_connector_properties\n    connector.get_connector_properties(\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/os_brick/initiator/connectors/iscsi.py\", line 68, in get_connector_properties\n    initiator \u003d iscsi.get_initiator()\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/os_brick/initiator/connectors/iscsi.py\", line 982, in get_initiator\n    lines, _err \u003d self._execute(\u0027cat\u0027, file_path, run_as_root\u003dTrue,\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/os_brick/executor.py\", line 52, in _execute\n    result \u003d self.__execute(*args, **kwargs)\n  File \"/root/openstack/o\n    penstack/nova/.tox/functional-py38/lib/python3.8/site-packages/os_brick/privileged/rootwrap.py\", line 172, in execute\n    return execute_root(*cmd, **kwargs)\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/oslo_privsep/priv_context.py\", line 246, in _wrap\n    self.start()\n  File \"/root/openstack/openstack/nova/.tox/functional-py38/lib/python3.8/site-packages/oslo_privsep/priv_context.py\", line 258, in start\n    channel \u003d daemon.RootwrapClientChannel(context\u003dself)\n  File \"/root/openstack/openstack/nova/nova/tests/fixtures.py\", line 2702, in __init__\n    raise Exception(\u0027You have attempted to start a privsep helper. \u0027\nException: You have attempted to start a privsep helper. This is not allowed in the gate, and indicates a failure to have mocked your tests.","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"f1722289944f6a1f5c9b4bf7b5a34a8b12f168eb","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"63a8d5af_d444d654","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"8a457f77_c92525fc","updated":"2022-05-16 14:00:34.000000000","message":"Do you think I need to tune this somehow?","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"1925e6deb58ca4c0a570f5b9e9074e65d2b92053","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"2e50522f_66e509b6","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"c37e5a83_f1e46c3f","updated":"2022-05-17 12:11:28.000000000","message":"Please let me add my 2 cents. First of all, thank you very much for identifying the root cause behind this behavior and providing your perspective. Both patches doesn\u0027t look too big to me to be backported. It looks like some conflicts would occur, but those conflicts are not hard to resolve: some tests don\u0027t exist, but fixture code seem to be the same.\n\nAs a result, I think that it is better to back-port specified changes and rebase fix for bug #1949808 on top to avoid possible problems in the future. I will do this shortly.","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"4789e46274534d43fe0c33f24bf8fa3911f24106","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \u0027nova.tests.unit.virt.libvirt.fakelibvirt.Domain.migrateToURI3\u0027,"},{"line_number":176,"context_line":"            self._migrate_stub))"},{"line_number":177,"context_line":"        self.migrate_stub_ran \u003d False"},{"line_number":178,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":179,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":180,"context_line":"            fake_os_brick_connector))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":183,"context_line":"        self.dest.driver._host.get_connection().createXML("}],"source_content_type":"text/x-python","patch_set":2,"id":"c37e5a83_f1e46c3f","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":37},"in_reply_to":"d0553b47_f6cb3353","updated":"2022-05-17 08:32:44.000000000","message":"In general, if massive test refactoring backports can be avoided then I tend to suggest that. Though this seems fairly small (or medium) size refactor (I mean [1] and [2]).\n\nThis monkeypatch seems quite acceptable, though if you say we will need multiple of them in the future, then the test code will diverge more and more in stable branches. Which is also not good. But I don\u0027t see how many times we will need this kind of workaround.\n\nSo, Melanie, if you see that similar monkeypatching will be needed for backports time to time, then maybe it\u0027s better to backport [1] and [2]. But we need to keep it in mind, that probably we need to backport it along to older stable branches as well.","commit_id":"8f0028953df6f8bce5e9f43557bda6b83ddfd361"}]}
