)]}'
{"nova/tests/unit/virt/libvirt/test_migration.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"eb1b7e62c311972ffac5d991e94f74805fb7b2cb","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        self.assertFalse(mock_resume.called)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_verify_consoles_can_live_migrate_raises(self):"},{"line_number":734,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027vnc\u0027)"},{"line_number":735,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027spice\u0027)"},{"line_number":736,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData()"},{"line_number":737,"context_line":"        self.assertRaisesRegex("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_a31eb609","line":734,"updated":"2016-12-12 12:27:16.000000000","message":"Can you also add serial console here? So all cases will be covered.","commit_id":"d10dc739f75929e3833634ccf68e20df20d5ec9f"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"70e0967415bf9dbac1f39cd351bb28df15db5dbb","unresolved":false,"context_lines":[{"line_number":5433,"context_line":"        data \u003d objects.LibvirtLiveMigrateData()"},{"line_number":5434,"context_line":"        data.filename \u003d filename"},{"line_number":5435,"context_line":"        data.image_type \u003d CONF.libvirt.images_type"},{"line_number":5436,"context_line":"        if CONF.vnc.enabled:"},{"line_number":5437,"context_line":"            data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":5438,"context_line":"        if CONF.spice.enabled:"},{"line_number":5439,"context_line":"            data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_209dca65","line":5436,"updated":"2016-11-15 11:09:44.000000000","message":"I like this idea, but we need more tweaks, I think. One thing is that we shouldn\u0027t provide VNC/SPICE addresses if those are disabled on destination. But another thing is that we need to add proper validation if those addresses aren\u0027t provided. With current code the exception will say that VNC/SPICE listen address should be configured to catch-all or local address which is not true. Such live migration should be disallowed and we should return correct message, that destination has VNC/Spice disabled, so we cannot live migrate from host that has VNC/Spice enabled.","commit_id":"45040f5240ef731a8a47a56d961c4610c912cb5c"},{"author":{"_account_id":21284,"name":"Pavel Gluschak (scsnow)","email":"pglushchak@virtuozzo.com","username":"scsnow"},"change_message_id":"7f151bb95b61a3644d57f4f4f201e8d60c1913e2","unresolved":false,"context_lines":[{"line_number":5433,"context_line":"        data \u003d objects.LibvirtLiveMigrateData()"},{"line_number":5434,"context_line":"        data.filename \u003d filename"},{"line_number":5435,"context_line":"        data.image_type \u003d CONF.libvirt.images_type"},{"line_number":5436,"context_line":"        if CONF.vnc.enabled:"},{"line_number":5437,"context_line":"            data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":5438,"context_line":"        if CONF.spice.enabled:"},{"line_number":5439,"context_line":"            data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_f2ca9aa0","line":5436,"in_reply_to":"7a77a97e_209dca65","updated":"2016-11-16 09:27:43.000000000","message":"Thanks for suggestions. I\u0027m wondering why we set local and catch-all listen addresses in migration data at all. As I noted in commit message this results in updating destination xml and passing this xml to libvirt backend, that seems redundant. Why can\u0027t we use original domain xml for that case without passing updated xml in libvirt parameter VIR_MIGRATE_PARAM_DEST_XML? Per my understanding original xml already includes vnc/spice consoles with listen addresses filled, so there is no need to update that.","commit_id":"45040f5240ef731a8a47a56d961c4610c912cb5c"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"279f7d04538cb59274ea15e7181c8024a4925fcd","unresolved":false,"context_lines":[{"line_number":5433,"context_line":"        data \u003d objects.LibvirtLiveMigrateData()"},{"line_number":5434,"context_line":"        data.filename \u003d filename"},{"line_number":5435,"context_line":"        data.image_type \u003d CONF.libvirt.images_type"},{"line_number":5436,"context_line":"        if CONF.vnc.enabled:"},{"line_number":5437,"context_line":"            data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":5438,"context_line":"        if CONF.spice.enabled:"},{"line_number":5439,"context_line":"            data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_55fed838","line":5436,"in_reply_to":"7a77a97e_f2ca9aa0","updated":"2016-11-16 09:53:19.000000000","message":"I think this is fine to set local or catch-all listen addresses in migration data. We don\u0027t pass information whether VNC/SPICE is enabled or not, so we take this information from graphics_listen_addr_spice/vnc, i.e., if one of those properties is set, we consider that VNC/SPICE is enabled on destination. Basically we need a way to distinct two cases, when VNC/SPICE is enabled and configured to local/catch-all at destination, and when VNC/SPICE is disabled at all at destination.","commit_id":"45040f5240ef731a8a47a56d961c4610c912cb5c"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"70e0967415bf9dbac1f39cd351bb28df15db5dbb","unresolved":false,"context_lines":[{"line_number":5437,"context_line":"            data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":5438,"context_line":"        if CONF.spice.enabled:"},{"line_number":5439,"context_line":"            data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5440,"context_line":"        if CONF.serial_console.enabled:"},{"line_number":5441,"context_line":"            data.serial_listen_addr \u003d CONF.serial_console.proxyclient_address"},{"line_number":5442,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5443,"context_line":"        # nullable, so just don\u0027t set them if they are None"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_603182a2","line":5440,"updated":"2016-11-15 11:09:44.000000000","message":"This one is covered by https://review.openstack.org/#/c/397276/ and let\u0027s have it in a separate patch, as it\u0027s a bit different case.","commit_id":"45040f5240ef731a8a47a56d961c4610c912cb5c"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"70e0967415bf9dbac1f39cd351bb28df15db5dbb","unresolved":false,"context_lines":[{"line_number":5829,"context_line":"        if ((CONF.vnc.enabled and not local_vnc) or"},{"line_number":5830,"context_line":"            (CONF.spice.enabled and not local_spice)):"},{"line_number":5831,"context_line":""},{"line_number":5832,"context_line":"            msg \u003d _(\u0027Your destination node does not support\u0027"},{"line_number":5833,"context_line":"                    \u0027 retrieving listen addresses.  In order\u0027"},{"line_number":5834,"context_line":"                    \u0027 for live migration to work properly, you\u0027"},{"line_number":5835,"context_line":"                    \u0027 must configure the graphics (VNC and/or\u0027"},{"line_number":5836,"context_line":"                    \u0027 SPICE) listen addresses to be either\u0027"},{"line_number":5837,"context_line":"                    \u0027 the catch-all address (0.0.0.0 or ::) or\u0027"},{"line_number":5838,"context_line":"                    \u0027 the local address (127.0.0.1 or ::1).\u0027)"},{"line_number":5839,"context_line":"            raise exception.MigrationError(reason\u003dmsg)"},{"line_number":5840,"context_line":""},{"line_number":5841,"context_line":"        if listen_addrs:"},{"line_number":5842,"context_line":"            dest_local_vnc \u003d listen_addrs.get(\u0027vnc\u0027) in LOCAL_ADDRS"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_20478abc","line":5839,"range":{"start_line":5832,"start_character":12,"end_line":5839,"end_character":54},"updated":"2016-11-15 11:09:44.000000000","message":"Currently this would be raised which would indicate that configuring VNC/SPICE to catch-all or local address will solve the problem. That\u0027s not true, such LM should be disallowed regardless of IP addresses configuration. We shouldn\u0027t allow live migration from host with VNC/SPICE enabled to host with VNC/SPICE disabled.","commit_id":"45040f5240ef731a8a47a56d961c4610c912cb5c"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"70e0967415bf9dbac1f39cd351bb28df15db5dbb","unresolved":false,"context_lines":[{"line_number":5900,"context_line":"                # TODO(alexs-h): These checks could be moved to the"},{"line_number":5901,"context_line":"                # check_can_live_migrate_destination/source phase"},{"line_number":5902,"context_line":"                self._check_graphics_addresses_can_live_migrate(listen_addrs)"},{"line_number":5903,"context_line":"                self._verify_serial_console_is_disabled()"},{"line_number":5904,"context_line":""},{"line_number":5905,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"},{"line_number":5906,"context_line":"            # case that `live_migration_inbound_addr` parameter is"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_a09e3a54","line":5903,"range":{"start_line":5903,"start_character":21,"end_line":5903,"end_character":55},"updated":"2016-11-15 11:09:44.000000000","message":"I\u0027m talking about adding similar check to this one. Above check _check_graphics_addresses_can_live_migrate is completely useless, but we should validate whether VNC/Spice is disabled in such case.","commit_id":"45040f5240ef731a8a47a56d961c4610c912cb5c"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"03f8f4852d13c807973c6ea8abc21cf751f73513","unresolved":false,"context_lines":[{"line_number":5888,"context_line":""},{"line_number":5889,"context_line":"            serial_listen_addr \u003d libvirt_migrate.serial_listen_addr("},{"line_number":5890,"context_line":"                migrate_data)"},{"line_number":5891,"context_line":"            if not serial_listen_addr:"},{"line_number":5892,"context_line":"                # In this context we want to ensure that serial console is"},{"line_number":5893,"context_line":"                # disabled on source node. This is because nova couldn\u0027t"},{"line_number":5894,"context_line":"                # retrieve serial listen address from destination node, so we"},{"line_number":5895,"context_line":"                # consider that destination node might have serial console"},{"line_number":5896,"context_line":"                # disabled as well."},{"line_number":5897,"context_line":"                self._verify_serial_console_is_disabled()"},{"line_number":5898,"context_line":""},{"line_number":5899,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"},{"line_number":5900,"context_line":"            # case that `live_migration_inbound_addr` parameter is"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_97881ac7","line":5897,"range":{"start_line":5891,"start_character":12,"end_line":5897,"end_character":57},"updated":"2016-11-28 09:58:25.000000000","message":"You need to add similar check to this one, so all live migrations from a node with VNC/SPICE enabled to a node with VNC/SPICE disabled will be blocked and nova won\u0027t fail with TypeError exception.","commit_id":"7fccb62da1cd6bb05990319305dd3ff437d9ad09"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"03f8f4852d13c807973c6ea8abc21cf751f73513","unresolved":false,"context_lines":[{"line_number":5908,"context_line":"                    migrate_uri \u003d self._migrate_uri(dest)"},{"line_number":5909,"context_line":""},{"line_number":5910,"context_line":"            params \u003d None"},{"line_number":5911,"context_line":"            new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":5912,"context_line":"                # TODO(sahid): It\u0027s not a really good idea to pass"},{"line_number":5913,"context_line":"                # the method _get_volume_config and we should to find"},{"line_number":5914,"context_line":"                # a way to avoid this in future."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_9701fa3a","line":5911,"updated":"2016-11-28 09:58:25.000000000","message":"Your patch fails with TypeError exception inside this method when live migrating from node with VNC/SPICE enabled to a node with VNC/SPICE disabled.","commit_id":"7fccb62da1cd6bb05990319305dd3ff437d9ad09"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"cfcc2ee3162b630600459a5affe4125e1fc9885b","unresolved":false,"context_lines":[{"line_number":5857,"context_line":"                      e, instance\u003dinstance)"},{"line_number":5858,"context_line":"            raise"},{"line_number":5859,"context_line":""},{"line_number":5860,"context_line":"    @staticmethod"},{"line_number":5861,"context_line":"    def _verify_consoles_can_live_migrate(migrate_data):"},{"line_number":5862,"context_line":"        failed_consoles \u003d []"},{"line_number":5863,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_d4074a7f","line":5860,"updated":"2016-12-02 13:18:17.000000000","message":"Why this needs to be static?","commit_id":"27b5f7c0edc2958f38ecfedf793531cadfbf281e"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"11ea2b388934f598a6224a8f62429afd8a59442a","unresolved":false,"context_lines":[{"line_number":5857,"context_line":"                      e, instance\u003dinstance)"},{"line_number":5858,"context_line":"            raise"},{"line_number":5859,"context_line":""},{"line_number":5860,"context_line":"    @staticmethod"},{"line_number":5861,"context_line":"    def _verify_consoles_can_live_migrate(migrate_data):"},{"line_number":5862,"context_line":"        failed_consoles \u003d []"},{"line_number":5863,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_524ec396","line":5860,"in_reply_to":"3a71b18c_4247fc1c","updated":"2016-12-04 11:09:22.000000000","message":"I\u0027d rather move it to libvirt/migrations.py, but that\u0027s also ok.","commit_id":"27b5f7c0edc2958f38ecfedf793531cadfbf281e"},{"author":{"_account_id":21284,"name":"Pavel Gluschak (scsnow)","email":"pglushchak@virtuozzo.com","username":"scsnow"},"change_message_id":"8ec7583fa1e8f23266460914d055da820d59b98c","unresolved":false,"context_lines":[{"line_number":5857,"context_line":"                      e, instance\u003dinstance)"},{"line_number":5858,"context_line":"            raise"},{"line_number":5859,"context_line":""},{"line_number":5860,"context_line":"    @staticmethod"},{"line_number":5861,"context_line":"    def _verify_consoles_can_live_migrate(migrate_data):"},{"line_number":5862,"context_line":"        failed_consoles \u003d []"},{"line_number":5863,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_4247fc1c","line":5860,"in_reply_to":"3a71b18c_d4074a7f","updated":"2016-12-02 14:23:32.000000000","message":"Why not? It doesn\u0027t access class attributes, so it\u0027s better to define it as static.","commit_id":"27b5f7c0edc2958f38ecfedf793531cadfbf281e"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"cfcc2ee3162b630600459a5affe4125e1fc9885b","unresolved":false,"context_lines":[{"line_number":5904,"context_line":"            else:"},{"line_number":5905,"context_line":"                migration_flags \u003d self._live_migration_flags"},{"line_number":5906,"context_line":""},{"line_number":5907,"context_line":"            self._verify_consoles_can_live_migrate(migrate_data)"},{"line_number":5908,"context_line":""},{"line_number":5909,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"},{"line_number":5910,"context_line":"            # case that `live_migration_inbound_addr` parameter is"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_543b3a38","line":5907,"updated":"2016-12-02 13:18:17.000000000","message":"How does it work? You changed this method to static, but you still pass \u0027self\u0027 to the method. AFAIK it won\u0027t work as _verify_consoles_can_live_migrate accepts only one argument - migrate_data. Here you pass (self, migrate_data)","commit_id":"27b5f7c0edc2958f38ecfedf793531cadfbf281e"},{"author":{"_account_id":21284,"name":"Pavel Gluschak (scsnow)","email":"pglushchak@virtuozzo.com","username":"scsnow"},"change_message_id":"8ec7583fa1e8f23266460914d055da820d59b98c","unresolved":false,"context_lines":[{"line_number":5904,"context_line":"            else:"},{"line_number":5905,"context_line":"                migration_flags \u003d self._live_migration_flags"},{"line_number":5906,"context_line":""},{"line_number":5907,"context_line":"            self._verify_consoles_can_live_migrate(migrate_data)"},{"line_number":5908,"context_line":""},{"line_number":5909,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"},{"line_number":5910,"context_line":"            # case that `live_migration_inbound_addr` parameter is"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_e882a9ff","line":5907,"in_reply_to":"3a71b18c_543b3a38","updated":"2016-12-02 14:23:32.000000000","message":"self is not passed to staticmethod. See [1].\n[1] https://docs.python.org/2/library/functions.html#staticmethod","commit_id":"27b5f7c0edc2958f38ecfedf793531cadfbf281e"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"11ea2b388934f598a6224a8f62429afd8a59442a","unresolved":false,"context_lines":[{"line_number":5904,"context_line":"            else:"},{"line_number":5905,"context_line":"                migration_flags \u003d self._live_migration_flags"},{"line_number":5906,"context_line":""},{"line_number":5907,"context_line":"            self._verify_consoles_can_live_migrate(migrate_data)"},{"line_number":5908,"context_line":""},{"line_number":5909,"context_line":"            # NOTE(aplanas) migrate_uri will have a value only in the"},{"line_number":5910,"context_line":"            # case that `live_migration_inbound_addr` parameter is"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_324b0789","line":5907,"in_reply_to":"3a71b18c_e882a9ff","updated":"2016-12-04 11:09:22.000000000","message":"Your right, I mixed up different things.","commit_id":"27b5f7c0edc2958f38ecfedf793531cadfbf281e"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"efdcaba5dfb5e188d510d69f075873428c062085","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        old_xml_has_perf \u003d False"},{"line_number":193,"context_line":"    else:"},{"line_number":194,"context_line":"        perf_events \u003d perf_events[0]"},{"line_number":195,"context_line":"        for event in perf_events:"},{"line_number":196,"context_line":"            perf_events.remove(event)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    if not supported_perf_events:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_23a1c6f8","line":195,"updated":"2016-12-12 12:26:20.000000000","message":"This change is unrelated, it will cause mess in a git blame","commit_id":"d10dc739f75929e3833634ccf68e20df20d5ec9f"},{"author":{"_account_id":21284,"name":"Pavel Gluschak (scsnow)","email":"pglushchak@virtuozzo.com","username":"scsnow"},"change_message_id":"9e49148a06de72a65d60bf3bf5bcb935c65a3544","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        old_xml_has_perf \u003d False"},{"line_number":193,"context_line":"    else:"},{"line_number":194,"context_line":"        perf_events \u003d perf_events[0]"},{"line_number":195,"context_line":"        for event in perf_events:"},{"line_number":196,"context_line":"            perf_events.remove(event)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    if not supported_perf_events:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_83261acc","line":195,"in_reply_to":"3a71b18c_23a1c6f8","updated":"2016-12-12 12:39:47.000000000","message":"Without this change pep8 check will fail as _ masks import.","commit_id":"d10dc739f75929e3833634ccf68e20df20d5ec9f"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"4d871602dcaaf24e65c52d0ea26699b1cc5f1f3d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        old_xml_has_perf \u003d False"},{"line_number":193,"context_line":"    else:"},{"line_number":194,"context_line":"        perf_events \u003d perf_events[0]"},{"line_number":195,"context_line":"        for event in perf_events:"},{"line_number":196,"context_line":"            perf_events.remove(event)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    if not supported_perf_events:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_ce8af963","line":195,"in_reply_to":"3a71b18c_83261acc","updated":"2016-12-12 12:46:53.000000000","message":"Didn\u0027t consider pep8 check there, if so then it is okay.","commit_id":"d10dc739f75929e3833634ccf68e20df20d5ec9f"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6be6bd1b19e190f2a3a710d0287b03ff13b012be","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    if (migrate_data.obj_attr_is_set(\u0027graphics_listen_addr_vnc\u0027)"},{"line_number":44,"context_line":"        or migrate_data.obj_attr_is_set(\u0027graphics_listen_addr_spice\u0027)):"},{"line_number":45,"context_line":"        listen_addrs \u003d {\u0027vnc\u0027: None, \u0027spice\u0027: None}"},{"line_number":46,"context_line":"    if migrate_data.obj_attr_is_set(\u0027graphics_listen_addr_vnc\u0027):"},{"line_number":47,"context_line":"        listen_addrs[\u0027vnc\u0027] \u003d str(migrate_data.graphics_listen_addr_vnc)"},{"line_number":48,"context_line":"    if migrate_data.obj_attr_is_set(\u0027graphics_listen_addr_spice\u0027):"},{"line_number":49,"context_line":"        listen_addrs[\u0027spice\u0027] \u003d str("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_279b25cb","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":64},"updated":"2017-01-02 09:58:01.000000000","message":"You need to update this condition to guard against None. Once you set migrate_data.graphics_listen_addr_vnc \u003d None  this will pass, because the property is set and its value is None. Therefore line below will convert this None to \u0027None\u0027 and the check https://review.openstack.org/#/c/396218/6/nova/virt/libvirt/migration.py@517 will pass.","commit_id":"1d8ad621c4f8e8e9cbd5770e489bb2e3d6fee059"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6be6bd1b19e190f2a3a710d0287b03ff13b012be","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        listen_addrs \u003d {\u0027vnc\u0027: None, \u0027spice\u0027: None}"},{"line_number":46,"context_line":"    if migrate_data.obj_attr_is_set(\u0027graphics_listen_addr_vnc\u0027):"},{"line_number":47,"context_line":"        listen_addrs[\u0027vnc\u0027] \u003d str(migrate_data.graphics_listen_addr_vnc)"},{"line_number":48,"context_line":"    if migrate_data.obj_attr_is_set(\u0027graphics_listen_addr_spice\u0027):"},{"line_number":49,"context_line":"        listen_addrs[\u0027spice\u0027] \u003d str("},{"line_number":50,"context_line":"            migrate_data.graphics_listen_addr_spice)"},{"line_number":51,"context_line":"    return listen_addrs"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_47a029f5","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":65},"updated":"2017-01-02 09:58:01.000000000","message":"The same applies here","commit_id":"1d8ad621c4f8e8e9cbd5770e489bb2e3d6fee059"}]}
