)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a3523a287092dc856a1f56eb65913be8bae64165","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lee Yarwood \u003clyarwood@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-08-08 13:11:36 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: Always escapte IPv6 addresses when used in migration URI"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If IPv6 is passed to URI it should be wrapped within square brackets."},{"line_number":10,"context_line":"This patch detects IPv6 to modify URI. Domain name, IPv4 or already"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_7714f8a0","line":7,"range":{"start_line":7,"start_character":16,"end_line":7,"end_character":23},"updated":"2018-08-08 15:20:29.000000000","message":"escape","commit_id":"336dd4869a28290140c04b642cf18d6a7100283c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d1609c260104ce1c973e32c93a724f9e4af85607","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If IPv6 is passed to URI it should be wrapped within square brackets."},{"line_number":10,"context_line":"This patch detects IPv6 to modify URI. Domain name, IPv4 or already"},{"line_number":11,"context_line":"bracketed IPv6 address will pass as is."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1201db996ea6ceaebd49479b298d74585a78b006"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_ad5d6aea","line":12,"updated":"2018-08-08 12:24:18.000000000","message":"Please report a bug we will probably backport that change","commit_id":"336dd4869a28290140c04b642cf18d6a7100283c"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d1609c260104ce1c973e32c93a724f9e4af85607","unresolved":false,"context_lines":[{"line_number":9959,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":9960,"context_line":"            self.assertEqual(forced_uri % dest, drvr._live_migration_uri(dest))"},{"line_number":9961,"context_line":""},{"line_number":9962,"context_line":"    def test_live_migration_uri_with_ipv6_escaped(self):"},{"line_number":9963,"context_line":"        ipv6_dest \u003d \"fe80:b33f::a8bb:ccff:fedd:eeff\""},{"line_number":9964,"context_line":"        ipv6_dest_escaped \u003d \"[fe80:b33f::a8bb:ccff:fedd:eeff]\""},{"line_number":9965,"context_line":"        ipv4_dest \u003d \"1.2.3.4\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4d9856bf","line":9962,"range":{"start_line":9962,"start_character":37,"end_line":9962,"end_character":50},"updated":"2018-08-08 12:24:18.000000000","message":"nit: your are not only asserting ipv6 in this test :)","commit_id":"336dd4869a28290140c04b642cf18d6a7100283c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d1609c260104ce1c973e32c93a724f9e4af85607","unresolved":false,"context_lines":[{"line_number":9966,"context_line":"        hostname_dest \u003d \"foo.example.com\""},{"line_number":9967,"context_line":""},{"line_number":9968,"context_line":"        uri \u003d \u0027foo://%s/bar\u0027"},{"line_number":9969,"context_line":"        expected_ipv6_uri \u003d \u0027foo://[%s]/bar\u0027 % ipv6_dest"},{"line_number":9970,"context_line":"        expected_ipv6_uri_escaped \u003d uri % ipv6_dest_escaped"},{"line_number":9971,"context_line":""},{"line_number":9972,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_0d557ec6","line":9969,"updated":"2018-08-08 12:24:18.000000000","message":"To have the test well asserting that all is working it would have been interesting to see the behavior with a port.\n\n  foo://[::1]:8081/bar\n\nCan you add that assertion?","commit_id":"336dd4869a28290140c04b642cf18d6a7100283c"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b7386972252245c2312cb8b8a594906cfbbc917f","unresolved":false,"context_lines":[{"line_number":9928,"context_line":"            self.assertEqual(etree.tostring(target_xml, encoding\u003d\u0027unicode\u0027),"},{"line_number":9929,"context_line":"                             etree.tostring(config, encoding\u003d\u0027unicode\u0027))"},{"line_number":9930,"context_line":""},{"line_number":9931,"context_line":"    def test_live_migration_uri(self):"},{"line_number":9932,"context_line":"        addresses \u003d (\u0027127.0.0.1\u0027, \u0027127.0.0.1:4444\u0027,"},{"line_number":9933,"context_line":"                   \u0027::1\u0027, \u00270:0:0:0:0:0:0:1\u0027,"},{"line_number":9934,"context_line":"                   \u0027[::1]:4444\u0027, \u0027[0:0:0:0:0:0:0:1]:4444\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_42ed7c89","line":9931,"range":{"start_line":9931,"start_character":0,"end_line":9931,"end_character":38},"updated":"2018-08-08 16:10:14.000000000","message":"Why did you not keep these new tests in a separate method that compliments the existing tests?","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"e9ee484bce7c35117b20ea2481f6e1c89d9f26df","unresolved":false,"context_lines":[{"line_number":9928,"context_line":"            self.assertEqual(etree.tostring(target_xml, encoding\u003d\u0027unicode\u0027),"},{"line_number":9929,"context_line":"                             etree.tostring(config, encoding\u003d\u0027unicode\u0027))"},{"line_number":9930,"context_line":""},{"line_number":9931,"context_line":"    def test_live_migration_uri(self):"},{"line_number":9932,"context_line":"        addresses \u003d (\u0027127.0.0.1\u0027, \u0027127.0.0.1:4444\u0027,"},{"line_number":9933,"context_line":"                   \u0027::1\u0027, \u00270:0:0:0:0:0:0:1\u0027,"},{"line_number":9934,"context_line":"                   \u0027[::1]:4444\u0027, \u0027[0:0:0:0:0:0:0:1]:4444\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_4b41140b","line":9931,"range":{"start_line":9931,"start_character":0,"end_line":9931,"end_character":38},"in_reply_to":"3f79a3b5_42ed7c89","updated":"2018-08-08 20:55:11.000000000","message":"Added as separate test in next patch set. Thank you.","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b7386972252245c2312cb8b8a594906cfbbc917f","unresolved":false,"context_lines":[{"line_number":9944,"context_line":"        )"},{"line_number":9945,"context_line":""},{"line_number":9946,"context_line":"        for dest in addresses:"},{"line_number":9947,"context_line":"            if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":9948,"context_line":"                dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":9949,"context_line":"            for hyperv, uri in hypervisor_uri_map:"},{"line_number":9950,"context_line":"                self.flags(virt_type\u003dhyperv, group\u003d\u0027libvirt\u0027)"},{"line_number":9951,"context_line":"                drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_e2da88e7","line":9948,"range":{"start_line":9947,"start_character":0,"end_line":9948,"end_character":54},"updated":"2018-08-08 16:10:14.000000000","message":"I\u0027d define the expected URIs statically instead of duplicating these calls to netutils, otherwise you\u0027re just verifying that the output matches with the same input.","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"e9ee484bce7c35117b20ea2481f6e1c89d9f26df","unresolved":false,"context_lines":[{"line_number":9944,"context_line":"        )"},{"line_number":9945,"context_line":""},{"line_number":9946,"context_line":"        for dest in addresses:"},{"line_number":9947,"context_line":"            if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":9948,"context_line":"                dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":9949,"context_line":"            for hyperv, uri in hypervisor_uri_map:"},{"line_number":9950,"context_line":"                self.flags(virt_type\u003dhyperv, group\u003d\u0027libvirt\u0027)"},{"line_number":9951,"context_line":"                drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_6b44101c","line":9948,"range":{"start_line":9947,"start_character":0,"end_line":9948,"end_character":54},"in_reply_to":"3f79a3b5_e2da88e7","updated":"2018-08-08 20:55:11.000000000","message":"Removed oslo_netutils and assigned statically in next patchset","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b7386972252245c2312cb8b8a594906cfbbc917f","unresolved":false,"context_lines":[{"line_number":10007,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10008,"context_line":"        self.assertEqual(\u0027tcp://%s\u0027 % dest, drvr._migrate_uri(dest))"},{"line_number":10009,"context_line":""},{"line_number":10010,"context_line":"    def test_migrate_uri_forced_live_migration_inboud_addr(self):"},{"line_number":10011,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":10012,"context_line":""},{"line_number":10013,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_c2f8ac4a","line":10010,"range":{"start_line":10010,"start_character":8,"end_line":10010,"end_character":58},"updated":"2018-08-08 16:10:14.000000000","message":"Again, I\u0027d write a new test for this change.","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"e9ee484bce7c35117b20ea2481f6e1c89d9f26df","unresolved":false,"context_lines":[{"line_number":10007,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10008,"context_line":"        self.assertEqual(\u0027tcp://%s\u0027 % dest, drvr._migrate_uri(dest))"},{"line_number":10009,"context_line":""},{"line_number":10010,"context_line":"    def test_migrate_uri_forced_live_migration_inboud_addr(self):"},{"line_number":10011,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":10012,"context_line":""},{"line_number":10013,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_2b461823","line":10010,"range":{"start_line":10010,"start_character":8,"end_line":10010,"end_character":58},"in_reply_to":"3f79a3b5_c2f8ac4a","updated":"2018-08-08 20:55:11.000000000","message":"Added separated test in next patchset. Thank you","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"0e2c6e6aa106a3ed19f0d2fd5cda3932579c2a52","unresolved":false,"context_lines":[{"line_number":10011,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":10012,"context_line":""},{"line_number":10013,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10014,"context_line":"        addresses \u003d (\u0027127.0.0.1\u0027, \u0027127.0.0.1:4444\u0027,"},{"line_number":10015,"context_line":"                   \u0027::1\u0027, \u00270:0:0:0:0:0:0:1\u0027,"},{"line_number":10016,"context_line":"                   \u0027[::1]:4444\u0027, \u0027[0:0:0:0:0:0:0:1]:4444\u0027,"},{"line_number":10017,"context_line":"                   u\u0027127.0.0.1\u0027, u\u0027::1\u0027, u\u0027destination\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_a81c716a","line":10014,"range":{"start_line":10014,"start_character":34,"end_line":10014,"end_character":50},"updated":"2018-08-08 17:44:43.000000000","message":"NB including a port isn\u0027t documented behaviour. Will be stricter about this if/when https://review.openstack.org/456573 lands.","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"e9ee484bce7c35117b20ea2481f6e1c89d9f26df","unresolved":false,"context_lines":[{"line_number":10011,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":10012,"context_line":""},{"line_number":10013,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10014,"context_line":"        addresses \u003d (\u0027127.0.0.1\u0027, \u0027127.0.0.1:4444\u0027,"},{"line_number":10015,"context_line":"                   \u0027::1\u0027, \u00270:0:0:0:0:0:0:1\u0027,"},{"line_number":10016,"context_line":"                   \u0027[::1]:4444\u0027, \u0027[0:0:0:0:0:0:0:1]:4444\u0027,"},{"line_number":10017,"context_line":"                   u\u0027127.0.0.1\u0027, u\u0027::1\u0027, u\u0027destination\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_4b5a74f3","line":10014,"range":{"start_line":10014,"start_character":34,"end_line":10014,"end_character":50},"in_reply_to":"3f79a3b5_a81c716a","updated":"2018-08-08 20:55:11.000000000","message":"Ahh, ok","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":27336,"name":"XiaojueGuan","email":"xiaojueguan@gmail.com","username":"XiaojueGuan"},"change_message_id":"5d6b9aa2cf79dd23dc86de1a566ec8c9148b39a8","unresolved":false,"context_lines":[{"line_number":9954,"context_line":"                                      dest)"},{"line_number":9955,"context_line":""},{"line_number":9956,"context_line":"    def test_live_migration_uri_ipv6(self):"},{"line_number":9957,"context_line":"        addresses \u003d (\u0027::1\u0027, \u00270:0:0:0:0:0:0:1\u0027, u\u0027::1\u0027)"},{"line_number":9958,"context_line":""},{"line_number":9959,"context_line":"        hypervisor_uri_map \u003d ("},{"line_number":9960,"context_line":"            (\u0027xen\u0027, \u0027xenmigr://[%s]/system\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_60e5fba7","line":9957,"range":{"start_line":9957,"start_character":46,"end_line":9957,"end_character":53},"updated":"2018-08-09 13:15:54.000000000","message":"why only here add a u","commit_id":"2158f1bf43ee948643820768bc995e482a67a3a3"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"e34e83d14cbf514e1901b93c5352e65df6df79fb","unresolved":false,"context_lines":[{"line_number":9954,"context_line":"                                      dest)"},{"line_number":9955,"context_line":""},{"line_number":9956,"context_line":"    def test_live_migration_uri_ipv6(self):"},{"line_number":9957,"context_line":"        addresses \u003d (\u0027::1\u0027, \u00270:0:0:0:0:0:0:1\u0027, u\u0027::1\u0027)"},{"line_number":9958,"context_line":""},{"line_number":9959,"context_line":"        hypervisor_uri_map \u003d ("},{"line_number":9960,"context_line":"            (\u0027xen\u0027, \u0027xenmigr://[%s]/system\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_0071a7e0","line":9957,"range":{"start_line":9957,"start_character":46,"end_line":9957,"end_character":53},"in_reply_to":"3f79a3b5_60e5fba7","updated":"2018-08-09 13:17:48.000000000","message":"it\u0027s the same test to be sure unicode works the same way.","commit_id":"2158f1bf43ee948643820768bc995e482a67a3a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd12e636438073576da8ccd388a231a7e99d9821","unresolved":false,"context_lines":[{"line_number":9926,"context_line":"        for dest in addresses:"},{"line_number":9927,"context_line":"            for hyperv, uri in hypervisor_uri_map:"},{"line_number":9928,"context_line":"                self.flags(virt_type\u003dhyperv, group\u003d\u0027libvirt\u0027)"},{"line_number":9929,"context_line":"                drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":9930,"context_line":"                if uri is not None:"},{"line_number":9931,"context_line":"                    uri \u003d uri % dest"},{"line_number":9932,"context_line":"                    self.assertEqual(uri, drvr._live_migration_uri(dest))"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_deeffc84","line":9929,"range":{"start_line":9929,"start_character":16,"end_line":9929,"end_character":78},"updated":"2018-08-22 12:48:52.000000000","message":"I guess this isn\u0027t new, but it could be pulled out of the (now nested) loops.","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"919ccf691910a3e0bf5fdba58b7b4242b02c146c","unresolved":false,"context_lines":[{"line_number":9926,"context_line":"        for dest in addresses:"},{"line_number":9927,"context_line":"            for hyperv, uri in hypervisor_uri_map:"},{"line_number":9928,"context_line":"                self.flags(virt_type\u003dhyperv, group\u003d\u0027libvirt\u0027)"},{"line_number":9929,"context_line":"                drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":9930,"context_line":"                if uri is not None:"},{"line_number":9931,"context_line":"                    uri \u003d uri % dest"},{"line_number":9932,"context_line":"                    self.assertEqual(uri, drvr._live_migration_uri(dest))"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_e4334aaa","line":9929,"range":{"start_line":9929,"start_character":16,"end_line":9929,"end_character":78},"in_reply_to":"3f79a3b5_deeffc84","updated":"2018-08-22 12:55:13.000000000","message":"Done","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"61086c1922ad12a6afffff645553fd01eee6dfe0","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_34069788","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"updated":"2018-08-07 17:09:12.000000000","message":"can be a hostname","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"1171bb4b2ebf1c72b28116b854e2b2ce314a1cf0","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_349537e5","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"in_reply_to":"3f79a3b5_34069788","updated":"2018-08-07 17:20:45.000000000","message":"also should handle the case where dest is IPv6 but already begins/ends with []","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"30ab8df4e1b8bb4e74b722ca03f2e284f941b55d","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_3904404a","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"in_reply_to":"3f79a3b5_34069788","updated":"2018-08-08 09:58:17.000000000","message":"with try except it will pass","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1e2c1db886b52e0356cb452f51588e27aac3d598","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e7087329","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"in_reply_to":"3f79a3b5_349537e5","updated":"2018-08-07 17:36:16.000000000","message":"Ack to both comments, seems like wrapping the above in a try/except block would do both.","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"30ab8df4e1b8bb4e74b722ca03f2e284f941b55d","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_79eab875","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"in_reply_to":"3f79a3b5_349537e5","updated":"2018-08-08 09:58:17.000000000","message":"if IPv6 has brackets then it\u0027s not valid IPv6 address... However, in next patchset I added try except so it will pass","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"a96c06b124847675a663b0f0fed18ebca326305a","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_16603ba5","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"in_reply_to":"3f79a3b5_e7087329","updated":"2018-08-07 21:51:11.000000000","message":"Or use the netaddr validation method instead of a try block, with the suggestion of altering dest below i.e:\n\n    if netaddr.valid_ipv6(dest):\n        dest \u003d \u0027[\u0027 + dest + \u0027]\u0027","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"30ab8df4e1b8bb4e74b722ca03f2e284f941b55d","unresolved":false,"context_lines":[{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    @staticmethod"},{"line_number":733,"context_line":"    def _live_migration_uri(dest):"},{"line_number":734,"context_line":"        ip \u003d ipaddress.ip_address(dest)"},{"line_number":735,"context_line":"        if ip.version \u003d\u003d 4:"},{"line_number":736,"context_line":"            uris \u003d {"},{"line_number":737,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f9fd683a","line":734,"range":{"start_line":734,"start_character":34,"end_line":734,"end_character":38},"in_reply_to":"3f79a3b5_e7087329","updated":"2018-08-08 09:58:17.000000000","message":"thanks... it was fast draft. I have covered this in try except in next patchset","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1e2c1db886b52e0356cb452f51588e27aac3d598","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027,"},{"line_number":741,"context_line":"            }"},{"line_number":742,"context_line":"        else:"},{"line_number":743,"context_line":"            uris \u003d {"},{"line_number":744,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://[%s]/system\u0027,"},{"line_number":745,"context_line":"                \u0027qemu\u0027: \u0027qemu+%s://[%s]/system\u0027,"},{"line_number":746,"context_line":"                \u0027xen\u0027: \u0027xenmigr://[%s]/system\u0027,"},{"line_number":747,"context_line":"                \u0027parallels\u0027: \u0027parallels+tcp://[%s]/system\u0027,"},{"line_number":748,"context_line":"            }"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":751,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_94044b19","line":748,"range":{"start_line":743,"start_character":1,"end_line":748,"end_character":13},"updated":"2018-08-07 17:36:16.000000000","message":"How about modifying dest instead of duplicating all these uris? That would also cover the case with a configured live_migration_uri below.","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"30ab8df4e1b8bb4e74b722ca03f2e284f941b55d","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027,"},{"line_number":741,"context_line":"            }"},{"line_number":742,"context_line":"        else:"},{"line_number":743,"context_line":"            uris \u003d {"},{"line_number":744,"context_line":"                \u0027kvm\u0027: \u0027qemu+%s://[%s]/system\u0027,"},{"line_number":745,"context_line":"                \u0027qemu\u0027: \u0027qemu+%s://[%s]/system\u0027,"},{"line_number":746,"context_line":"                \u0027xen\u0027: \u0027xenmigr://[%s]/system\u0027,"},{"line_number":747,"context_line":"                \u0027parallels\u0027: \u0027parallels+tcp://[%s]/system\u0027,"},{"line_number":748,"context_line":"            }"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":751,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b995b0e6","line":748,"range":{"start_line":743,"start_character":1,"end_line":748,"end_character":13},"in_reply_to":"3f79a3b5_94044b19","updated":"2018-08-08 09:58:17.000000000","message":"+1","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"727a23d0f9eada170ed679c573d9906297e75fa4","unresolved":false,"context_lines":[{"line_number":743,"context_line":"            if ip.version \u003d\u003d 6:"},{"line_number":744,"context_line":"                dest \u003d \"[\" + dest + \"]\""},{"line_number":745,"context_line":"        except ValueError:"},{"line_number":746,"context_line":"            LOG.exception(\u0027%s is not valid IPv4 or IPv6 address.\u0027, dest)"},{"line_number":747,"context_line":"            pass"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_1736ebe7","line":746,"range":{"start_line":746,"start_character":12,"end_line":746,"end_character":72},"updated":"2018-08-08 10:50:46.000000000","message":"I repeat: it can be a hostname","commit_id":"cce583c76731314d5816b44cbef78165bacac6b2"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"727a23d0f9eada170ed679c573d9906297e75fa4","unresolved":false,"context_lines":[{"line_number":738,"context_line":"            \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027,"},{"line_number":739,"context_line":"        }"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        try:"},{"line_number":742,"context_line":"            ip \u003d ip_address(dest)"},{"line_number":743,"context_line":"            if ip.version \u003d\u003d 6:"},{"line_number":744,"context_line":"                dest \u003d \"[\" + dest + \"]\""},{"line_number":745,"context_line":"        except ValueError:"},{"line_number":746,"context_line":"            LOG.exception(\u0027%s is not valid IPv4 or IPv6 address.\u0027, dest)"},{"line_number":747,"context_line":"            pass"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":750,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_d79b93c6","line":747,"range":{"start_line":741,"start_character":0,"end_line":747,"end_character":16},"updated":"2018-08-08 10:50:46.000000000","message":"I repeat: you can replace all of this with:\n\n    if netaddr.valid_ipv6(dest):\n       dest \u003d \u0027[\u0027 + dest + \u0027]\u0027","commit_id":"cce583c76731314d5816b44cbef78165bacac6b2"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"6f4c17ff6f74f704a6071fa2129c7b50b14041dc","unresolved":false,"context_lines":[{"line_number":738,"context_line":"            \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027,"},{"line_number":739,"context_line":"        }"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        if netaddr.valid_ipv6(dest) is True:"},{"line_number":742,"context_line":"            dest \u003d \"[\" + dest + \"]\""},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f7bfafcd","line":741,"range":{"start_line":741,"start_character":35,"end_line":741,"end_character":43},"updated":"2018-08-08 11:03:36.000000000","message":"remove","commit_id":"870f217b83e6590691eb3e9552e3dffddd31f510"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"ab1bcf53e93ea17d02cce43e6b7d7eafe99330c1","unresolved":false,"context_lines":[{"line_number":738,"context_line":"            \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027,"},{"line_number":739,"context_line":"        }"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":742,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_9d21b5fe","line":741,"range":{"start_line":741,"start_character":8,"end_line":741,"end_character":45},"updated":"2018-08-08 17:23:14.000000000","message":"escape_ipv6 already does this","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"ab1bcf53e93ea17d02cce43e6b7d7eafe99330c1","unresolved":false,"context_lines":[{"line_number":761,"context_line":"    def _migrate_uri(dest):"},{"line_number":762,"context_line":"        uri \u003d None"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":765,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        # Only QEMU live migrations supports migrate-uri parameter"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_5d79ddf9","line":764,"range":{"start_line":764,"start_character":8,"end_line":764,"end_character":45},"updated":"2018-08-08 17:23:14.000000000","message":"escape_ipv6 already does this","commit_id":"c6d626a023365d175aa427f04d2ae3a4248cfdb8"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78539d64b5aee09b8e6d25aa7283fcdd2208344d","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        }"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":742,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":745,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_0f5d5d79","line":742,"range":{"start_line":742,"start_character":33,"end_line":742,"end_character":44},"updated":"2018-08-09 09:20:01.000000000","message":"https://github.com/openstack/oslo.utils/blob/master/oslo_utils/netutils.py#L220-L231 - Just to reiterate owalsh\u0027s previous comment we don\u0027t need the above is_valid_ipv6 call as this is already part of escape_ipv6.","commit_id":"5882c1bb21f2bb9bd9e5edcc572bc438e0915e2f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e28d781b431262d5be2c3c6a7d41dd128e0be803","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        }"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":742,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":745,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_ba44a5b8","line":742,"range":{"start_line":742,"start_character":33,"end_line":742,"end_character":44},"in_reply_to":"3f79a3b5_0f5d5d79","updated":"2018-08-09 10:03:07.000000000","message":"makes sense yes","commit_id":"5882c1bb21f2bb9bd9e5edcc572bc438e0915e2f"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"df31d20c41f320b413b98a651d0141abe452a110","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        }"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":742,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":745,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_f5d8ee7f","line":742,"range":{"start_line":742,"start_character":33,"end_line":742,"end_character":44},"in_reply_to":"3f79a3b5_ba44a5b8","updated":"2018-08-09 10:21:04.000000000","message":"done. Thank you folks!","commit_id":"5882c1bb21f2bb9bd9e5edcc572bc438e0915e2f"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78539d64b5aee09b8e6d25aa7283fcdd2208344d","unresolved":false,"context_lines":[{"line_number":762,"context_line":"        uri \u003d None"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":765,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        # Only QEMU live migrations supports migrate-uri parameter"},{"line_number":768,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_2f605932","line":765,"range":{"start_line":765,"start_character":33,"end_line":765,"end_character":44},"updated":"2018-08-09 09:20:01.000000000","message":"ditto.","commit_id":"5882c1bb21f2bb9bd9e5edcc572bc438e0915e2f"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"df31d20c41f320b413b98a651d0141abe452a110","unresolved":false,"context_lines":[{"line_number":762,"context_line":"        uri \u003d None"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        if oslo_netutils.is_valid_ipv6(dest):"},{"line_number":765,"context_line":"            dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        # Only QEMU live migrations supports migrate-uri parameter"},{"line_number":768,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_75d61e52","line":765,"range":{"start_line":765,"start_character":33,"end_line":765,"end_character":44},"in_reply_to":"3f79a3b5_2f605932","updated":"2018-08-09 10:21:04.000000000","message":"Done. Thank you folks.","commit_id":"5882c1bb21f2bb9bd9e5edcc572bc438e0915e2f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd12e636438073576da8ccd388a231a7e99d9821","unresolved":false,"context_lines":[{"line_number":61,"context_line":"from oslo_utils import excutils"},{"line_number":62,"context_line":"from oslo_utils import fileutils"},{"line_number":63,"context_line":"from oslo_utils import importutils"},{"line_number":64,"context_line":"from oslo_utils import netutils as oslo_netutils"},{"line_number":65,"context_line":"from oslo_utils import strutils"},{"line_number":66,"context_line":"from oslo_utils import timeutils"},{"line_number":67,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_9e0d0492","line":64,"range":{"start_line":64,"start_character":32,"end_line":64,"end_character":48},"updated":"2018-08-22 12:48:52.000000000","message":"nit: just the netutils import seems good enough","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"919ccf691910a3e0bf5fdba58b7b4242b02c146c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"from oslo_utils import excutils"},{"line_number":62,"context_line":"from oslo_utils import fileutils"},{"line_number":63,"context_line":"from oslo_utils import importutils"},{"line_number":64,"context_line":"from oslo_utils import netutils as oslo_netutils"},{"line_number":65,"context_line":"from oslo_utils import strutils"},{"line_number":66,"context_line":"from oslo_utils import timeutils"},{"line_number":67,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_8424d661","line":64,"range":{"start_line":64,"start_character":32,"end_line":64,"end_character":48},"in_reply_to":"3f79a3b5_9e0d0492","updated":"2018-08-22 12:55:13.000000000","message":"Done","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4bb7f4bb6c4168fb9a49577eac2c12f2ac1a2fd0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"from nova.virt.libvirt import vif as libvirt_vif"},{"line_number":123,"context_line":"from nova.virt.libvirt.volume import mount"},{"line_number":124,"context_line":"from nova.virt.libvirt.volume import remotefs"},{"line_number":125,"context_line":"from nova.virt import netutils"},{"line_number":126,"context_line":"from nova.volume import cinder"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"libvirt \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_c4bc0ede","line":125,"range":{"start_line":125,"start_character":0,"end_line":125,"end_character":30},"updated":"2018-08-22 12:58:00.000000000","message":"Oh I missed this. oslo_netutils it is I guess.","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd12e636438073576da8ccd388a231a7e99d9821","unresolved":false,"context_lines":[{"line_number":735,"context_line":"            \u0027xen\u0027: \u0027xenmigr://%s/system\u0027,"},{"line_number":736,"context_line":"            \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027,"},{"line_number":737,"context_line":"        }"},{"line_number":738,"context_line":"        dest \u003d oslo_netutils.escape_ipv6(dest)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":741,"context_line":"        # TODO(pkoniszewski): Remove fetching live_migration_uri in Pike"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_7ed588b6","line":738,"range":{"start_line":738,"start_character":29,"end_line":738,"end_character":40},"updated":"2018-08-22 12:48:52.000000000","message":"This will be OK on master, stable/rocky and stable/queens but not OK on stable/pike (if you plan on backporting this fix that far) because the minimum version constraint in pike for oslo.utils is 3.20.0 and this method was added in 3.29.0.\n\nAlternatively you could use nova.utils.safe_ip_format, or just rely on that in pike if you backport that far.","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"}],"releasenotes/notes/fix_ipv6_live_migration-bbcde8f3b7d17921.yaml":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7a6ba9191b0ab2bba47e1a356a1adf19051aebb4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add brackets for IPv6 addresses in URI to handle live migration properly"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_5d118151","line":3,"updated":"2018-08-13 13:43:39.000000000","message":"It would have been better to add context, which is libvirt and probably saying that the migration URI is now supporting destination host that is using IPv6.","commit_id":"2158f1bf43ee948643820768bc995e482a67a3a3"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"9c99ab448b295b11ab5f6905b425e22eec1d3aea","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add brackets for IPv6 addresses in URI to handle live migration properly"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_8d9de058","line":3,"in_reply_to":"3f79a3b5_24b02943","updated":"2018-08-22 09:27:23.000000000","message":"Thanks Sahid and Eric. Release note has been updated in next patchset.","commit_id":"2158f1bf43ee948643820768bc995e482a67a3a3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"53c34368e4ca99c9d00ceda3180f8491f9eb74c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add brackets for IPv6 addresses in URI to handle live migration properly"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_24b02943","line":3,"in_reply_to":"3f79a3b5_5d118151","updated":"2018-08-13 19:06:19.000000000","message":"Yeah, excellent point sahid.","commit_id":"2158f1bf43ee948643820768bc995e482a67a3a3"}],"releasenotes/notes/libvirt_fix_ipv6_live_migration-bbcde8f3b7d17921.yaml":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"825093456b9014ccc9890587a6980e09256ed26d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - libvirt: Add brackets for IPv6 IP addresses in URI to handle live migration properly"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_5ecf6c7e","line":3,"range":{"start_line":3,"start_character":3,"end_line":3,"end_character":12},"updated":"2018-08-22 12:05:26.000000000","message":"Not sure how that is going to be interpreted in YAML.\n\nWhat about just: A change has been introduced in libvirt driver to correctly handle IPv6 addresses for live migration.","commit_id":"fd0291dbab654ddbd8c5207ff296040ae83fd723"},{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"177b92f861f08b1fdc45cd4cf76b0a43968a8581","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - libvirt: Add brackets for IPv6 IP addresses in URI to handle live migration properly"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_fe8c3836","line":3,"range":{"start_line":3,"start_character":3,"end_line":3,"end_character":12},"in_reply_to":"3f79a3b5_5ecf6c7e","updated":"2018-08-22 12:09:01.000000000","message":"Done","commit_id":"fd0291dbab654ddbd8c5207ff296040ae83fd723"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd12e636438073576da8ccd388a231a7e99d9821","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - A change has been introduced in libvirt driver to correctly handle IPv6 addresses for live migration."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3f79a3b5_de137cb7","line":3,"updated":"2018-08-22 12:48:52.000000000","message":"We probably don\u0027t need a release note for this.","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"919ccf691910a3e0bf5fdba58b7b4242b02c146c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - A change has been introduced in libvirt driver to correctly handle IPv6 addresses for live migration."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3f79a3b5_44223e54","line":3,"in_reply_to":"3f79a3b5_c405eec3","updated":"2018-08-22 12:55:13.000000000","message":"Done","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6b9b9060c272957279b2373d379917204e2fad24","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - A change has been introduced in libvirt driver to correctly handle IPv6 addresses for live migration."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3f79a3b5_e4d7ca4a","line":3,"in_reply_to":"3f79a3b5_de137cb7","updated":"2018-08-22 12:50:24.000000000","message":"I guess Sahid asked for this, but I\u0027m not sure a release note is really needed.","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0ddd9c0062e4ef9ce7dd55bc961437442dd46d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - A change has been introduced in libvirt driver to correctly handle IPv6 addresses for live migration."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3f79a3b5_c405eec3","line":3,"in_reply_to":"3f79a3b5_e4d7ca4a","updated":"2018-08-22 12:53:22.000000000","message":"I guess I\u0027m OK with the release note if people want it advertised, but please wrap at 80 characters. Also, \"the libvirt driver\".","commit_id":"986a34f5492ffc3d1dae227bd9421e74ef7aca81"}],"requirements.txt":[{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"1171bb4b2ebf1c72b28116b854e2b2ce314a1cf0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futures\u003e\u003d3.0.0;python_version\u003d\u003d\u00272.7\u0027 or python_version\u003d\u003d\u00272.6\u0027 # PSF"},{"line_number":73,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_d4008337","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":44},"updated":"2018-08-07 17:20:45.000000000","message":"could use netaddr","commit_id":"38bd9e21e86e4f31e748054f72d14e5774864575"}]}
