)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4468,"name":"Wangpan","email":"hzwangpan@corp.netease.com","username":"hzwangpan"},"change_message_id":"be3736a944fb628390ca1f29d0cce8d1c69293f3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Solly Ross \u003csross@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-13 17:03:19 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change listen address on libvirt live-migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, in order for libvirt live migration to work,"},{"line_number":10,"context_line":"the graphics listen addresses (VNC and/or Spice) had to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUX%2F%2FT9g%3D","line":7,"updated":"2014-02-14 02:13:56.000000000","message":"have you tested this change? is this address really could be changed while live-migration? I thought this address is migrated with QEMU, you change it in libvirt xml file may be unuseful.","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":4468,"name":"Wangpan","email":"hzwangpan@corp.netease.com","username":"hzwangpan"},"change_message_id":"ac834cff9ad7e5d8b8dec3fa7821d3ade3b19460","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Solly Ross \u003csross@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-13 17:03:19 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change listen address on libvirt live-migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, in order for libvirt live migration to work,"},{"line_number":10,"context_line":"the graphics listen addresses (VNC and/or Spice) had to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUX%2F%2B9Aw%3D","line":7,"in_reply_to":"AAAAUX%2F%2FOk8%3D","updated":"2014-02-18 01:30:21.000000000","message":"Thanks.","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"e28489615de7ee490ee4f0cdfa040399367acd32","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Solly Ross \u003csross@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-13 17:03:19 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change listen address on libvirt live-migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, in order for libvirt live migration to work,"},{"line_number":10,"context_line":"the graphics listen addresses (VNC and/or Spice) had to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUX%2F%2FOk8%3D","line":7,"in_reply_to":"AAAAUX%2F%2FT9g%3D","updated":"2014-02-14 17:59:31.000000000","message":"Yes, I have tested it.  The address it not changed automatically when the VM is migrated -- new XML must be passed to migrateToURI2 to change it, as I have done.  Please see the relevant bug and Nova migration documentation.","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"}],"nova/tests/virt/libvirt/test_libvirt.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4a8a8b84c7631e7bd7d5c8bb1b1ee153e8f585b2","unresolved":false,"context_lines":[{"line_number":3967,"context_line":"                         \u0027power_state\u0027: power_state.RUNNING,"},{"line_number":3968,"context_line":"                         \u0027vm_state\u0027: vm_states.ACTIVE}"},{"line_number":3969,"context_line":"        instance_ref \u003d db.instance_create(self.context, self.test_instance)"},{"line_number":3970,"context_line":"        instance_ref \u003d db.instance_update(self.context, instance_ref[\u0027uuid\u0027],"},{"line_number":3971,"context_line":"                                          instance_dict)"},{"line_number":3972,"context_line":""},{"line_number":3973,"context_line":"        xml_tmpl \u003d (\"\u003cdomain type\u003d\u0027kvm\u0027\u003e\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FT14%3D","line":3970,"updated":"2014-04-22 15:45:27.000000000","message":"this should be an instance object and not from the db.\nplease look at https://github.com/openstack/nova/blob/master/nova/tests/virt/vmwareapi/test_driver_api.py#L407 for an example","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"7a7e993b24166ef1c60d2aa59c7e9c038c07b9ee","unresolved":false,"context_lines":[{"line_number":3967,"context_line":"                         \u0027power_state\u0027: power_state.RUNNING,"},{"line_number":3968,"context_line":"                         \u0027vm_state\u0027: vm_states.ACTIVE}"},{"line_number":3969,"context_line":"        instance_ref \u003d db.instance_create(self.context, self.test_instance)"},{"line_number":3970,"context_line":"        instance_ref \u003d db.instance_update(self.context, instance_ref[\u0027uuid\u0027],"},{"line_number":3971,"context_line":"                                          instance_dict)"},{"line_number":3972,"context_line":""},{"line_number":3973,"context_line":"        xml_tmpl \u003d (\"\u003cdomain type\u003d\u0027kvm\u0027\u003e\""}],"source_content_type":"text/x-python","patch_set":8,"id":"bad4c104_d9abc287","line":3970,"in_reply_to":"AAAAXH%2F%2FT14%3D","updated":"2014-04-29 17:56:38.000000000","message":"These are actually copied from the below test.  The tests should most likely remain uniform","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4a8a8b84c7631e7bd7d5c8bb1b1ee153e8f585b2","unresolved":false,"context_lines":[{"line_number":4078,"context_line":"                         \u0027power_state\u0027: power_state.RUNNING,"},{"line_number":4079,"context_line":"                         \u0027vm_state\u0027: vm_states.ACTIVE}"},{"line_number":4080,"context_line":"        instance_ref \u003d db.instance_create(self.context, self.test_instance)"},{"line_number":4081,"context_line":"        instance_ref \u003d db.instance_update(self.context, instance_ref[\u0027uuid\u0027],"},{"line_number":4082,"context_line":"                                          instance_dict)"},{"line_number":4083,"context_line":""},{"line_number":4084,"context_line":"        # Preparing mocks"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FT1k%3D","line":4081,"updated":"2014-04-22 15:45:27.000000000","message":"same as above","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"7a7e993b24166ef1c60d2aa59c7e9c038c07b9ee","unresolved":false,"context_lines":[{"line_number":4078,"context_line":"                         \u0027power_state\u0027: power_state.RUNNING,"},{"line_number":4079,"context_line":"                         \u0027vm_state\u0027: vm_states.ACTIVE}"},{"line_number":4080,"context_line":"        instance_ref \u003d db.instance_create(self.context, self.test_instance)"},{"line_number":4081,"context_line":"        instance_ref \u003d db.instance_update(self.context, instance_ref[\u0027uuid\u0027],"},{"line_number":4082,"context_line":"                                          instance_dict)"},{"line_number":4083,"context_line":""},{"line_number":4084,"context_line":"        # Preparing mocks"}],"source_content_type":"text/x-python","patch_set":8,"id":"bad4c104_99885a24","line":4081,"in_reply_to":"AAAAXH%2F%2FT1k%3D","updated":"2014-04-29 17:56:38.000000000","message":"see above","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6caad5a59243f738201cbdecbfb64dc6c78a8ef0","unresolved":false,"context_lines":[{"line_number":3990,"context_line":"        target_xml \u003d etree.tostring(etree.fromstring(target_xml))"},{"line_number":3991,"context_line":""},{"line_number":3992,"context_line":"        # Preparing mocks"},{"line_number":3993,"context_line":"        vdmock \u003d self.mox.CreateMock(libvirt.virDomain)"},{"line_number":3994,"context_line":"        self.mox.StubOutWithMock(vdmock, \"migrateToURI2\")"},{"line_number":3995,"context_line":"        _bandwidth \u003d CONF.libvirt.live_migration_bandwidth"},{"line_number":3996,"context_line":"        vdmock.XMLDesc(libvirt.VIR_DOMAIN_XML_MIGRATABLE).AndReturn("}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_985f600e","line":3993,"updated":"2014-05-01 11:26:47.000000000","message":"why is this using mox and not mock? can you please change the whole test to use mock?","commit_id":"780bf119719e8b7213bb00091e6af200d13395a9"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"885a96d6e638306e847cc4e5f35340e6792df78e","unresolved":false,"context_lines":[{"line_number":3990,"context_line":"        target_xml \u003d etree.tostring(etree.fromstring(target_xml))"},{"line_number":3991,"context_line":""},{"line_number":3992,"context_line":"        # Preparing mocks"},{"line_number":3993,"context_line":"        vdmock \u003d self.mox.CreateMock(libvirt.virDomain)"},{"line_number":3994,"context_line":"        self.mox.StubOutWithMock(vdmock, \"migrateToURI2\")"},{"line_number":3995,"context_line":"        _bandwidth \u003d CONF.libvirt.live_migration_bandwidth"},{"line_number":3996,"context_line":"        vdmock.XMLDesc(libvirt.VIR_DOMAIN_XML_MIGRATABLE).AndReturn("}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_ed00abac","line":3993,"in_reply_to":"9ad9bd40_985f600e","updated":"2014-05-01 14:51:54.000000000","message":"if you notice, the tests are patterned after `test_live_migration_raises_exception`, which uses mox.  IMHO, all the live migration tests should be similiar, and if we want to change them later, then we can.","commit_id":"780bf119719e8b7213bb00091e6af200d13395a9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6caad5a59243f738201cbdecbfb64dc6c78a8ef0","unresolved":false,"context_lines":[{"line_number":4083,"context_line":"                                          instance_dict)"},{"line_number":4084,"context_line":""},{"line_number":4085,"context_line":"        # Preparing mocks"},{"line_number":4086,"context_line":"        vdmock \u003d self.mox.CreateMock(libvirt.virDomain)"},{"line_number":4087,"context_line":"        self.mox.StubOutWithMock(vdmock, \"migrateToURI\")"},{"line_number":4088,"context_line":""},{"line_number":4089,"context_line":"        fake_domain \u003d FakeVirtDomain()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_f8a5cc04","line":4086,"updated":"2014-05-01 11:26:47.000000000","message":"same point here","commit_id":"780bf119719e8b7213bb00091e6af200d13395a9"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"da9f5044c1987fb2062c31490aef9b5de176ce21","unresolved":false,"context_lines":[{"line_number":4235,"context_line":"        alias_elem \u003d xml_doc.find(\"./devices/console/alias[@name\u003d\u0027serial0\u0027]\")"},{"line_number":4236,"context_line":"        if alias_elem is not None:"},{"line_number":4237,"context_line":"            console_elem \u003d alias_elem.getparent()"},{"line_number":4238,"context_line":"            console_elem.getparent().remove(console_elem)"},{"line_number":4239,"context_line":""},{"line_number":4240,"context_line":"        return etree.tostring(xml_doc)"},{"line_number":4241,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FRgA%3D","line":4238,"updated":"2014-02-14 10:15:17.000000000","message":"Is this still needed once you add VIR_DOMAIN_XML_MIGRATABLE below ? If so, then please file a bug against libvirt, since this hack shouldn\u0027t be needed.","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"51a020ba07172a5c08c45b23d7beea3a1811bdc2","unresolved":false,"context_lines":[{"line_number":4235,"context_line":"        alias_elem \u003d xml_doc.find(\"./devices/console/alias[@name\u003d\u0027serial0\u0027]\")"},{"line_number":4236,"context_line":"        if alias_elem is not None:"},{"line_number":4237,"context_line":"            console_elem \u003d alias_elem.getparent()"},{"line_number":4238,"context_line":"            console_elem.getparent().remove(console_elem)"},{"line_number":4239,"context_line":""},{"line_number":4240,"context_line":"        return etree.tostring(xml_doc)"},{"line_number":4241,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BvoE%3D","line":4238,"in_reply_to":"AAAAUX%2F%2FOkQ%3D","updated":"2014-02-19 11:33:18.000000000","message":"That doesn\u0027t make a whole lot of sense to me.\n\nWith existing Nova code which is not supplying any custom XML, then internally libvirt would be doing the equivalent of dom.XMLDesc(VIR_DOMAIN_XML_MIGRATABLE) on your behalf. So if there are problems with the XML_MIGRATABLE flag, we should already see those with current code. Can you elaborate on what problems you see using XML_MIGRATABLE, because we should definitely be passing that ourselves in this case","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"e28489615de7ee490ee4f0cdfa040399367acd32","unresolved":false,"context_lines":[{"line_number":4235,"context_line":"        alias_elem \u003d xml_doc.find(\"./devices/console/alias[@name\u003d\u0027serial0\u0027]\")"},{"line_number":4236,"context_line":"        if alias_elem is not None:"},{"line_number":4237,"context_line":"            console_elem \u003d alias_elem.getparent()"},{"line_number":4238,"context_line":"            console_elem.getparent().remove(console_elem)"},{"line_number":4239,"context_line":""},{"line_number":4240,"context_line":"        return etree.tostring(xml_doc)"},{"line_number":4241,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FOkQ%3D","line":4238,"in_reply_to":"AAAAUX%2F%2FRgA%3D","updated":"2014-02-14 17:59:31.000000000","message":"Yes, it is.  In fact, passing VIR_DOMAIN_XML_MIGRATABLE actually caused the an mismatch error when I passed the XML to migrateToURI2, and didn\u0027t even remove the console element.","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"da9f5044c1987fb2062c31490aef9b5de176ce21","unresolved":false,"context_lines":[{"line_number":4272,"context_line":"            pre_live_migrate_data \u003d migrate_data[\u0027pre_live_migration_result\u0027]"},{"line_number":4273,"context_line":"            listen_addrs \u003d pre_live_migrate_data[\u0027graphics_listen_addrs\u0027]"},{"line_number":4274,"context_line":""},{"line_number":4275,"context_line":"            old_xml_str \u003d dom.XMLDesc(0)"},{"line_number":4276,"context_line":"            new_xml_str \u003d self._get_migratable_xml(old_xml_str, listen_addrs)"},{"line_number":4277,"context_line":""},{"line_number":4278,"context_line":"            dom.migrateToURI2(CONF.libvirt.live_migration_uri % dest,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FRgM%3D","line":4275,"updated":"2014-02-14 10:15:17.000000000","message":"Should probably be using  VIR_DOMAIN_XML_MIGRATABLE instead of 0 here, since  that should make migration robust against mis-matched libvirt versions on each host.","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"e28489615de7ee490ee4f0cdfa040399367acd32","unresolved":false,"context_lines":[{"line_number":4272,"context_line":"            pre_live_migrate_data \u003d migrate_data[\u0027pre_live_migration_result\u0027]"},{"line_number":4273,"context_line":"            listen_addrs \u003d pre_live_migrate_data[\u0027graphics_listen_addrs\u0027]"},{"line_number":4274,"context_line":""},{"line_number":4275,"context_line":"            old_xml_str \u003d dom.XMLDesc(0)"},{"line_number":4276,"context_line":"            new_xml_str \u003d self._get_migratable_xml(old_xml_str, listen_addrs)"},{"line_number":4277,"context_line":""},{"line_number":4278,"context_line":"            dom.migrateToURI2(CONF.libvirt.live_migration_uri % dest,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FOj4%3D","line":4275,"in_reply_to":"AAAAUX%2F%2FRgM%3D","updated":"2014-02-14 17:59:31.000000000","message":"see above comment","commit_id":"c9de57aaf68209e84e0bc649119f4138909d60f5"},{"author":{"_account_id":10846,"name":"Jiri Denemark","email":"jdenemar@redhat.com","username":"jirka"},"change_message_id":"4e4c603738a0dced58d62e55170385edc9ab8522","unresolved":false,"context_lines":[{"line_number":4441,"context_line":"                              new_xml_str,"},{"line_number":4442,"context_line":"                              logical_sum,"},{"line_number":4443,"context_line":"                              None,"},{"line_number":4444,"context_line":"                              CONF.libvirt.live_migration_bandwidth)"},{"line_number":4445,"context_line":""},{"line_number":4446,"context_line":"        except Exception as e:"},{"line_number":4447,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FVRM%3D","line":4444,"updated":"2014-03-18 15:20:41.000000000","message":"Yes, this is the correct way of using the migrateToURI2 API with xmlin argument.","commit_id":"56ad0075bd627609aee587165e7a1b19dd0c0352"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7903b2810814799b22f384a6da94ac32ae7af3b6","unresolved":false,"context_lines":[{"line_number":4441,"context_line":"                           \u0027 VIR_DOMAIN_XML_MIGRATABLE flag.  Live migration\u0027"},{"line_number":4442,"context_line":"                           \u0027 will not work without setting the graphics (Spice\u0027"},{"line_number":4443,"context_line":"                           \u0027 and/or VNC) listen addresses on the compute nodes\u0027"},{"line_number":4444,"context_line":"                           \u0027 to \"0.0.0.0\".\u0027))"},{"line_number":4445,"context_line":""},{"line_number":4446,"context_line":"                dom.migrateToURI(CONF.libvirt.live_migration_uri % dest,"},{"line_number":4447,"context_line":"                                 logical_sum,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FxKY%3D","line":4444,"updated":"2014-04-17 15:46:06.000000000","message":"If the listen address is already \"0.0.0.0\" (or ipv6 equiv) then we don\u0027t want to be logging this message.\n\nIf the listen address is not 0.0.0.0, then we should raise an exception, since we surely know that QEMU is going to fail to start if we can\u0027t fix the address.","commit_id":"5caebe2f557a8d0adf3a646f0f9418b9cebf7bf1"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"083ddd87af7d86d944033b50b64895ad40c60ba4","unresolved":false,"context_lines":[{"line_number":4500,"context_line":""},{"line_number":4501,"context_line":"            if migratable_flag is None:"},{"line_number":4502,"context_line":"                local_vnc \u003d (listen_addrs[\u0027vnc\u0027] \u003d\u003d \u00270.0.0.0\u0027"},{"line_number":4503,"context_line":"                                or listen_addrs[\u0027vnc\u0027] \u003d\u003d \u0027127.0.0.1\u0027)"},{"line_number":4504,"context_line":"                local_spice \u003d (listen_addrs[\u0027spice\u0027] \u003d\u003d \u00270.0.0.0\u0027"},{"line_number":4505,"context_line":"                                or listen_addrs[\u0027spice\u0027] \u003d\u003d \u0027127.0.0.1\u0027)"},{"line_number":4506,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_c9820e00","line":4503,"updated":"2014-04-30 19:06:22.000000000","message":"Simpler  as\n\n   listen_addrs[\u0027vnc\u0027] in (\"0.0.0.0\", \"127.0.0.1\")","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"083ddd87af7d86d944033b50b64895ad40c60ba4","unresolved":false,"context_lines":[{"line_number":4502,"context_line":"                local_vnc \u003d (listen_addrs[\u0027vnc\u0027] \u003d\u003d \u00270.0.0.0\u0027"},{"line_number":4503,"context_line":"                                or listen_addrs[\u0027vnc\u0027] \u003d\u003d \u0027127.0.0.1\u0027)"},{"line_number":4504,"context_line":"                local_spice \u003d (listen_addrs[\u0027spice\u0027] \u003d\u003d \u00270.0.0.0\u0027"},{"line_number":4505,"context_line":"                                or listen_addrs[\u0027spice\u0027] \u003d\u003d \u0027127.0.0.1\u0027)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"                if ((CONF.vnc_enabled and not local_vnc)"},{"line_number":4508,"context_line":"                        or (CONF.spice.enabled and not local_spice)):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_e987d20d","line":4505,"updated":"2014-04-30 19:06:22.000000000","message":"As above.","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"083ddd87af7d86d944033b50b64895ad40c60ba4","unresolved":false,"context_lines":[{"line_number":4505,"context_line":"                                or listen_addrs[\u0027spice\u0027] \u003d\u003d \u0027127.0.0.1\u0027)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"                if ((CONF.vnc_enabled and not local_vnc)"},{"line_number":4508,"context_line":"                        or (CONF.spice.enabled and not local_spice)):"},{"line_number":4509,"context_line":""},{"line_number":4510,"context_line":"                    raise exception.MigrationError("},{"line_number":4511,"context_line":"                            _(\u0027Your libvirt version does not support the\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_a9a6aabf","line":4508,"updated":"2014-04-30 19:06:22.000000000","message":"Nitpick: Alignment / indentation is rather wierd here. IMHO the \u0027or\u0027 should  be on the first line, and the two CONF. statements aligned vertically","commit_id":"d30982bbf0330a99168b6979e83222026938c5df"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"98480e2d543942f02a1c5fa5bbd5819074ff8bea","unresolved":false,"context_lines":[{"line_number":4454,"context_line":"                if listen_tag is not None:"},{"line_number":4455,"context_line":"                    listen_tag.set(\u0027address\u0027, listen_addrs[\u0027vnc\u0027])"},{"line_number":4456,"context_line":"                if dev.get(\u0027listen\u0027) is not None:"},{"line_number":4457,"context_line":"                    dev.set(\u0027listen\u0027, listen_addrs[\u0027vnc\u0027])"},{"line_number":4458,"context_line":"            elif gr_type \u003d\u003d \u0027spice\u0027:"},{"line_number":4459,"context_line":"                if listen_tag is not None:"},{"line_number":4460,"context_line":"                    listen_tag.set(\u0027address\u0027, listen_addrs[\u0027spice\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_12c06829","line":4457,"range":{"start_line":4457,"start_character":38,"end_line":4457,"end_character":50},"updated":"2014-05-02 18:14:37.000000000","message":"If I\u0027m reading this right, if we migrate from a juno to icehouse node, the icehouse pre_live_migration() would not have sent us the listen_addrs, which means that this will fail with a KeyError.","commit_id":"780bf119719e8b7213bb00091e6af200d13395a9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"98480e2d543942f02a1c5fa5bbd5819074ff8bea","unresolved":false,"context_lines":[{"line_number":4495,"context_line":"            dom \u003d self._lookup_by_name(instance[\"name\"])"},{"line_number":4496,"context_line":""},{"line_number":4497,"context_line":"            pre_live_migrate_data \u003d migrate_data[\u0027pre_live_migration_result\u0027]"},{"line_number":4498,"context_line":"            listen_addrs \u003d pre_live_migrate_data[\u0027graphics_listen_addrs\u0027]"},{"line_number":4499,"context_line":""},{"line_number":4500,"context_line":"            migratable_flag \u003d getattr(libvirt, \u0027VIR_DOMAIN_XML_MIGRATABLE\u0027,"},{"line_number":4501,"context_line":"                                      None)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_d2cc4064","line":4498,"updated":"2014-05-02 18:14:37.000000000","message":"This too, before we even check the obvious case of being 0.0.0.0. Sounds like we should use .get() here, and then include \"graphics_listen_addrs is None\" in the logic below. It\u0027s okay if it\u0027s not provided *and* we\u0027re using either 0.0.0.0 or 127.0.0.1, but not otherwise.","commit_id":"780bf119719e8b7213bb00091e6af200d13395a9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2257c24d1bcf78f1585039ac4705cedf9000845a","unresolved":false,"context_lines":[{"line_number":4533,"context_line":"                                   \u0027 addresses on the destination node do not\u0027"},{"line_number":4534,"context_line":"                                   \u0027 match the addresses on the source node.\u0027"},{"line_number":4535,"context_line":"                                   \u0027 Since the source node has listen\u0027"},{"line_number":4536,"context_line":"                                   \u0027 addresses set toeither \"0.0.0.0\" or\u0027"},{"line_number":4537,"context_line":"                                   \u0027 \"127.0.0.1\", the live migration will\u0027"},{"line_number":4538,"context_line":"                                   \u0027 succeed, but the VM will continue to\u0027"},{"line_number":4539,"context_line":"                                   \u0027 listen on the current addresses.\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad9bd40_8b0f9987","line":4536,"updated":"2014-05-06 14:43:53.000000000","message":"s/toeither/to either/","commit_id":"814c8784cc165c1a2b5568ceaec7c18aa64f67f5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2257c24d1bcf78f1585039ac4705cedf9000845a","unresolved":false,"context_lines":[{"line_number":4537,"context_line":"                                   \u0027 \"127.0.0.1\", the live migration will\u0027"},{"line_number":4538,"context_line":"                                   \u0027 succeed, but the VM will continue to\u0027"},{"line_number":4539,"context_line":"                                   \u0027 listen on the current addresses.\u0027))"},{"line_number":4540,"context_line":""},{"line_number":4541,"context_line":"                dom.migrateToURI(CONF.libvirt.live_migration_uri % dest,"},{"line_number":4542,"context_line":"                                 logical_sum,"},{"line_number":4543,"context_line":"                                 None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad9bd40_eb74a5ff","line":4540,"updated":"2014-05-06 14:43:53.000000000","message":"I\u0027m not sure I understand this warning. Isn\u0027t this saying \"this VM will be migrated, and everything will be the same as it is now\" ?","commit_id":"814c8784cc165c1a2b5568ceaec7c18aa64f67f5"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"5e8019eab68a6dbd4f111abf9df0c448d6aef7be","unresolved":false,"context_lines":[{"line_number":4537,"context_line":"                                   \u0027 \"127.0.0.1\", the live migration will\u0027"},{"line_number":4538,"context_line":"                                   \u0027 succeed, but the VM will continue to\u0027"},{"line_number":4539,"context_line":"                                   \u0027 listen on the current addresses.\u0027))"},{"line_number":4540,"context_line":""},{"line_number":4541,"context_line":"                dom.migrateToURI(CONF.libvirt.live_migration_uri % dest,"},{"line_number":4542,"context_line":"                                 logical_sum,"},{"line_number":4543,"context_line":"                                 None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad9bd40_b4967a4a","line":4540,"in_reply_to":"9ad9bd40_eb74a5ff","updated":"2014-05-06 16:06:35.000000000","message":"It\u0027s a \"things will work, but this might not be what you\u0027re expecting to happen\" kind of message -- if the operator is expecting the address to change and it doesn\u0027t, this could be an issue.  However, the migration will still go through since the VM is set to listen currently on 0.0.0.0.","commit_id":"814c8784cc165c1a2b5568ceaec7c18aa64f67f5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"e2524c031ffb4d6f606d37048c9835a240a4a3c5","unresolved":false,"context_lines":[{"line_number":4502,"context_line":"                                      None)"},{"line_number":4503,"context_line":""},{"line_number":4504,"context_line":"            if migratable_flag is None or listen_addrs is None:"},{"line_number":4505,"context_line":"                local_addrs \u003d (\u00270.0.0.0\u0027, \u0027127.0.0.1\u0027)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"                local_vnc \u003d CONF.vncserver_listen in local_addrs"},{"line_number":4508,"context_line":"                local_spice \u003d CONF.spice.server_listen in local_addrs"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_5bc38d56","line":4505,"updated":"2014-06-04 16:23:54.000000000","message":"IPv6 too please!   \u0027::\u0027 and \u0027::1\u0027  and mention it in the messages below.","commit_id":"74a4621b3504e8eb682fa50c310cf69cfdfcf1a0"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"249232ea6ebfb1d393b0e91385cc92b6b3529ca7","unresolved":false,"context_lines":[{"line_number":4502,"context_line":"                                      None)"},{"line_number":4503,"context_line":""},{"line_number":4504,"context_line":"            if migratable_flag is None or listen_addrs is None:"},{"line_number":4505,"context_line":"                local_addrs \u003d (\u00270.0.0.0\u0027, \u0027127.0.0.1\u0027)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"                local_vnc \u003d CONF.vncserver_listen in local_addrs"},{"line_number":4508,"context_line":"                local_spice \u003d CONF.spice.server_listen in local_addrs"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_caeb4876","line":4505,"in_reply_to":"1ae5cdf2_5bc38d56","updated":"2014-06-04 17:42:31.000000000","message":"Done","commit_id":"74a4621b3504e8eb682fa50c310cf69cfdfcf1a0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"4a7996c35badd290c8e419940142434d428bf005","unresolved":false,"context_lines":[{"line_number":4498,"context_line":"                if listen_tag is not None:"},{"line_number":4499,"context_line":"                    listen_tag.set(\u0027address\u0027, listen_addrs[\u0027spice\u0027])"},{"line_number":4500,"context_line":"                if dev.get(\u0027listen\u0027) is not None:"},{"line_number":4501,"context_line":"                    dev.set(\u0027listen\u0027, listen_addrs[\u0027spice\u0027])"},{"line_number":4502,"context_line":""},{"line_number":4503,"context_line":"        return etree.tostring(xml_doc)"},{"line_number":4504,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_fef6028e","line":4501,"updated":"2014-06-04 19:58:53.000000000","message":"Lines 4498-4501 duplicate lines 4493-4496, you can avoid all that if you just have if gr_type in (\u0027vnc\u0027, \u0027spice\u0027) and then use gr_type as index.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"5fc634cea214fdbbbcd19725e531bdc23a01b86f","unresolved":false,"context_lines":[{"line_number":4498,"context_line":"                if listen_tag is not None:"},{"line_number":4499,"context_line":"                    listen_tag.set(\u0027address\u0027, listen_addrs[\u0027spice\u0027])"},{"line_number":4500,"context_line":"                if dev.get(\u0027listen\u0027) is not None:"},{"line_number":4501,"context_line":"                    dev.set(\u0027listen\u0027, listen_addrs[\u0027spice\u0027])"},{"line_number":4502,"context_line":""},{"line_number":4503,"context_line":"        return etree.tostring(xml_doc)"},{"line_number":4504,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_170ff588","line":4501,"in_reply_to":"1ae5cdf2_fef6028e","updated":"2014-06-05 15:44:08.000000000","message":"Done","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"4a7996c35badd290c8e419940142434d428bf005","unresolved":false,"context_lines":[{"line_number":4533,"context_line":""},{"line_number":4534,"context_line":"            dom \u003d self._lookup_by_name(instance[\"name\"])"},{"line_number":4535,"context_line":""},{"line_number":4536,"context_line":"            pre_live_migrate_data \u003d migrate_data.get("},{"line_number":4537,"context_line":"                                        \u0027pre_live_migration_result\u0027, {})"},{"line_number":4538,"context_line":"            listen_addrs \u003d pre_live_migrate_data.get(\u0027graphics_listen_addrs\u0027)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_be855a08","line":4536,"updated":"2014-06-04 19:58:53.000000000","message":"migrate_data is not guaranteed to be a dict, its default value is None","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"98a7f5f3c9c12fe1e5d634852f27c0d2b44cc039","unresolved":false,"context_lines":[{"line_number":4533,"context_line":""},{"line_number":4534,"context_line":"            dom \u003d self._lookup_by_name(instance[\"name\"])"},{"line_number":4535,"context_line":""},{"line_number":4536,"context_line":"            pre_live_migrate_data \u003d migrate_data.get("},{"line_number":4537,"context_line":"                                        \u0027pre_live_migration_result\u0027, {})"},{"line_number":4538,"context_line":"            listen_addrs \u003d pre_live_migrate_data.get(\u0027graphics_listen_addrs\u0027)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_2943a8af","line":4536,"in_reply_to":"1ae5cdf2_97522533","updated":"2014-06-08 21:25:30.000000000","message":"That may happen to be the case right now, but the method signature states that it\u0027s an optional named parameter, which means it would be perfectly reasonable for someone to come along and introduce a change has _live_migration() called without passing migrate_data.\n\nGenerally, I don\u0027t think it\u0027s safe to make undocumented assumptions about a line of code 4K lines down a different file and several levels away in the call stack.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"5fc634cea214fdbbbcd19725e531bdc23a01b86f","unresolved":false,"context_lines":[{"line_number":4533,"context_line":""},{"line_number":4534,"context_line":"            dom \u003d self._lookup_by_name(instance[\"name\"])"},{"line_number":4535,"context_line":""},{"line_number":4536,"context_line":"            pre_live_migrate_data \u003d migrate_data.get("},{"line_number":4537,"context_line":"                                        \u0027pre_live_migration_result\u0027, {})"},{"line_number":4538,"context_line":"            listen_addrs \u003d pre_live_migrate_data.get(\u0027graphics_listen_addrs\u0027)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_97522533","line":4536,"in_reply_to":"1ae5cdf2_be855a08","updated":"2014-06-05 15:44:08.000000000","message":"actually, migrate_data is always a dict -- see compute/manager.py:4573","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"98a7f5f3c9c12fe1e5d634852f27c0d2b44cc039","unresolved":false,"context_lines":[{"line_number":4535,"context_line":""},{"line_number":4536,"context_line":"            pre_live_migrate_data \u003d migrate_data.get("},{"line_number":4537,"context_line":"                                        \u0027pre_live_migration_result\u0027, {})"},{"line_number":4538,"context_line":"            listen_addrs \u003d pre_live_migrate_data.get(\u0027graphics_listen_addrs\u0027)"},{"line_number":4539,"context_line":""},{"line_number":4540,"context_line":"            migratable_flag \u003d getattr(libvirt, \u0027VIR_DOMAIN_XML_MIGRATABLE\u0027,"},{"line_number":4541,"context_line":"                                      None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_ffe69be7","line":4538,"updated":"2014-06-08 21:25:30.000000000","message":"Please consider renaming listen_addrs to dest_listen_addrs.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"4a7996c35badd290c8e419940142434d428bf005","unresolved":false,"context_lines":[{"line_number":4541,"context_line":"                                      None)"},{"line_number":4542,"context_line":""},{"line_number":4543,"context_line":"            if migratable_flag is None or listen_addrs is None:"},{"line_number":4544,"context_line":"                local_addrs \u003d (\u00270.0.0.0\u0027, \u0027127.0.0.1\u0027, \u0027::\u0027, \u0027::1\u0027)"},{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"                local_vnc \u003d CONF.vncserver_listen in local_addrs"},{"line_number":4547,"context_line":"                local_spice \u003d CONF.spice.server_listen in local_addrs"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_5ebc56dc","line":4544,"updated":"2014-06-04 19:58:53.000000000","message":"This list should be extracted into a utility function so that it can be reused consistently, instead of being hardcoded here.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"98a7f5f3c9c12fe1e5d634852f27c0d2b44cc039","unresolved":false,"context_lines":[{"line_number":4541,"context_line":"                                      None)"},{"line_number":4542,"context_line":""},{"line_number":4543,"context_line":"            if migratable_flag is None or listen_addrs is None:"},{"line_number":4544,"context_line":"                local_addrs \u003d (\u00270.0.0.0\u0027, \u0027127.0.0.1\u0027, \u0027::\u0027, \u0027::1\u0027)"},{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"                local_vnc \u003d CONF.vncserver_listen in local_addrs"},{"line_number":4547,"context_line":"                local_spice \u003d CONF.spice.server_listen in local_addrs"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_294808b2","line":4544,"in_reply_to":"1ae5cdf2_57233dbc","updated":"2014-06-08 21:25:30.000000000","message":"Even if it were so, it would improve readability of your code if you have constants nicely abstracted away instead of having them harcoded in the middle of business logic.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"5fc634cea214fdbbbcd19725e531bdc23a01b86f","unresolved":false,"context_lines":[{"line_number":4541,"context_line":"                                      None)"},{"line_number":4542,"context_line":""},{"line_number":4543,"context_line":"            if migratable_flag is None or listen_addrs is None:"},{"line_number":4544,"context_line":"                local_addrs \u003d (\u00270.0.0.0\u0027, \u0027127.0.0.1\u0027, \u0027::\u0027, \u0027::1\u0027)"},{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"                local_vnc \u003d CONF.vncserver_listen in local_addrs"},{"line_number":4547,"context_line":"                local_spice \u003d CONF.spice.server_listen in local_addrs"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_57233dbc","line":4544,"in_reply_to":"1ae5cdf2_5ebc56dc","updated":"2014-06-05 15:44:08.000000000","message":"I\u0027m not sure if I agree with this -- this is the only place it\u0027s used AFAIK.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"98a7f5f3c9c12fe1e5d634852f27c0d2b44cc039","unresolved":false,"context_lines":[{"line_number":4547,"context_line":"                local_spice \u003d CONF.spice.server_listen in local_addrs"},{"line_number":4548,"context_line":""},{"line_number":4549,"context_line":"                if ((CONF.vnc_enabled and not local_vnc) or"},{"line_number":4550,"context_line":"                    (CONF.spice.enabled and not local_spice)):"},{"line_number":4551,"context_line":""},{"line_number":4552,"context_line":"                    raise exception.MigrationError("},{"line_number":4553,"context_line":"                            _(\u0027Your libvirt version does not support the\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_df08ff93","line":4550,"updated":"2014-06-08 21:25:30.000000000","message":"If you had a utility function to check whether an IP address is local, you wouldn\u0027t have had to create single-use variables above and could just use that function on CONF.vncserver_listen and CONF.spice.server_listen.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"98a7f5f3c9c12fe1e5d634852f27c0d2b44cc039","unresolved":false,"context_lines":[{"line_number":4565,"context_line":"                    dest_local_spice \u003d listen_addrs[\u0027spice\u0027] in local_addrs"},{"line_number":4566,"context_line":""},{"line_number":4567,"context_line":"                    if ((CONF.vnc_enabled and not dest_local_vnc) or"},{"line_number":4568,"context_line":"                        (CONF.spice.enabled and not dest_local_spice)):"},{"line_number":4569,"context_line":""},{"line_number":4570,"context_line":"                        LOG.warn(_(\u0027Your libvirt version does not support the\u0027"},{"line_number":4571,"context_line":"                                   \u0027 VIR_DOMAIN_XML_MIGRATABLE flag, and the \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_3ff7238e","line":4568,"updated":"2014-06-08 21:25:30.000000000","message":"Same here: utility function would allow to make this condition easier to read.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"4a7996c35badd290c8e419940142434d428bf005","unresolved":false,"context_lines":[{"line_number":4578,"context_line":"                                   \u0027 address (127.0.0.1 or ::1), the live\u0027"},{"line_number":4579,"context_line":"                                   \u0027 migration will succeed, but the VM will\u0027"},{"line_number":4580,"context_line":"                                   \u0027 continue to listen on the current\u0027"},{"line_number":4581,"context_line":"                                   \u0027 addresses.\u0027))"},{"line_number":4582,"context_line":""},{"line_number":4583,"context_line":"                dom.migrateToURI(CONF.libvirt.live_migration_uri % dest,"},{"line_number":4584,"context_line":"                                 logical_sum,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_fec8c256","line":4581,"updated":"2014-06-04 19:58:53.000000000","message":"Lines 4544-4581 should be extracted into a new method, the only part of local context that you use here is migrate_data.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"5fc634cea214fdbbbcd19725e531bdc23a01b86f","unresolved":false,"context_lines":[{"line_number":4578,"context_line":"                                   \u0027 address (127.0.0.1 or ::1), the live\u0027"},{"line_number":4579,"context_line":"                                   \u0027 migration will succeed, but the VM will\u0027"},{"line_number":4580,"context_line":"                                   \u0027 continue to listen on the current\u0027"},{"line_number":4581,"context_line":"                                   \u0027 addresses.\u0027))"},{"line_number":4582,"context_line":""},{"line_number":4583,"context_line":"                dom.migrateToURI(CONF.libvirt.live_migration_uri % dest,"},{"line_number":4584,"context_line":"                                 logical_sum,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_570a5d26","line":4581,"in_reply_to":"1ae5cdf2_fec8c256","updated":"2014-06-05 15:44:08.000000000","message":"Done","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"4a7996c35badd290c8e419940142434d428bf005","unresolved":false,"context_lines":[{"line_number":4722,"context_line":"        res_data[\u0027graphics_listen_addrs\u0027][\u0027vnc\u0027] \u003d CONF.vncserver_listen"},{"line_number":4723,"context_line":"        res_data[\u0027graphics_listen_addrs\u0027][\u0027spice\u0027] \u003d CONF.spice.server_listen"},{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        return res_data"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"    def _create_images_and_backing(self, context, instance, instance_dir,"},{"line_number":4728,"context_line":"                                   disk_info_json):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_fe24420e","line":4725,"updated":"2014-06-04 19:58:53.000000000","message":"Where is this return value used?","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"98a7f5f3c9c12fe1e5d634852f27c0d2b44cc039","unresolved":false,"context_lines":[{"line_number":4722,"context_line":"        res_data[\u0027graphics_listen_addrs\u0027][\u0027vnc\u0027] \u003d CONF.vncserver_listen"},{"line_number":4723,"context_line":"        res_data[\u0027graphics_listen_addrs\u0027][\u0027spice\u0027] \u003d CONF.spice.server_listen"},{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        return res_data"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"    def _create_images_and_backing(self, context, instance, instance_dir,"},{"line_number":4728,"context_line":"                                   disk_info_json):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_5ff4ef86","line":4725,"in_reply_to":"1ae5cdf2_37d4f1ea","updated":"2014-06-08 21:25:30.000000000","message":"Done","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"5fc634cea214fdbbbcd19725e531bdc23a01b86f","unresolved":false,"context_lines":[{"line_number":4722,"context_line":"        res_data[\u0027graphics_listen_addrs\u0027][\u0027vnc\u0027] \u003d CONF.vncserver_listen"},{"line_number":4723,"context_line":"        res_data[\u0027graphics_listen_addrs\u0027][\u0027spice\u0027] \u003d CONF.spice.server_listen"},{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        return res_data"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"    def _create_images_and_backing(self, context, instance, instance_dir,"},{"line_number":4728,"context_line":"                                   disk_info_json):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_37d4f1ea","line":4725,"in_reply_to":"1ae5cdf2_fe24420e","updated":"2014-06-05 15:44:08.000000000","message":"right above.  See line 4538.","commit_id":"6ccf9f182f796ea3262dcbb4bf7e89677b63e7b0"}]}
