)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ae84eecf803851763b12f6124a3c761e0541074","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add functional regression test for bug #1888395"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds a funcitonal regression test taht"},{"line_number":10,"context_line":"assert the broken behavior when trying to live migrate"},{"line_number":11,"context_line":"with a neutron backend that does not support multiple port"},{"line_number":12,"context_line":"bindings."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f560f44_4977b6a0","line":9,"range":{"start_line":9,"start_character":46,"end_line":9,"end_character":50},"updated":"2020-09-03 07:33:50.000000000","message":"that","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"}],"nova/network/constants.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"MULTI_NET_EXT \u003d \u0027Multi Provider Network\u0027"},{"line_number":21,"context_line":"FIP_PORT_DETAILS \u003d \u0027Floating IP Port Details Extension\u0027"},{"line_number":22,"context_line":"SUBSTR_PORT_FILTERING \u003d \u0027IP address substring filtering\u0027"},{"line_number":23,"context_line":"PORT_BINDING \u003d \u0027Port Binding\u0027"},{"line_number":24,"context_line":"PORT_BINDING_EXTENDED \u003d \u0027Port Bindings Extended\u0027"},{"line_number":25,"context_line":"DEFAULT_SECGROUP \u003d \u0027default\u0027"},{"line_number":26,"context_line":"BINDING_PROFILE \u003d \u0027binding:profile\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_5f0a9125","line":23,"updated":"2020-09-07 16:46:26.000000000","message":"GDI, [1] still hasn\u0027t merged :(\n\n[1] https://review.opendev.org/#/c/705792/","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":20,"context_line":"MULTI_NET_EXT \u003d \u0027Multi Provider Network\u0027"},{"line_number":21,"context_line":"FIP_PORT_DETAILS \u003d \u0027Floating IP Port Details Extension\u0027"},{"line_number":22,"context_line":"SUBSTR_PORT_FILTERING \u003d \u0027IP address substring filtering\u0027"},{"line_number":23,"context_line":"PORT_BINDING \u003d \u0027Port Binding\u0027"},{"line_number":24,"context_line":"PORT_BINDING_EXTENDED \u003d \u0027Port Bindings Extended\u0027"},{"line_number":25,"context_line":"DEFAULT_SECGROUP \u003d \u0027default\u0027"},{"line_number":26,"context_line":"BINDING_PROFILE \u003d \u0027binding:profile\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_82ae92e4","line":23,"in_reply_to":"9f560f44_5f0a9125","updated":"2020-09-07 17:06:57.000000000","message":"oh ya you are changing it to the slug form","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"}],"nova/tests/fixtures.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4b4b15b8e199994a50d8c12c1ce132fe186b6701","unresolved":false,"context_lines":[{"line_number":1736,"context_line":"                result.append(copy.deepcopy(resource))"},{"line_number":1737,"context_line":"        return result"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1740,"context_line":"        return {"},{"line_number":1741,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1742,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_cb5d8349","line":1739,"updated":"2020-09-03 18:05:32.000000000","message":"[1] Ah, so this is the extended version...","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00f7906884a6c9b12703b1ff71f3b43d19f4a001","unresolved":false,"context_lines":[{"line_number":1736,"context_line":"                result.append(copy.deepcopy(resource))"},{"line_number":1737,"context_line":"        return result"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1740,"context_line":"        return {"},{"line_number":1741,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1742,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a21bf270","line":1739,"in_reply_to":"9f560f44_cb5d8349","updated":"2020-09-04 11:12:24.000000000","message":"yes matt just aded this because that was what was needed for cross cell resize.\n\ni mentioned the non extened verion to him at the time but he prefered to just add it if it was needed later and i didnt really see the harm in that so i agreed.\n\nnow i want the non extended version so im overrideing this part of the fixture.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"}],"nova/tests/functional/regressions/test_bug_1888395.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4b4b15b8e199994a50d8c12c1ce132fe186b6701","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    and the legacy single port binding workflow is used."},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":39,"context_line":"        return {"},{"line_number":40,"context_line":"            \u0027extensions\u0027: ["},{"line_number":41,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ab580f57","line":38,"updated":"2020-09-03 18:05:32.000000000","message":"[2] and this is the non-extended version.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00f7906884a6c9b12703b1ff71f3b43d19f4a001","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    and the legacy single port binding workflow is used."},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":39,"context_line":"        return {"},{"line_number":40,"context_line":"            \u0027extensions\u0027: ["},{"line_number":41,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e2fdea08","line":38,"in_reply_to":"9f560f44_ab580f57","updated":"2020-09-04 11:12:24.000000000","message":"yes i just want to ensure the extended version is not present\ni could technically lave this empty but we do technically depend on it so i wanted to return it.\n\nnova just assumes this exist since it predates neutron it was added when it was called quantum","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4b4b15b8e199994a50d8c12c1ce132fe186b6701","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.useFixture(placement)"},{"line_number":58,"context_line":"        self.placement \u003d placement.api"},{"line_number":59,"context_line":"        self.neutron \u003d nova_fixtures.NeutronFixture(self)"},{"line_number":60,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":61,"context_line":"        self.useFixture(self.neutron)"},{"line_number":62,"context_line":"        fake_image.stub_out_image_service(self)"},{"line_number":63,"context_line":"        self.addCleanup(fake_image.FakeImageService_reset)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_5d1be21a","line":60,"updated":"2020-09-03 18:05:32.000000000","message":"You only need this line...","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4b4b15b8e199994a50d8c12c1ce132fe186b6701","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.api.microversion \u003d \u0027latest\u0027"},{"line_number":68,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":69,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":70,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":71,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":72,"context_line":"            fake_os_brick_connector))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.start_computes({"},{"line_number":75,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_9d157ae8","line":72,"range":{"start_line":70,"start_character":0,"end_line":72,"end_character":37},"updated":"2020-09-03 18:05:32.000000000","message":"... and this fixture. Everything else in here is provided by the parent setUp()s. Oh, and you need:\n\n    ADMIN_API \u003d True\n    microversion \u003d \u0027latest\u0027\n\nIn the class itself.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a942e51089e2e1609a827e49fdc4334f13b2b5dd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.api.microversion \u003d \u0027latest\u0027"},{"line_number":68,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":69,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":70,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":71,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":72,"context_line":"            fake_os_brick_connector))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.start_computes({"},{"line_number":75,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_62d9daf2","line":72,"range":{"start_line":70,"start_character":0,"end_line":72,"end_character":37},"in_reply_to":"9f560f44_421bf61a","updated":"2020-09-04 12:06:39.000000000","message":"well its not nessisary in that how its currently written work and is correct its just recreating the fixtures which does not need to be done. but what you provided is sufficent and i can remove code so i might as well.\n\ni was trying to not make this regression test libvirt specific so i was avoiding that base class intilly but this only affects the libvirt driver.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00f7906884a6c9b12703b1ff71f3b43d19f4a001","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.api.microversion \u003d \u0027latest\u0027"},{"line_number":68,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":69,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":70,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":71,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":72,"context_line":"            fake_os_brick_connector))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.start_computes({"},{"line_number":75,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a72dc4a9","line":72,"range":{"start_line":70,"start_character":0,"end_line":72,"end_character":37},"in_reply_to":"9f560f44_9d157ae8","updated":"2020-09-04 11:12:24.000000000","message":"i changed the base class after writing most of this\ni started using the fake dirver not the libvirt driver so all the other fixture needed to be provided \n\ni was originally using testbase and InstanceHelperMixin but not         libvirt_base.ServersTestBase,\n\n      self.api.microversion \u003d \u0027latest\u0027 sets the microverion for me the way im currently mocking \n\nand \n      self.api \u003d self.useFixture(nova_fixtures.OSAPIFixture(\n            api_version\u003d\u0027v2.1\u0027)).admin_api\n\nprovides the admin api\n\nbut you are right that i could remove the image service and notifier now that im useing\n\n libvirt_base.ServersTestBase","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f25348ad9095eb66b7ba484348f7e9f5b5a60f59","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.api.microversion \u003d \u0027latest\u0027"},{"line_number":68,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":69,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":70,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":71,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":72,"context_line":"            fake_os_brick_connector))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.start_computes({"},{"line_number":75,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_421bf61a","line":72,"range":{"start_line":70,"start_character":0,"end_line":72,"end_character":37},"in_reply_to":"9f560f44_a72dc4a9","updated":"2020-09-04 11:35:52.000000000","message":"I mean I tested it before writing my review :) What I said is both necessary and sufficient for your test, everything else can go.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ae84eecf803851763b12f6124a3c761e0541074","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            host\u003d\u0027start_host\u0027,"},{"line_number":87,"context_line":"            networks\u003d[{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # self.network_api.supports_port_binding_extension(ctxt)"},{"line_number":90,"context_line":"        n_api \u003d neutron.API()"},{"line_number":91,"context_line":"        self.assertFalse(n_api.supports_port_binding_extension(self.ctxt))"},{"line_number":92,"context_line":"        self.api.post_server_action("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e967aae9","line":89,"updated":"2020-09-03 07:33:50.000000000","message":"you can drop this","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1a1f16dc2d49337c1407c52ea9f8a4f5edba1ce7","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            host\u003d\u0027start_host\u0027,"},{"line_number":87,"context_line":"            networks\u003d[{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # self.network_api.supports_port_binding_extension(ctxt)"},{"line_number":90,"context_line":"        n_api \u003d neutron.API()"},{"line_number":91,"context_line":"        self.assertFalse(n_api.supports_port_binding_extension(self.ctxt))"},{"line_number":92,"context_line":"        self.api.post_server_action("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8444101b","line":89,"in_reply_to":"9f560f44_e967aae9","updated":"2020-09-03 12:36:37.000000000","message":"oh i taught i had. if im asked to respin this or the followup patch ill remove it.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1a1f16dc2d49337c1407c52ea9f8a4f5edba1ce7","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # self.network_api.supports_port_binding_extension(ctxt)"},{"line_number":90,"context_line":"        n_api \u003d neutron.API()"},{"line_number":91,"context_line":"        self.assertFalse(n_api.supports_port_binding_extension(self.ctxt))"},{"line_number":92,"context_line":"        self.api.post_server_action("},{"line_number":93,"context_line":"            server[\u0027id\u0027],"},{"line_number":94,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_c41568e7","line":91,"range":{"start_line":91,"start_character":7,"end_line":91,"end_character":74},"updated":"2020-09-03 12:36:37.000000000","message":"the comment was to help figure out how to write this\nmainly what arges it needed which turned out to just be the context.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a942e51089e2e1609a827e49fdc4334f13b2b5dd","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # FIXME(sean-k-mooney): this should succeed but because of bug #188395"},{"line_number":103,"context_line":"        # it will fail."},{"line_number":104,"context_line":"        # self._wait_for_server_parameter("},{"line_number":105,"context_line":"        #     server, {\u0027OS-EXT-SRV-ATTR:host\u0027: \u0027end_host\u0027, \u0027status\u0027: \u0027ACTIVE\u0027})"},{"line_number":106,"context_line":"        # because of the bug the migration will fail in pre_live_migrate so"},{"line_number":107,"context_line":"        # the vm should still be active on the start_host"},{"line_number":108,"context_line":"        self._wait_for_server_parameter("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a2fc923e","line":105,"range":{"start_line":104,"start_character":7,"end_line":105,"end_character":79},"updated":"2020-09-04 12:06:39.000000000","message":"its also why i originally wrote it this way.\n\nwith the fake driver live migration is supported\nwith the libvirt driver its not until stephen\u0027s series is merged.","commit_id":"e46976435827e788db8cddfc1e5a43f8f5ccbe12"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestLiveMigrationWithoutMultiplePortBindings("},{"line_number":27,"context_line":"        libvirt_base.ServersTestBase,"},{"line_number":28,"context_line":"        integrated_helpers.InstanceHelperMixin):"},{"line_number":29,"context_line":"    \"\"\"Regression test for bug 1888395."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3f699df7","line":27,"updated":"2020-09-07 16:46:26.000000000","message":"I\u0027m not overly fond of placing this in \u0027nova.tests.functional.regressions\u0027 instead of \u0027nova.tests.functional.libvirt\u0027. Any reason we couldn\u0027t use the latter?","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestLiveMigrationWithoutMultiplePortBindings("},{"line_number":27,"context_line":"        libvirt_base.ServersTestBase,"},{"line_number":28,"context_line":"        integrated_helpers.InstanceHelperMixin):"},{"line_number":29,"context_line":"    \"\"\"Regression test for bug 1888395."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_e2882e72","line":27,"in_reply_to":"9f560f44_3f699df7","updated":"2020-09-07 17:06:57.000000000","message":"it could but this is a regression test.\ni want to specifically call this out based on the bug as its subtle. if i mix it into the other tests then people will be more tempted to update the logic if it fails then if its in a regression module.\n\ni did not want to use the libvirt base test originally but this only happens with libvirt unfortunately i was originally using the fake dirver instead of libvirt until i figured that out.","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7521fc32a945cd7b7e2edede6a969ba027a19acf","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestLiveMigrationWithoutMultiplePortBindings("},{"line_number":27,"context_line":"        libvirt_base.ServersTestBase,"},{"line_number":28,"context_line":"        integrated_helpers.InstanceHelperMixin):"},{"line_number":29,"context_line":"    \"\"\"Regression test for bug 1888395."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    This regression test asserts that Live migration works when"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_a25c7619","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":46},"updated":"2020-09-07 16:55:43.000000000","message":"This is unnecessary. \u0027_IntegratedTestBase\u0027, which is the base of \u0027ServersTestBase\u0027, already uses this.","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestLiveMigrationWithoutMultiplePortBindings("},{"line_number":27,"context_line":"        libvirt_base.ServersTestBase,"},{"line_number":28,"context_line":"        integrated_helpers.InstanceHelperMixin):"},{"line_number":29,"context_line":"    \"\"\"Regression test for bug 1888395."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    This regression test asserts that Live migration works when"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_8297b290","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":46},"in_reply_to":"9f560f44_a25c7619","updated":"2020-09-07 17:06:57.000000000","message":"any right again i was not using ServersTestBase initally so this was previously needed","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Regression test for bug 1888395."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    This regression test asserts that Live migration works when"},{"line_number":32,"context_line":"    neutron does not support the binding-extended api extension"},{"line_number":33,"context_line":"    and the legacy single port binding workflow is used."},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_1f15b949","line":32,"range":{"start_line":32,"start_character":50,"end_line":32,"end_character":53},"updated":"2020-09-07 16:46:26.000000000","message":"API","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    and the legacy single port binding workflow is used."},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    ADMIN_API \u003d True"},{"line_number":37,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def list_extensions(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_df1ea16e","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":20},"updated":"2020-09-07 16:46:26.000000000","message":"Maybe add a note that this is necessary because you\u0027re live migrating, which is an admin-only operation?","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    and the legacy single port binding workflow is used."},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    ADMIN_API \u003d True"},{"line_number":37,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def list_extensions(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_c28d2a7d","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":20},"in_reply_to":"9f560f44_df1ea16e","updated":"2020-09-07 17:06:57.000000000","message":"ya i can","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def setUp(self):"},{"line_number":55,"context_line":"        super().setUp()"},{"line_number":56,"context_line":"        # Start standard fixtures."},{"line_number":57,"context_line":"        placement \u003d func_fixtures.PlacementFixture()"},{"line_number":58,"context_line":"        self.useFixture(placement)"},{"line_number":59,"context_line":"        self.placement \u003d placement.api"},{"line_number":60,"context_line":"        self.neutron \u003d nova_fixtures.NeutronFixture(self)"},{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_9f79c9c6","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":38},"updated":"2020-09-07 16:46:26.000000000","message":"This is already configured via \u0027_IntegratedTestBase\u0027, which \u0027ServersTestBase\u0027 inherits from","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def setUp(self):"},{"line_number":55,"context_line":"        super().setUp()"},{"line_number":56,"context_line":"        # Start standard fixtures."},{"line_number":57,"context_line":"        placement \u003d func_fixtures.PlacementFixture()"},{"line_number":58,"context_line":"        self.useFixture(placement)"},{"line_number":59,"context_line":"        self.placement \u003d placement.api"},{"line_number":60,"context_line":"        self.neutron \u003d nova_fixtures.NeutronFixture(self)"},{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_62d9be81","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":38},"in_reply_to":"9f560f44_9f79c9c6","updated":"2020-09-07 17:06:57.000000000","message":"ya this is from before i start using ServerTestBase","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        placement \u003d func_fixtures.PlacementFixture()"},{"line_number":58,"context_line":"        self.useFixture(placement)"},{"line_number":59,"context_line":"        self.placement \u003d placement.api"},{"line_number":60,"context_line":"        self.neutron \u003d nova_fixtures.NeutronFixture(self)"},{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"},{"line_number":63,"context_line":"        self.neutron_api \u003d neutron.API()"},{"line_number":64,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3f423d69","line":62,"range":{"start_line":60,"start_character":0,"end_line":62,"end_character":37},"updated":"2020-09-07 16:46:26.000000000","message":"As is this","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        placement \u003d func_fixtures.PlacementFixture()"},{"line_number":58,"context_line":"        self.useFixture(placement)"},{"line_number":59,"context_line":"        self.placement \u003d placement.api"},{"line_number":60,"context_line":"        self.neutron \u003d nova_fixtures.NeutronFixture(self)"},{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"},{"line_number":63,"context_line":"        self.neutron_api \u003d neutron.API()"},{"line_number":64,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_02e9e218","line":62,"range":{"start_line":60,"start_character":0,"end_line":62,"end_character":37},"in_reply_to":"9f560f44_3f423d69","updated":"2020-09-07 17:06:57.000000000","message":"this i need to do.\ni am changing how the fixture works","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"},{"line_number":63,"context_line":"        self.neutron_api \u003d neutron.API()"},{"line_number":64,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_bf55ad20","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":37},"updated":"2020-09-07 16:46:26.000000000","message":"This is clearly necessary for live-migration since it\u0027s used in \u0027test_numa_live_migration.py\u0027 too, and it probably makes sense in the base class. Could you either move it or add a TODO?","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e0bc0dd82aead2f3ade090aa28d1b6f89f35ce67","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"},{"line_number":63,"context_line":"        self.neutron_api \u003d neutron.API()"},{"line_number":64,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_0dac739d","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":37},"in_reply_to":"9f560f44_0da63310","updated":"2020-09-07 19:17:25.000000000","message":"ah lee has one ok ill just add a todo and drop this later.","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"7996375fc9fa44c9099dea0e95dde9a69b77576b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"},{"line_number":63,"context_line":"        self.neutron_api \u003d neutron.API()"},{"line_number":64,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_0da63310","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":37},"in_reply_to":"9f560f44_a2df5664","updated":"2020-09-07 18:37:48.000000000","message":"I275509eb0e0eb9eaf26fe607b7d9a67e1edc71f8","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.neutron.list_extensions \u003d self.list_extensions"},{"line_number":62,"context_line":"        self.useFixture(self.neutron)"},{"line_number":63,"context_line":"        self.neutron_api \u003d neutron.API()"},{"line_number":64,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_a2df5664","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":37},"in_reply_to":"9f560f44_bf55ad20","updated":"2020-09-07 17:06:57.000000000","message":"ill add a todo i assume you also have this in your seriese if not i will move it in a follow up that updates the test to use your live migration code.","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("},{"line_number":70,"context_line":"                cpu_nodes\u003d1, cpu_sockets\u003d1, cpu_cores\u003d4, cpu_threads\u003d2,"},{"line_number":71,"context_line":"                kB_mem\u003d10740000),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_df3501f9","line":68,"updated":"2020-09-07 16:46:26.000000000","message":"As an aside, I want to get rid of this. Can\u0027t recall the patch I have to do so though","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e79214ba3460afb784420214986435f0890c80b5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("},{"line_number":70,"context_line":"                cpu_nodes\u003d1, cpu_sockets\u003d1, cpu_cores\u003d4, cpu_threads\u003d2,"},{"line_number":71,"context_line":"                kB_mem\u003d10740000),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_627ff9de","line":68,"in_reply_to":"9f560f44_42c8faa6","updated":"2020-09-08 07:43:07.000000000","message":"Yeah, I\u0027m specifically dropping the plural \u0027start_computes\u0027 helper in favour of a more powerful \u0027start_compute\u0027, mainly because I\u0027d like to be able to modify more than the HostInfo (think: PCIInfo) when I create the fake host.","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0cdc261e4784216c2afe338d2fd1b4f3e0fd4971","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("},{"line_number":70,"context_line":"                cpu_nodes\u003d1, cpu_sockets\u003d1, cpu_cores\u003d4, cpu_threads\u003d2,"},{"line_number":71,"context_line":"                kB_mem\u003d10740000),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_63d1b6cc","line":68,"in_reply_to":"9f560f44_627ff9de","updated":"2020-09-08 14:00:51.000000000","message":"ok ya that works to i guess good to know","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            \u0027nova.virt.libvirt.driver.connector\u0027,"},{"line_number":66,"context_line":"            fake_os_brick_connector))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self.start_computes({"},{"line_number":69,"context_line":"            \u0027start_host\u0027: fakelibvirt.HostInfo("},{"line_number":70,"context_line":"                cpu_nodes\u003d1, cpu_sockets\u003d1, cpu_cores\u003d4, cpu_threads\u003d2,"},{"line_number":71,"context_line":"                kB_mem\u003d10740000),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_42c8faa6","line":68,"in_reply_to":"9f560f44_df3501f9","updated":"2020-09-07 17:06:57.000000000","message":"why?\n\nif we remove it we need to be able to do it wiht the same flexibility via something else.","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7521fc32a945cd7b7e2edede6a969ba027a19acf","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_live_migrate_fails(self):"},{"line_number":79,"context_line":"        server \u003d self._create_server("},{"line_number":80,"context_line":"            host\u003d\u0027start_host\u0027,"},{"line_number":81,"context_line":"            networks\u003d[{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_c25fea0c","line":78,"range":{"start_line":78,"start_character":25,"end_line":78,"end_character":32},"updated":"2020-09-07 16:55:43.000000000","message":"nit: Can you drop this suffix. It\u0027s odd as the test is supposed to be doing something as is only failing because of a bug, a fact that is already highlighted by your FIXME","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_live_migrate_fails(self):"},{"line_number":79,"context_line":"        server \u003d self._create_server("},{"line_number":80,"context_line":"            host\u003d\u0027start_host\u0027,"},{"line_number":81,"context_line":"            networks\u003d[{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_c2bb6a0c","line":78,"range":{"start_line":78,"start_character":25,"end_line":78,"end_character":32},"in_reply_to":"9f560f44_c25fea0c","updated":"2020-09-07 17:06:57.000000000","message":"i rename it in the next patch anyway but ok ill just use the final name","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16336a35cf8cd09e857029caa57a56ce2c3c2ab5","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.assertFalse("},{"line_number":84,"context_line":"            self.neutron_api.supports_port_binding_extension(self.ctxt))"},{"line_number":85,"context_line":"        self.api.post_server_action("},{"line_number":86,"context_line":"            server[\u0027id\u0027],"},{"line_number":87,"context_line":"            {"},{"line_number":88,"context_line":"                \u0027os-migrateLive\u0027: {"},{"line_number":89,"context_line":"                    \u0027host\u0027: \u0027end_host\u0027,"},{"line_number":90,"context_line":"                    \u0027block_migration\u0027: \u0027auto\u0027"},{"line_number":91,"context_line":"                }"},{"line_number":92,"context_line":"            }"},{"line_number":93,"context_line":"        )"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # FIXME(sean-k-mooney): this should succeed but because of bug #188395"},{"line_number":96,"context_line":"        # it will fail."}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_ff19e587","line":93,"range":{"start_line":85,"start_character":0,"end_line":93,"end_character":9},"updated":"2020-09-07 16:46:26.000000000","message":"Maybe add a TODO to allow live migrating to a specific host via the \u0027_live_migrate(_server)\u0027 helper?","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70d7b89b75126fbf6e8ac0dddcfcd0d73b676458","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.assertFalse("},{"line_number":84,"context_line":"            self.neutron_api.supports_port_binding_extension(self.ctxt))"},{"line_number":85,"context_line":"        self.api.post_server_action("},{"line_number":86,"context_line":"            server[\u0027id\u0027],"},{"line_number":87,"context_line":"            {"},{"line_number":88,"context_line":"                \u0027os-migrateLive\u0027: {"},{"line_number":89,"context_line":"                    \u0027host\u0027: \u0027end_host\u0027,"},{"line_number":90,"context_line":"                    \u0027block_migration\u0027: \u0027auto\u0027"},{"line_number":91,"context_line":"                }"},{"line_number":92,"context_line":"            }"},{"line_number":93,"context_line":"        )"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # FIXME(sean-k-mooney): this should succeed but because of bug #188395"},{"line_number":96,"context_line":"        # it will fail."}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_e23b0e99","line":93,"range":{"start_line":85,"start_character":0,"end_line":93,"end_character":9},"in_reply_to":"9f560f44_ff19e587","updated":"2020-09-07 17:06:57.000000000","message":"ok i can add that and update the helper in the follow up for moving the os brick fixture","commit_id":"84e93e7d75104d150d8ffe9acea859e1f3af7f48"}]}
