)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a2963f536a855b37216e1154ad394c88f6e67dd","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Erlon R. Cruz \u003cerlon@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-12-15 09:48:33 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds regression test for bug LP#1897483"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia208ef0dd0bab1c59d025234f4da7537c39cda61"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9bc3071b_9a717793","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":39},"updated":"2021-12-15 16:51:53.000000000","message":"is this the right one\nhttps://bugs.launchpad.net/charm-neutron-openvswitch/+bug/1897483\n\nassuming yes then you should add\n\nRelated-Bug: #1897483","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e91b85f25d346c1fa7d7e0611b2b07c58021104f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Erlon R. Cruz \u003cerlon@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-12-15 09:48:33 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds regression test for bug LP#1897483"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia208ef0dd0bab1c59d025234f4da7537c39cda61"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7274dcae_73d44e32","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":39},"in_reply_to":"9bc3071b_9a717793","updated":"2022-02-10 11:36:26.000000000","message":"I was the wrong one. I have fixed and added it to that commit message.","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e91b85f25d346c1fa7d7e0611b2b07c58021104f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7ff07797_2ce81f63","updated":"2022-02-10 11:36:26.000000000","message":"recheck","commit_id":"8e71911f26e8a97cb87ae771078e66483b031baa"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b12c5b621749290f3356d8a7e17f940488a97ed8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"531ae7e6_cdb75e28","updated":"2022-03-09 12:30:56.000000000","message":"recheck","commit_id":"d43538712c034023bdb3e25cd7adfdee409ed596"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"d6e861ad9b51829bdb3e8ab2ad9a55c337675d30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b00305ee_2774b609","updated":"2022-03-08 18:40:55.000000000","message":"recheck","commit_id":"d43538712c034023bdb3e25cd7adfdee409ed596"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"f0b046006e078fa7074f0e26e7e666b78eaf3658","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b73e0515_42a08109","updated":"2022-03-08 20:30:13.000000000","message":"recheck","commit_id":"d43538712c034023bdb3e25cd7adfdee409ed596"}],"nova/tests/functional/regressions/test_bug_1897483.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a2963f536a855b37216e1154ad394c88f6e67dd","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from oslo_utils import excutils"},{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"69eb1379_e1e7acbc","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":11},"updated":"2021-12-15 16:51:53.000000000","message":"we are avoidign new usage of import mock\n\nyou shoudl use from unittests import mock\n\nalthough when writing functional test we use mocks much much less often.","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e91b85f25d346c1fa7d7e0611b2b07c58021104f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from oslo_utils import excutils"},{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"961baece_48f2d46b","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":11},"in_reply_to":"69eb1379_e1e7acbc","updated":"2022-02-10 11:36:26.000000000","message":"Ack","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a2963f536a855b37216e1154ad394c88f6e67dd","unresolved":true,"context_lines":[{"line_number":30,"context_line":"from nova.tests.unit.compute import fake_resource_tracker"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ComputeManagerMigrationTestCase(test.NoDBTestCase,"},{"line_number":34,"context_line":"                                      fake_resource_tracker.RTMockMixin):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"d7325f8a_c09b609e","line":33,"range":{"start_line":33,"start_character":6,"end_line":33,"end_character":37},"updated":"2021-12-15 16:51:53.000000000","message":"this is not that descriptive.\n\nalso for discovery i think we might need ti to start with test\n\nTestRollbackWithHWOffloadedOVS","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a2963f536a855b37216e1154ad394c88f6e67dd","unresolved":true,"context_lines":[{"line_number":30,"context_line":"from nova.tests.unit.compute import fake_resource_tracker"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ComputeManagerMigrationTestCase(test.NoDBTestCase,"},{"line_number":34,"context_line":"                                      fake_resource_tracker.RTMockMixin):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"d54ba7fd_aeecdd5c","line":33,"updated":"2021-12-15 16:51:53.000000000","message":"this is really a unit test as written.\n\ni would rewrite it using https://github.com/openstack/nova/blob/master/nova/tests/functional/regressions/test_bug_1939545.py as a template for how to create a 2 node live migration capable regression test.\n\nthen allter that to implement the logic of your test.\n\ni have not tested this but i would expect it to look something like this\n\nhttps://paste.opendev.org/show/811698/\n\nactully in the pastebin i had  self.assetRaises( ..., self._live_migrate, self.server)\n\nbut the _live_migrate likely wont raise.\n\nits defiend here\n\nhttps://github.com/openstack/nova/blob/0e0196d979cf1b8e63b9656358116a36f1f09ede/nova/tests/functional/integrated_helpers.py#L528-L536\n\nso that line shoudl be more like\nself._live_migrate(self.server, migration_expected_state\u003d\u0027reverted\u0027)\n\nbecause we are trying to emulate hardware offloaded ovs you might also need to do addtional setup similar to the sriov/pci tests\nhttps://github.com/openstack/nova/blob/master/nova/tests/functional/libvirt/test_pci_sriov_servers.py\n\n_PCIServersTestBase correctly configure the passthough white list for example\n\nso you might want to look at those test","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e91b85f25d346c1fa7d7e0611b2b07c58021104f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova.tests.unit.compute import fake_resource_tracker"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ComputeManagerMigrationTestCase(test.NoDBTestCase,"},{"line_number":34,"context_line":"                                      fake_resource_tracker.RTMockMixin):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1688710_e80bdb69","line":33,"in_reply_to":"d54ba7fd_aeecdd5c","updated":"2022-02-10 11:36:26.000000000","message":"Ack","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e91b85f25d346c1fa7d7e0611b2b07c58021104f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova.tests.unit.compute import fake_resource_tracker"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ComputeManagerMigrationTestCase(test.NoDBTestCase,"},{"line_number":34,"context_line":"                                      fake_resource_tracker.RTMockMixin):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"48631b71_83bbb05b","line":33,"range":{"start_line":33,"start_character":6,"end_line":33,"end_character":37},"in_reply_to":"d7325f8a_c09b609e","updated":"2022-02-10 11:36:26.000000000","message":"Done","commit_id":"dc6fad3048bf63685d072176d6af18cc3fe230a5"}],"nova/tests/functional/regressions/test_bug_1944619.py":[{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"ddbb036c1b4392c498fc9313b951e2d18483629f","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    Assert the behaviour observed in bug LP#1944619 caused by the live"},{"line_number":31,"context_line":"    migration cleanup code being used to cleanup pre-live migration failures."},{"line_number":32,"context_line":"    When SRIOV devices are use in the VM, that will cause the source host to"},{"line_number":33,"context_line":"    try to re-attach a VIF not actually de-attached causing a failure."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    The exception mocked in pre_live_migration reproduce an arbitrary error"}],"source_content_type":"text/x-python","patch_set":4,"id":"47d12073_2cc76c11","line":32,"range":{"start_line":32,"start_character":27,"end_line":32,"end_character":30},"updated":"2022-02-10 13:33:25.000000000","message":"Looks like a typo","commit_id":"3c1d85b89f54473f89843321e57c0b41d87c1d7b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0979bf831b5513759b5f228847ed103e735a5637","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    Assert the behaviour observed in bug LP#1944619 caused by the live"},{"line_number":31,"context_line":"    migration cleanup code being used to cleanup pre-live migration failures."},{"line_number":32,"context_line":"    When SRIOV devices are use in the VM, that will cause the source host to"},{"line_number":33,"context_line":"    try to re-attach a VIF not actually de-attached causing a failure."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    The exception mocked in pre_live_migration reproduce an arbitrary error"}],"source_content_type":"text/x-python","patch_set":4,"id":"75d280c2_00f4a7dc","line":32,"range":{"start_line":32,"start_character":27,"end_line":32,"end_character":30},"in_reply_to":"47d12073_2cc76c11","updated":"2022-03-08 14:09:42.000000000","message":"Done","commit_id":"3c1d85b89f54473f89843321e57c0b41d87c1d7b"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"ddbb036c1b4392c498fc9313b951e2d18483629f","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        # Live migrate the instance to another host"},{"line_number":79,"context_line":"        self._live_migrate(self.server, migration_expected_state\u003d\u0027error\u0027,"},{"line_number":80,"context_line":"                           server_expected_state\u003d\u0027MIGRATING\u0027)"},{"line_number":81,"context_line":"        self.libvirt_mock.mock.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":4,"id":"afa6e419_e035c7ee","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":51},"updated":"2022-02-10 13:33:25.000000000","message":"Usually some FIXME note is introduced to explain how the check below should be fixed after proper bug is fixed.","commit_id":"3c1d85b89f54473f89843321e57c0b41d87c1d7b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0979bf831b5513759b5f228847ed103e735a5637","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # Live migrate the instance to another host"},{"line_number":79,"context_line":"        self._live_migrate(self.server, migration_expected_state\u003d\u0027error\u0027,"},{"line_number":80,"context_line":"                           server_expected_state\u003d\u0027MIGRATING\u0027)"},{"line_number":81,"context_line":"        self.libvirt_mock.mock.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":4,"id":"339b2fcf_f1ee9829","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":51},"in_reply_to":"afa6e419_e035c7ee","updated":"2022-03-08 14:09:42.000000000","message":"Done","commit_id":"3c1d85b89f54473f89843321e57c0b41d87c1d7b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0979bf831b5513759b5f228847ed103e735a5637","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        self.src \u003d self.computes[\u0027src\u0027]"},{"line_number":57,"context_line":"        self.dest \u003d self.computes[\u0027dest\u0027]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        lib_path \u003d \"nova.virt.libvirt.driver.LibvirtDriver\""},{"line_number":60,"context_line":"        funtion_path \u003d \"rollback_live_migration_at_source\""},{"line_number":61,"context_line":"        mock_lib_path \u003d \"%s.%s\" % (lib_path, funtion_path)"},{"line_number":62,"context_line":"        self.libvirt_mock \u003d self.useFixture("},{"line_number":63,"context_line":"            fixtures.MockPatch(mock_lib_path,"},{"line_number":64,"context_line":"                               side_effect\u003dfakelibvirt.libvirtError("}],"source_content_type":"text/x-python","patch_set":5,"id":"87e1f980_6f3262d6","line":61,"range":{"start_line":59,"start_character":5,"end_line":61,"end_character":58},"updated":"2022-03-08 14:09:42.000000000","message":"nit: you could simplfy this a bit\n\n        lib_path \u003d \"nova.virt.libvirt.driver.LibvirtDriver\"\n        funtion_path \u003d \"rollback_live_migration_at_source\"\n        mock_lib_path \u003d \"%s.%s\" % (lib_path, funtion_path)\n\ncould be \n        mock_lib_path \u003d (\n            \"nova.virt.libvirt.driver.LibvirtDriver.\"\n            \"rollback_live_migration_at_source\"\n        )\n\nbut over all this should be ok","commit_id":"d43538712c034023bdb3e25cd7adfdee409ed596"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0979bf831b5513759b5f228847ed103e735a5637","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                               side_effect\u003dfakelibvirt.libvirtError("},{"line_number":65,"context_line":"                                defmsg\u003d\"libVirt duplicated dev error\")))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        funtion_path \u003d \"pre_live_migration\""},{"line_number":68,"context_line":"        mock_lib_path \u003d \"%s.%s\" % (lib_path, funtion_path)"},{"line_number":69,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":70,"context_line":"            mock_lib_path,"},{"line_number":71,"context_line":"            side_effect\u003dnova_exceptions.DestinationDiskExists("}],"source_content_type":"text/x-python","patch_set":5,"id":"eb317ed6_59788676","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":58},"updated":"2022-03-08 14:09:42.000000000","message":"i guess you are resuing the lib_path here which is why you did it this way.","commit_id":"d43538712c034023bdb3e25cd7adfdee409ed596"}]}
