)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c14f1e3418f85accbbc196b0dc6951c64bb07652","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fill destination check data with VNC/SPICE listen addresses"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We move were we populate the data around the listen addresses, so in a"},{"line_number":10,"context_line":"future release we can move the check into"},{"line_number":11,"context_line":"check_can_live_migrate_source"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa6399be_03037b77","line":9,"range":{"start_line":9,"start_character":8,"end_line":9,"end_character":12},"updated":"2016-10-18 03:29:08.000000000","message":"s/were/where/","commit_id":"3ec1eca4ef1f4e3b23cf88ce9c3b845933a128ee"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8e826bf142161d7b5f32410d56ed2506cceea4cb","unresolved":false,"context_lines":[{"line_number":6790,"context_line":"                \"target_connect_addr\": None,"},{"line_number":6791,"context_line":"                \"serial_listen_addr\":"},{"line_number":6792,"context_line":"                    CONF.serial_console.proxyclient_address}},"},{"line_number":6793,"context_line":"            return_value.to_legacy_dict(pre_migration_result\u003dTrue))"},{"line_number":6794,"context_line":""},{"line_number":6795,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":6796,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_6fcce861","line":6793,"range":{"start_line":6793,"start_character":25,"end_line":6793,"end_character":38},"updated":"2016-09-01 06:20:58.000000000","message":"Legacy stuff shouldn\u0027t be used in new code. Instead you can use self.assertEqual and self.assertIsNone to check whether values are correct","commit_id":"dbc455df70a60b72690e4163218d26adfa224513"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9dce88a8500b9f7e1434b7918eecaafb69017e12","unresolved":false,"context_lines":[{"line_number":6790,"context_line":"                \"target_connect_addr\": None,"},{"line_number":6791,"context_line":"                \"serial_listen_addr\":"},{"line_number":6792,"context_line":"                    CONF.serial_console.proxyclient_address}},"},{"line_number":6793,"context_line":"            return_value.to_legacy_dict(pre_migration_result\u003dTrue))"},{"line_number":6794,"context_line":""},{"line_number":6795,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":6796,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_e3600fa7","line":6793,"in_reply_to":"fa7ab95a_6fcce861","updated":"2016-09-01 07:53:30.000000000","message":"I agree","commit_id":"dbc455df70a60b72690e4163218d26adfa224513"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"99b3d701724104fd78f34d5a51db1b7f047a5a34","unresolved":false,"context_lines":[{"line_number":6766,"context_line":"                         \"is_volume_backed\": False},"},{"line_number":6767,"context_line":"                        matchers.DictMatches(return_value.to_legacy_dict()))"},{"line_number":6768,"context_line":""},{"line_number":6769,"context_line":"    @mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027)"},{"line_number":6770,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":6771,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"},{"line_number":6772,"context_line":"                       return_value\u003d\u0027fake\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_f82fc79e","line":6769,"updated":"2016-09-01 13:51:26.000000000","message":"Copied from similar tests after realizing that this test was producing the following warning: \"This test uses methods that set internal oslo_db state\".","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"99b3d701724104fd78f34d5a51db1b7f047a5a34","unresolved":false,"context_lines":[{"line_number":6773,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027compareCPU\u0027)"},{"line_number":6774,"context_line":"    def test_check_can_live_migrate_dest_fills_listen_addrs("},{"line_number":6775,"context_line":"            self, mock_cpu, mock_test_file, mock_svc):"},{"line_number":6776,"context_line":"        # Tests that check_can_live_migrate_destination returns the listen"},{"line_number":6777,"context_line":"        # addresses required by check_can_live_migrate_source."},{"line_number":6778,"context_line":"        CONF.vnc.vncserver_listen \u003d \u0027192.0.2.12\u0027"},{"line_number":6779,"context_line":"        CONF.spice.server_listen \u003d \u0027198.51.100.34\u0027"},{"line_number":6780,"context_line":"        CONF.serial_console.proxyclient_address \u003d \u0027203.0.113.56\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_9815db4a","line":6777,"range":{"start_line":6776,"start_character":0,"end_line":6777,"end_character":62},"updated":"2016-09-01 13:51:26.000000000","message":"Added some docs on the purpose of the test.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1040de5cdbb672cbac6070f18eed9abf027c6eda","unresolved":false,"context_lines":[{"line_number":6775,"context_line":"            self, mock_cpu, mock_test_file, mock_svc):"},{"line_number":6776,"context_line":"        # Tests that check_can_live_migrate_destination returns the listen"},{"line_number":6777,"context_line":"        # addresses required by check_can_live_migrate_source."},{"line_number":6778,"context_line":"        CONF.vnc.vncserver_listen \u003d \u0027192.0.2.12\u0027"},{"line_number":6779,"context_line":"        CONF.spice.server_listen \u003d \u0027198.51.100.34\u0027"},{"line_number":6780,"context_line":"        CONF.serial_console.proxyclient_address \u003d \u0027203.0.113.56\u0027"},{"line_number":6781,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_9d4edbbf","line":6778,"range":{"start_line":6778,"start_character":8,"end_line":6778,"end_character":33},"updated":"2016-09-09 20:54:01.000000000","message":"You shouldn\u0027t override config like this in a test, instead you should use:\n\nself.flags(vncserver_listen\u003d\u0027192.0.2.12\u0027, group\u003d\u0027vnc\u0027)\n\n-1 for this.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"69d2f9876091ed566de391c18f044eb31de364a4","unresolved":false,"context_lines":[{"line_number":6786,"context_line":"        result \u003d drvr.check_can_live_migrate_destination("},{"line_number":6787,"context_line":"            self.context, instance_ref, compute_info, compute_info)"},{"line_number":6788,"context_line":""},{"line_number":6789,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_vnc),"},{"line_number":6790,"context_line":"                         CONF.vnc.vncserver_listen)"},{"line_number":6791,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_spice),"},{"line_number":6792,"context_line":"                         CONF.spice.server_listen)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_3374f09a","line":6789,"range":{"start_line":6789,"start_character":25,"end_line":6789,"end_character":28},"updated":"2016-09-01 13:55:02.000000000","message":"I think it should be result.graphics_listen_addr_vnc.to_primitive() instead, but it\u0027s not a big deal","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1040de5cdbb672cbac6070f18eed9abf027c6eda","unresolved":false,"context_lines":[{"line_number":6786,"context_line":"        result \u003d drvr.check_can_live_migrate_destination("},{"line_number":6787,"context_line":"            self.context, instance_ref, compute_info, compute_info)"},{"line_number":6788,"context_line":""},{"line_number":6789,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_vnc),"},{"line_number":6790,"context_line":"                         CONF.vnc.vncserver_listen)"},{"line_number":6791,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_spice),"},{"line_number":6792,"context_line":"                         CONF.spice.server_listen)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_bd447fb7","line":6789,"range":{"start_line":6789,"start_character":25,"end_line":6789,"end_character":28},"in_reply_to":"fa7ab95a_1930ede7","updated":"2016-09-09 20:54:01.000000000","message":"It\u0027s stringified because the object field is an IPAddress and those don\u0027t come out the same way as strings, so str(IPAddress) is a pretty common thing with those types of fields throughout the code.\n\nAdditional nit, the args to assertEqual are (expected, observed) which doesn\u0027t matter for the equality check but does matter for the error message that\u0027s dumped if this fails, so the args passed here are backwards and it would be good to fix that.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"f3b4a2afae14312ec4d36c2247cfb522ac10e143","unresolved":false,"context_lines":[{"line_number":6786,"context_line":"        result \u003d drvr.check_can_live_migrate_destination("},{"line_number":6787,"context_line":"            self.context, instance_ref, compute_info, compute_info)"},{"line_number":6788,"context_line":""},{"line_number":6789,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_vnc),"},{"line_number":6790,"context_line":"                         CONF.vnc.vncserver_listen)"},{"line_number":6791,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_spice),"},{"line_number":6792,"context_line":"                         CONF.spice.server_listen)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_1930ede7","line":6789,"range":{"start_line":6789,"start_character":25,"end_line":6789,"end_character":28},"in_reply_to":"fa7ab95a_3374f09a","updated":"2016-09-01 14:14:28.000000000","message":"Indeed it would be more elegant to use a specific conversion method, but I tried to follow the same style of the existing code base. Here it is converted using str(): https://github.com/openstack/nova/blob/4f33047d07f5a11b208c344fe206aba01cd8e6fe/nova/virt/libvirt/migration.py#L36-L55","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1040de5cdbb672cbac6070f18eed9abf027c6eda","unresolved":false,"context_lines":[{"line_number":6787,"context_line":"            self.context, instance_ref, compute_info, compute_info)"},{"line_number":6788,"context_line":""},{"line_number":6789,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_vnc),"},{"line_number":6790,"context_line":"                         CONF.vnc.vncserver_listen)"},{"line_number":6791,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_spice),"},{"line_number":6792,"context_line":"                         CONF.spice.server_listen)"},{"line_number":6793,"context_line":"        self.assertEqual(str(result.serial_listen_addr),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_fdf0c768","line":6790,"range":{"start_line":6790,"start_character":25,"end_line":6790,"end_character":50},"updated":"2016-09-09 20:54:01.000000000","message":"Personally I\u0027d use the hard-coded values in this test rather than what\u0027s in the config.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"99b3d701724104fd78f34d5a51db1b7f047a5a34","unresolved":false,"context_lines":[{"line_number":6786,"context_line":"        result \u003d drvr.check_can_live_migrate_destination("},{"line_number":6787,"context_line":"            self.context, instance_ref, compute_info, compute_info)"},{"line_number":6788,"context_line":""},{"line_number":6789,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_vnc),"},{"line_number":6790,"context_line":"                         CONF.vnc.vncserver_listen)"},{"line_number":6791,"context_line":"        self.assertEqual(str(result.graphics_listen_addr_spice),"},{"line_number":6792,"context_line":"                         CONF.spice.server_listen)"},{"line_number":6793,"context_line":"        self.assertEqual(str(result.serial_listen_addr),"},{"line_number":6794,"context_line":"                         CONF.serial_console.proxyclient_address)"},{"line_number":6795,"context_line":""},{"line_number":6796,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":6797,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_7309182c","line":6794,"range":{"start_line":6789,"start_character":0,"end_line":6794,"end_character":65},"updated":"2016-09-01 13:51:26.000000000","message":"Changed comparison not to use legacy dict methods.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"99b3d701724104fd78f34d5a51db1b7f047a5a34","unresolved":false,"context_lines":[{"line_number":9358,"context_line":"            instance_relative_path\u003d\u0027foo\u0027,"},{"line_number":9359,"context_line":"            is_shared_block_storage\u003dFalse,"},{"line_number":9360,"context_line":"            is_shared_instance_path\u003dFalse,"},{"line_number":9361,"context_line":"            graphics_listen_addr_vnc\u003d\u0027127.0.0.1\u0027,"},{"line_number":9362,"context_line":"            graphics_listen_addr_spice\u003d\u0027127.0.0.1\u0027,"},{"line_number":9363,"context_line":"            serial_listen_addr\u003d\u0027127.0.0.1\u0027,"},{"line_number":9364,"context_line":"        )"},{"line_number":9365,"context_line":"        result \u003d drvr.pre_live_migration("},{"line_number":9366,"context_line":"            c, instance, vol, nw_info, None,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_d3d82482","line":9363,"range":{"start_line":9361,"start_character":0,"end_line":9363,"end_character":43},"updated":"2016-09-01 13:51:26.000000000","message":"As this test appears be centered around the \"general workings\" of the pre_live_migration method, we check here if the listen addresses (which in a real situation or in a integration test would be returned by a previous call to check_can_live_migrate_destination) are preserved after pre_live_migration is called.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"99b3d701724104fd78f34d5a51db1b7f047a5a34","unresolved":false,"context_lines":[{"line_number":9444,"context_line":"                {\u0027connection_info\u0027: \u0027dummy\u0027, \u0027mount_device\u0027: \u0027/dev/sdb\u0027}"},{"line_number":9445,"context_line":"            ]}"},{"line_number":9446,"context_line":"        )"},{"line_number":9447,"context_line":"        self.assertEqual({\u0027graphics_listen_addrs\u0027: {\u0027spice\u0027: None,"},{"line_number":9448,"context_line":"                                                    \u0027vnc\u0027: None},"},{"line_number":9449,"context_line":"                          \u0027target_connect_addr\u0027: None,"},{"line_number":9450,"context_line":"                          \u0027serial_listen_addr\u0027: None,"},{"line_number":9451,"context_line":"                          \u0027volume\u0027: {}}, res_data[\u0027pre_live_migration_result\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_93f69cf7","line":9448,"range":{"start_line":9447,"start_character":0,"end_line":9448,"end_character":65},"updated":"2016-09-01 13:51:26.000000000","message":"This appears to be a more specific test, so we don\u0027t care about checking again if the listen addresses are preserved.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"},{"author":{"_account_id":21902,"name":"Paulo Matias","email":"matias@ufscar.br","username":"matias"},"change_message_id":"99b3d701724104fd78f34d5a51db1b7f047a5a34","unresolved":false,"context_lines":[{"line_number":9504,"context_line":"            ret \u003d drvr.pre_live_migration(c, inst_ref, vol, nw_info, None,"},{"line_number":9505,"context_line":"                                          migrate_data)"},{"line_number":9506,"context_line":"            target_ret \u003d {"},{"line_number":9507,"context_line":"            \u0027graphics_listen_addrs\u0027: {\u0027spice\u0027: None,"},{"line_number":9508,"context_line":"                                      \u0027vnc\u0027: None},"},{"line_number":9509,"context_line":"            \u0027target_connect_addr\u0027: None,"},{"line_number":9510,"context_line":"            \u0027serial_listen_addr\u0027: None,"},{"line_number":9511,"context_line":"            \u0027volume\u0027: {"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_73f3d80a","line":9508,"range":{"start_line":9507,"start_character":0,"end_line":9508,"end_character":51},"updated":"2016-09-01 13:51:26.000000000","message":"The same.","commit_id":"12699c27511a89c3878e9fd3d445422c4ce67761"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"790eff25c6184c7bc1afac037c74b8e01c347708","unresolved":false,"context_lines":[{"line_number":6493,"context_line":"            migrate_data \u003d objects.LibvirtLiveMigrateData(bdms\u003d[])"},{"line_number":6494,"context_line":"        else:"},{"line_number":6495,"context_line":"            migrate_data.bdms \u003d []"},{"line_number":6496,"context_line":"        migrate_data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":6497,"context_line":"        migrate_data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":6498,"context_line":"        migrate_data.serial_listen_addr \u003d \\"},{"line_number":6499,"context_line":"            CONF.serial_console.proxyclient_address"},{"line_number":6500,"context_line":"        # Store live_migration_inbound_addr"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_1b0889d9","line":6497,"range":{"start_line":6496,"start_character":8,"end_line":6497,"end_character":74},"updated":"2016-08-30 11:22:58.000000000","message":"Remove those lines, we don\u0027t need to repopulate with the same data","commit_id":"e891c54284ca6522a852b3457dd99d7f312a30cd"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"790eff25c6184c7bc1afac037c74b8e01c347708","unresolved":false,"context_lines":[{"line_number":6495,"context_line":"            migrate_data.bdms \u003d []"},{"line_number":6496,"context_line":"        migrate_data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":6497,"context_line":"        migrate_data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":6498,"context_line":"        migrate_data.serial_listen_addr \u003d \\"},{"line_number":6499,"context_line":"            CONF.serial_console.proxyclient_address"},{"line_number":6500,"context_line":"        # Store live_migration_inbound_addr"},{"line_number":6501,"context_line":"        migrate_data.target_connect_addr \u003d \\"},{"line_number":6502,"context_line":"            CONF.libvirt.live_migration_inbound_addr"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_7b119503","line":6499,"range":{"start_line":6498,"start_character":8,"end_line":6499,"end_character":51},"updated":"2016-08-30 11:22:58.000000000","message":"This should also be moved","commit_id":"e891c54284ca6522a852b3457dd99d7f312a30cd"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"efd3377a7c5849b35fb6fdcbb3ac5b95e94b03ab","unresolved":false,"context_lines":[{"line_number":5415,"context_line":"        listen_addrs \u003d libvirt_migrate.graphics_listen_addrs("},{"line_number":5416,"context_line":"            dest_check_data)"},{"line_number":5417,"context_line":"        migratable_flag \u003d self._host.is_migratable_xml_flag()"},{"line_number":5418,"context_line":"        if not migratable_flag or not listen_addrs:"},{"line_number":5419,"context_line":"            # In this context want to ensure we do not have to migrate"},{"line_number":5420,"context_line":"            # graphic or serial consoles since we can\u0027t update guest\u0027s"},{"line_number":5421,"context_line":"            # domain XML to make it handle destination host."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_9f5a2a82","line":5418,"updated":"2016-09-12 08:56:37.000000000","message":"We are still broken there when live migrating from Newton to Mitaka. So the point is that the data required to do the check is populated on destination node. When live migrating from Newton to Mitaka it will populate the data in pre_live_migration, but the check will happen earlier, in check_can_live_migrate_source.\n\nSo I think that we need to move this check back to pre_live_migration, so that in Newton release graphics data will be populated earlier, in check_can_live_migrate_destination, but the check will still be in pre_live_migration step. Then in Ocata cycle we will be able to move this check to check_can_live_migrate_source because the data will be populated already in check_can_live_migrate_destination.\n\nURL to change that introduced this regression - https://review.openstack.org/#/c/254709\n\nThoughts?","commit_id":"2de18f2065ecc9dbd7d73ca732e94d7e7668f532"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"85aed395c84696851cba233cba0b3f707ca2d7b7","unresolved":false,"context_lines":[{"line_number":5415,"context_line":"        listen_addrs \u003d libvirt_migrate.graphics_listen_addrs("},{"line_number":5416,"context_line":"            dest_check_data)"},{"line_number":5417,"context_line":"        migratable_flag \u003d self._host.is_migratable_xml_flag()"},{"line_number":5418,"context_line":"        if not migratable_flag or not listen_addrs:"},{"line_number":5419,"context_line":"            # In this context want to ensure we do not have to migrate"},{"line_number":5420,"context_line":"            # graphic or serial consoles since we can\u0027t update guest\u0027s"},{"line_number":5421,"context_line":"            # domain XML to make it handle destination host."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_0bf3379f","line":5418,"in_reply_to":"9a89bdaa_61606936","updated":"2016-09-12 11:16:26.000000000","message":"I went one step too far, this is broken only in case of live migration from Newton to Mitaka. The check is part of live_migration_operation in old code so in case of Mitaka-\u003eNewton validation will happen just before live migration execution.","commit_id":"2de18f2065ecc9dbd7d73ca732e94d7e7668f532"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"bcdce3bf7a9c3e8edb60f0930dee7e461f0f7cc8","unresolved":false,"context_lines":[{"line_number":5415,"context_line":"        listen_addrs \u003d libvirt_migrate.graphics_listen_addrs("},{"line_number":5416,"context_line":"            dest_check_data)"},{"line_number":5417,"context_line":"        migratable_flag \u003d self._host.is_migratable_xml_flag()"},{"line_number":5418,"context_line":"        if not migratable_flag or not listen_addrs:"},{"line_number":5419,"context_line":"            # In this context want to ensure we do not have to migrate"},{"line_number":5420,"context_line":"            # graphic or serial consoles since we can\u0027t update guest\u0027s"},{"line_number":5421,"context_line":"            # domain XML to make it handle destination host."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_61606936","line":5418,"in_reply_to":"9a89bdaa_9f5a2a82","updated":"2016-09-12 10:32:51.000000000","message":"What\u0027s more is that Mitaka to Newton is still broken too. Basically the check to validate graphics addresses will never happen. This is because the check before was executed on destination node, after the change it is executed on source node. When live migrating from Mitaka to Newton the check will be skipped. On Mitaka node the check is part of pre_live_migration, in this case Mitaka node is source node, pre_live_migration is executed on destination node. On Newton node the check is part of check_can_live_migrate_source, but in this case Newton node is destination node.","commit_id":"2de18f2065ecc9dbd7d73ca732e94d7e7668f532"}]}
