)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"86f2ab627d9106fd8d6c20248e443d32ebbd1c12","unresolved":false,"context_lines":[{"line_number":19,"context_line":"IP address is taken from nova.conf and even if set to None it will be"},{"line_number":20,"context_line":"passed as a string \u0027None\u0027 and will fail IPAddressField validation."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"graphics_listen_addrs in migration.py always returns a dict that"},{"line_number":23,"context_line":"contain IP addresses of both VNC and spice graphics consoles."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"This means that:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a629dbe_fb7e9e68","line":22,"updated":"2016-11-10 12:45:44.000000000","message":"I think we have added this check because previously it was possible to be in a situation where check_can_live_migrate_destination could be executed in a node running old-code which does not set the fields. In that case graphics_listen_address is going to return None","commit_id":"3ff52ed467055e133dff737134cf2f3edb37b364"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"eef10867792b746da8673e8f9da33602a842bb48","unresolved":false,"context_lines":[{"line_number":19,"context_line":"IP address is taken from nova.conf and even if set to None it will be"},{"line_number":20,"context_line":"passed as a string \u0027None\u0027 and will fail IPAddressField validation."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"graphics_listen_addrs in migration.py always returns a dict that"},{"line_number":23,"context_line":"contain IP addresses of both VNC and spice graphics consoles."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"This means that:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a629dbe_fbadbe9b","line":22,"in_reply_to":"9a629dbe_fb7e9e68","updated":"2016-11-10 12:50:19.000000000","message":"So this was there for backward compatibility purposes when live migrating from kilo to liberty, I think. Currently we always have all this data in place. It might not be there only when live migrating, e.g., from Kilo to Newton, which is not supported anyway","commit_id":"3ff52ed467055e133dff737134cf2f3edb37b364"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3b6fddf5bf7fe7975bb4e06dbf5534919e972863","unresolved":false,"context_lines":[{"line_number":19,"context_line":"IP address is taken from nova.conf and even if set to None it will be"},{"line_number":20,"context_line":"passed as a string \u0027None\u0027 and will fail IPAddressField validation."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"graphics_listen_addrs in migration.py always returns a dict that"},{"line_number":23,"context_line":"contain IP addresses of both VNC and spice graphics consoles."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"This means that:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a629dbe_5618411e","line":22,"in_reply_to":"9a629dbe_fbadbe9b","updated":"2016-11-10 13:06:37.000000000","message":"Yes it\u0027s true you wanted to add some clarifications","commit_id":"3ff52ed467055e133dff737134cf2f3edb37b364"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7d9dafb53e7dd99ee60fdfb61691040cd706468a","unresolved":false,"context_lines":[{"line_number":7972,"context_line":"            target_connect_addr\u003dNone,"},{"line_number":7973,"context_line":"            bdms\u003d[],"},{"line_number":7974,"context_line":"            block_migration\u003dFalse)"},{"line_number":7975,"context_line":"        self.mox.ReplayAll()"},{"line_number":7976,"context_line":"        self.assertRaises(exception.MigrationError,"},{"line_number":7977,"context_line":"                          drvr._live_migration_operation,"},{"line_number":7978,"context_line":"                          self.context, instance_ref, \u0027dest\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_fc252fc2","line":7975,"updated":"2016-11-15 17:33:58.000000000","message":"You can remove this line since mox isn\u0027t being used any more in the method.","commit_id":"b7da3cd180447a2e845501587f7345b8088b1f01"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"ec350e1c59300d36083717834c15f66eb683d3eb","unresolved":false,"context_lines":[{"line_number":7972,"context_line":"            target_connect_addr\u003dNone,"},{"line_number":7973,"context_line":"            bdms\u003d[],"},{"line_number":7974,"context_line":"            block_migration\u003dFalse)"},{"line_number":7975,"context_line":"        self.mox.ReplayAll()"},{"line_number":7976,"context_line":"        self.assertRaises(exception.MigrationError,"},{"line_number":7977,"context_line":"                          drvr._live_migration_operation,"},{"line_number":7978,"context_line":"                          self.context, instance_ref, \u0027dest\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_00397c41","line":7975,"in_reply_to":"7a77a97e_fc252fc2","updated":"2016-11-16 10:07:08.000000000","message":"Done","commit_id":"b7da3cd180447a2e845501587f7345b8088b1f01"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"7573c2b5a325a2711cd072c37ec174b3e64dfec3","unresolved":false,"context_lines":[{"line_number":7963,"context_line":"        # Preparing mocks"},{"line_number":7964,"context_line":"        vdmock \u003d self.mox.CreateMock(fakelibvirt.virDomain)"},{"line_number":7965,"context_line":"        guest \u003d libvirt_guest.Guest(vdmock)"},{"line_number":7966,"context_line":"        self.mox.StubOutWithMock(vdmock, \"migrateToURI\")"},{"line_number":7967,"context_line":"        _bandwidth \u003d CONF.libvirt.live_migration_bandwidth"},{"line_number":7968,"context_line":"        vdmock.migrateToURI(drvr._live_migration_uri(\u0027dest\u0027),"},{"line_number":7969,"context_line":"                            flags\u003dmox.IgnoreArg(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_ad64f521","side":"PARENT","line":7966,"updated":"2016-11-17 16:04:30.000000000","message":"whoop whoop! Less mox! :)","commit_id":"f8e35e5bf969d44fd0e127b01cb62f95ff760071"}],"nova/tests/unit/virt/test_virt_drivers.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"7573c2b5a325a2711cd072c37ec174b3e64dfec3","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        migration \u003d objects.Migration(context\u003dfake_context, id\u003d1)"},{"line_number":648,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData("},{"line_number":649,"context_line":"            migration\u003dmigration, bdms\u003d[], block_migration\u003dFalse,"},{"line_number":650,"context_line":"            serial_listen_addr\u003d\u0027127.0.0.1\u0027)"},{"line_number":651,"context_line":"        self.connection.live_migration(self.ctxt, instance_ref, \u0027otherhost\u0027,"},{"line_number":652,"context_line":"                                       lambda *a: None, lambda *a: None,"},{"line_number":653,"context_line":"                                       migrate_data\u003dmigrate_data)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_5ea2299a","line":650,"range":{"start_line":650,"start_character":12,"end_line":650,"end_character":42},"updated":"2016-11-17 16:04:30.000000000","message":"At first I was confused why this was necessary, but apparently the test instance which gets created has a serial device: https://github.com/openstack/nova/blob/50ad9d4c0355cac1d7a31d1b984a0bed2c21465f/nova/tests/unit/virt/libvirt/fakelibvirt.py#L813-L815 and without this line 650 we run into an error at https://github.com/openstack/nova/blob/4f33047d07f5a11b208c344fe206aba01cd8e6fe/nova/virt/libvirt/migration.py#L83-L86 because there \"listen_addr\" is None without having the change in line 650.\nSo theoretically, instead of line 650 here we could also have\n\n    def _update_serial_xml(xml_doc, migrate_data):\n        listen_addr \u003d serial_listen_addr(migrate_data)\n        if not listen_addr:\n            return xml_doc\n        # otherwise update the serial listen addr\n\nin the \"migration\" module.","commit_id":"f84ae10c66aeda223581b26c134b5c44c15d9e6e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5c174ba7a90220598acdb32b0713d4f87753c111","unresolved":false,"context_lines":[{"line_number":5912,"context_line":""},{"line_number":5913,"context_line":"            new_xml_str \u003d None"},{"line_number":5914,"context_line":"            params \u003d None"},{"line_number":5915,"context_line":"            if listen_addrs or migrate_data.bdms:"},{"line_number":5916,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":5917,"context_line":"                    # TODO(sahid): It\u0027s not a really well idea to pass"},{"line_number":5918,"context_line":"                    # the method _get_volume_config and we should to find"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_bb1ee66d","side":"PARENT","line":5915,"updated":"2016-11-10 13:05:57.000000000","message":"+1","commit_id":"327d81dcb8200b8a28ad4f2c0591d290f428ac38"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5c174ba7a90220598acdb32b0713d4f87753c111","unresolved":false,"context_lines":[{"line_number":5853,"context_line":""},{"line_number":5854,"context_line":"            serial_listen_addr \u003d libvirt_migrate.serial_listen_addr("},{"line_number":5855,"context_line":"                migrate_data)"},{"line_number":5856,"context_line":"            if not serial_listen_addr:"},{"line_number":5857,"context_line":"                self._verify_serial_console_is_disabled()"},{"line_number":5858,"context_line":""},{"line_number":5859,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_364aed26","line":5856,"updated":"2016-11-10 13:05:57.000000000","message":"Can you add a comment here to explain that, since we were not able to retrieve serial addr we consider that the estination host does not have serial console enable so we prefer to stop the process of live migrating the guest to this host if we currently have it enabled","commit_id":"3ff52ed467055e133dff737134cf2f3edb37b364"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"086b90142959e2c80e04a8e597abfcfc2d5fb7d4","unresolved":false,"context_lines":[{"line_number":5853,"context_line":""},{"line_number":5854,"context_line":"            serial_listen_addr \u003d libvirt_migrate.serial_listen_addr("},{"line_number":5855,"context_line":"                migrate_data)"},{"line_number":5856,"context_line":"            if not serial_listen_addr:"},{"line_number":5857,"context_line":"                self._verify_serial_console_is_disabled()"},{"line_number":5858,"context_line":""},{"line_number":5859,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_055711cb","line":5856,"in_reply_to":"9a629dbe_364aed26","updated":"2016-11-14 08:22:32.000000000","message":"Such comment is inside _verify_serial_console_is_disabled method. If you still want it to be here also, let me know.","commit_id":"3ff52ed467055e133dff737134cf2f3edb37b364"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7d9dafb53e7dd99ee60fdfb61691040cd706468a","unresolved":false,"context_lines":[{"line_number":5886,"context_line":""},{"line_number":5887,"context_line":"            params \u003d None"},{"line_number":5888,"context_line":"            new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":5889,"context_line":"                # TODO(sahid): It\u0027s not a really well idea to pass"},{"line_number":5890,"context_line":"                # the method _get_volume_config and we should to find"},{"line_number":5891,"context_line":"                # a way to avoid this in future."},{"line_number":5892,"context_line":"                guest, migrate_data, self._get_volume_config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_f7af08e1","line":5889,"updated":"2016-11-15 17:33:58.000000000","message":"s/well/good/\n\nsince we\u0027re already making a change here :)","commit_id":"b7da3cd180447a2e845501587f7345b8088b1f01"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"ec350e1c59300d36083717834c15f66eb683d3eb","unresolved":false,"context_lines":[{"line_number":5886,"context_line":""},{"line_number":5887,"context_line":"            params \u003d None"},{"line_number":5888,"context_line":"            new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":5889,"context_line":"                # TODO(sahid): It\u0027s not a really well idea to pass"},{"line_number":5890,"context_line":"                # the method _get_volume_config and we should to find"},{"line_number":5891,"context_line":"                # a way to avoid this in future."},{"line_number":5892,"context_line":"                guest, migrate_data, self._get_volume_config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_80ee6cb2","line":5889,"in_reply_to":"7a77a97e_f7af08e1","updated":"2016-11-16 10:07:08.000000000","message":"Done","commit_id":"b7da3cd180447a2e845501587f7345b8088b1f01"}]}
