)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ee4d843a1e3ef7000ec1ae2e1e0ad497baa6a20d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"way, an operator can set the \"virt_type\" flag without the need to check"},{"line_number":12,"context_line":"for each individual uri."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact: Changed the default valur of the \"live_migration_uri\" flag,"},{"line_number":15,"context_line":"that now is dependent on the \"virt_type\"."},{"line_number":16,"context_line":"Closes-Bug: #1298242"},{"line_number":17,"context_line":"Change-Id: Id54f7bdfa14a19da41da554b13ba9496ee525c71"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5afe65bd_773313ac","line":14,"updated":"2015-06-04 12:28:32.000000000","message":"typo issue:\n\ns/valur/value/","commit_id":"f3fc851f689defbe059cb2370b335da1cbdfac12"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"5deb3b895d920a88da613a760f81f236002e7c2c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"way, an operator can set the \"virt_type\" flag without the need to check"},{"line_number":12,"context_line":"for each individual uri."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact: Changed the default valur of the \"live_migration_uri\" flag,"},{"line_number":15,"context_line":"that now is dependent on the \"virt_type\"."},{"line_number":16,"context_line":"Closes-Bug: #1298242"},{"line_number":17,"context_line":"Change-Id: Id54f7bdfa14a19da41da554b13ba9496ee525c71"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5afe65bd_23a679ae","line":14,"in_reply_to":"5afe65bd_773313ac","updated":"2015-06-04 13:59:28.000000000","message":"Done","commit_id":"f3fc851f689defbe059cb2370b335da1cbdfac12"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"b4e53f1688ca0ad7da6d831edc70d13b18f2ddb2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"way, an operator can set the \"virt_type\" flag without the need to check"},{"line_number":12,"context_line":"for each individual uri."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact: Changed the default value of the \"live_migration_uri\" flag,"},{"line_number":15,"context_line":"that now is dependent on the \"virt_type\"."},{"line_number":16,"context_line":"Closes-Bug: #1298242"},{"line_number":17,"context_line":"Change-Id: Id54f7bdfa14a19da41da554b13ba9496ee525c71"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"ba63e191_649ac316","line":14,"updated":"2016-01-19 10:57:42.000000000","message":"You should add an upgrade release note, something like the one in I85b8016952cb02db206a3474af33bcfe661f748d","commit_id":"efc6cef6fdebcb7a365c002b4f228a7069c8712a"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"9240e30eff6cb87fdbd5360f96100e628df24b06","unresolved":false,"context_lines":[{"line_number":11,"context_line":"way, an operator can set the \"virt_type\" flag without the need to check"},{"line_number":12,"context_line":"for each individual uri."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact: Changed the default value of the \"live_migration_uri\" flag,"},{"line_number":15,"context_line":"that now is dependent on the \"virt_type\"."},{"line_number":16,"context_line":"Closes-Bug: #1298242"},{"line_number":17,"context_line":"Change-Id: Id54f7bdfa14a19da41da554b13ba9496ee525c71"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a68dd71_f25c1e7f","line":14,"in_reply_to":"ba63e191_649ac316","updated":"2016-01-27 10:45:24.000000000","message":"Done","commit_id":"efc6cef6fdebcb7a365c002b4f228a7069c8712a"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"b4e53f1688ca0ad7da6d831edc70d13b18f2ddb2","unresolved":false,"context_lines":[{"line_number":6664,"context_line":""},{"line_number":6665,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":6666,"context_line":"            self.assertEqual(forced_uri % dest, drvr._live_migration_uri(dest))"},{"line_number":6667,"context_line":"            self.flags(live_migration_uri\u003dold_uri, group\u003d\u0027libvirt\u0027)"},{"line_number":6668,"context_line":""},{"line_number":6669,"context_line":"    def test_update_volume_xml_no_serial(self):"},{"line_number":6670,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba63e191_a42c3bac","line":6667,"updated":"2016-01-19 10:57:42.000000000","message":"You don\u0027t need to do this last step, the ConfPatcher fixture adds a cleanup function to do it","commit_id":"efc6cef6fdebcb7a365c002b4f228a7069c8712a"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"9240e30eff6cb87fdbd5360f96100e628df24b06","unresolved":false,"context_lines":[{"line_number":6664,"context_line":""},{"line_number":6665,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":6666,"context_line":"            self.assertEqual(forced_uri % dest, drvr._live_migration_uri(dest))"},{"line_number":6667,"context_line":"            self.flags(live_migration_uri\u003dold_uri, group\u003d\u0027libvirt\u0027)"},{"line_number":6668,"context_line":""},{"line_number":6669,"context_line":"    def test_update_volume_xml_no_serial(self):"},{"line_number":6670,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a68dd71_72726e13","line":6667,"in_reply_to":"ba63e191_a42c3bac","updated":"2016-01-27 10:45:24.000000000","message":"Done","commit_id":"efc6cef6fdebcb7a365c002b4f228a7069c8712a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"97007688a04696a78913c0fc2b9462bdd5650c58","unresolved":false,"context_lines":[{"line_number":7041,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":7042,"context_line":"            if uri is not None:"},{"line_number":7043,"context_line":"                uri \u003d uri % dest"},{"line_number":7044,"context_line":"                self.assertEqual(uri, drvr._live_migration_uri(dest))"},{"line_number":7045,"context_line":"            else:"},{"line_number":7046,"context_line":"                self.assertRaises(exception.LiveMigrationURINotAvailable,"},{"line_number":7047,"context_line":"                                  drvr._live_migration_uri,"}],"source_content_type":"text/x-python","patch_set":26,"id":"dae33548_3900c365","line":7044,"updated":"2016-02-18 14:09:23.000000000","message":"Nit: I like using the third arg when we do multiple asserts like this.","commit_id":"3159c8fd5bea80c820e58bd38d96f5f8fe8f4503"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"97007688a04696a78913c0fc2b9462bdd5650c58","unresolved":false,"context_lines":[{"line_number":7049,"context_line":""},{"line_number":7050,"context_line":"    def test_live_migration_uri_forced(self):"},{"line_number":7051,"context_line":"        dest \u003d \u0027destination\u0027"},{"line_number":7052,"context_line":"        for hyperv in (\u0027kvm\u0027, \u0027xen\u0027):"},{"line_number":7053,"context_line":"            self.flags(virt_type\u003dhyperv, group\u003d\u0027libvirt\u0027)"},{"line_number":7054,"context_line":""},{"line_number":7055,"context_line":"            forced_uri \u003d \u0027foo://%s/bar\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"dae33548_f9177ba0","line":7052,"updated":"2016-02-18 14:09:23.000000000","message":"Nit: hyperv seems to suggest the microsoft product.","commit_id":"3159c8fd5bea80c820e58bd38d96f5f8fe8f4503"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"1724647c378c986c0ce5ee238dc6fba7d133b65e","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":592,"context_line":"        else:"},{"line_number":593,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":594,"context_line":"        return uri % dest"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def instance_exists(self, instance):"},{"line_number":597,"context_line":"        \"\"\"Efficient override of base instance_exists method.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_be15e8e5","line":594,"updated":"2015-06-04 11:09:32.000000000","message":"Don\u0027t we need to handle more cases here, like in the function above?","commit_id":"16cd530fc0f74c19ba25b606b13427fb0b572d3b"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"fd8e21923ab856860968d09bd44c00f26e196f46","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":592,"context_line":"        else:"},{"line_number":593,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":594,"context_line":"        return uri % dest"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def instance_exists(self, instance):"},{"line_number":597,"context_line":"        \"\"\"Efficient override of base instance_exists method.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_bee04897","line":594,"in_reply_to":"5afe65bd_be15e8e5","updated":"2015-06-04 11:19:49.000000000","message":"Good point, but according to https://libvirt.org/migration.html I only found that Xen and QUEMU drivers support live migration.\n\nI doubt about returning only a valid url for Xen or QEMU, and returning None or an empty string in any other case. However, since previously the url was set to the qemu one, I chose to return it.","commit_id":"16cd530fc0f74c19ba25b606b13427fb0b572d3b"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ee4d843a1e3ef7000ec1ae2e1e0ad497baa6a20d","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        return uri"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    @staticmethod"},{"line_number":589,"context_line":"    def _live_migration_uri(dest):"},{"line_number":590,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027xen\u0027:"},{"line_number":591,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":592,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_77e433e0","line":589,"updated":"2015-06-04 12:28:32.000000000","message":"please add test case to cover the new function.","commit_id":"f3fc851f689defbe059cb2370b335da1cbdfac12"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"5deb3b895d920a88da613a760f81f236002e7c2c","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        return uri"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    @staticmethod"},{"line_number":589,"context_line":"    def _live_migration_uri(dest):"},{"line_number":590,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027xen\u0027:"},{"line_number":591,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":592,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_6397d13a","line":589,"in_reply_to":"5afe65bd_77e433e0","updated":"2015-06-04 13:59:28.000000000","message":"Done","commit_id":"f3fc851f689defbe059cb2370b335da1cbdfac12"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"9a361f3a03d9f22f4fd2e5615cdad9b0cc937cfe","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":592,"context_line":"        else:"},{"line_number":593,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":594,"context_line":"        return uri % dest"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def instance_exists(self, instance):"},{"line_number":597,"context_line":"        \"\"\"Efficient override of base instance_exists method.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_d2b41536","line":594,"updated":"2015-06-04 12:40:39.000000000","message":"Maybe it\u0027s worth a comment here like:\n\n    NB: other virt drivers do not support live migration .\n\nJust to stop people from wondering...","commit_id":"f3fc851f689defbe059cb2370b335da1cbdfac12"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"5deb3b895d920a88da613a760f81f236002e7c2c","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":592,"context_line":"        else:"},{"line_number":593,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":594,"context_line":"        return uri % dest"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def instance_exists(self, instance):"},{"line_number":597,"context_line":"        \"\"\"Efficient override of base instance_exists method.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_83964d3d","line":594,"in_reply_to":"5afe65bd_d2b41536","updated":"2015-06-04 13:59:28.000000000","message":"Done","commit_id":"f3fc851f689defbe059cb2370b335da1cbdfac12"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"5e77f6ee396496f6203a0078e711b462e3029ffc","unresolved":false,"context_lines":[{"line_number":590,"context_line":"        # NOTE(aloga): Only Xen and QEMU support live migration"},{"line_number":591,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027xen\u0027:"},{"line_number":592,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027xen+tcp://%s/system\u0027"},{"line_number":593,"context_line":"        elif CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":594,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":595,"context_line":"        else:"},{"line_number":596,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_759387a4","line":593,"updated":"2015-06-05 03:09:17.000000000","message":"Maybe using hv_type.QEMU, hv_type.KVM, hv_type.XEN make sense, but I\u0027m not sure, waiting others comments.","commit_id":"10defb1f59ec29bedb5958162d8211b0f82ca885"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"0636cf1647777d4538c3654dbbd9d83d2220dc73","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    cfg.BoolOpt(\u0027use_usb_tablet\u0027,"},{"line_number":142,"context_line":"                default\u003dTrue,"},{"line_number":143,"context_line":"                help\u003d\u0027Sync virtual and real mouse cursors in Windows VMs\u0027),"},{"line_number":144,"context_line":"    cfg.StrOpt(\u0027live_migration_uri\u0027,"},{"line_number":145,"context_line":"               help\u003d\u0027Override the default libvirt live migration target URI \u0027"},{"line_number":146,"context_line":"                    \u0027(which is dependent on virt_type) \u0027"},{"line_number":147,"context_line":"                    \u0027(any included \"%s\" is replaced with \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_5acc2689","line":144,"updated":"2015-08-04 12:09:21.000000000","message":"Could we simply use option value interpolation here? (http://docs.openstack.org/developer/oslo.config/cfg.html#option-value-interpolation)\n\ne.g.:\n\n  cfg.StrOpt(\u0027live_migration_uri\u0027, default\u003d\u0027$virt_type+tcp://%s/system\u0027)\n\nvirt_type choices are already limited, so it must be ok.","commit_id":"16f624fd937b157eda8e3f3e6e310620f4d7152c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c188f7928839c4d1b486ff0000ca2a57f05fbd3a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    cfg.BoolOpt(\u0027use_usb_tablet\u0027,"},{"line_number":142,"context_line":"                default\u003dTrue,"},{"line_number":143,"context_line":"                help\u003d\u0027Sync virtual and real mouse cursors in Windows VMs\u0027),"},{"line_number":144,"context_line":"    cfg.StrOpt(\u0027live_migration_uri\u0027,"},{"line_number":145,"context_line":"               help\u003d\u0027Override the default libvirt live migration target URI \u0027"},{"line_number":146,"context_line":"                    \u0027(which is dependent on virt_type) \u0027"},{"line_number":147,"context_line":"                    \u0027(any included \"%s\" is replaced with \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_e3d44248","line":144,"in_reply_to":"1a4dcd0f_08fb667a","updated":"2015-08-28 06:45:45.000000000","message":"yea, looks like it doesn\u0027t work for this case.","commit_id":"16f624fd937b157eda8e3f3e6e310620f4d7152c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"18d48d0a93d5e3cc1bec9e2baa433c1095011c4d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    cfg.BoolOpt(\u0027use_usb_tablet\u0027,"},{"line_number":142,"context_line":"                default\u003dTrue,"},{"line_number":143,"context_line":"                help\u003d\u0027Sync virtual and real mouse cursors in Windows VMs\u0027),"},{"line_number":144,"context_line":"    cfg.StrOpt(\u0027live_migration_uri\u0027,"},{"line_number":145,"context_line":"               help\u003d\u0027Override the default libvirt live migration target URI \u0027"},{"line_number":146,"context_line":"                    \u0027(which is dependent on virt_type) \u0027"},{"line_number":147,"context_line":"                    \u0027(any included \"%s\" is replaced with \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_fecfe77c","line":144,"in_reply_to":"1a4dcd0f_5acc2689","updated":"2015-08-05 10:52:58.000000000","message":"Yep, sounds simpler.","commit_id":"16f624fd937b157eda8e3f3e6e310620f4d7152c"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"d096f2374952a74c525bff5dc8294fa11e0231fb","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    cfg.BoolOpt(\u0027use_usb_tablet\u0027,"},{"line_number":142,"context_line":"                default\u003dTrue,"},{"line_number":143,"context_line":"                help\u003d\u0027Sync virtual and real mouse cursors in Windows VMs\u0027),"},{"line_number":144,"context_line":"    cfg.StrOpt(\u0027live_migration_uri\u0027,"},{"line_number":145,"context_line":"               help\u003d\u0027Override the default libvirt live migration target URI \u0027"},{"line_number":146,"context_line":"                    \u0027(which is dependent on virt_type) \u0027"},{"line_number":147,"context_line":"                    \u0027(any included \"%s\" is replaced with \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_08fb667a","line":144,"in_reply_to":"1a4dcd0f_fecfe77c","updated":"2015-08-05 16:26:55.000000000","message":"The interpolation of virt_type cannot be used here, since it will produce the wrong uri for virt_type\u003d\"kvm\": \"kvm+tcp://%s%/system\" instead of the correct \"qemu+tcp://%s/system\".","commit_id":"16f624fd937b157eda8e3f3e6e310620f4d7152c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"649595d6aa7eccdd70d31897e9d548626a0b0ffa","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        elif CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":600,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            return"},{"line_number":603,"context_line":"        return uri % dest"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"    def instance_exists(self, instance):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_a64e536d","line":602,"updated":"2015-08-28 09:06:37.000000000","message":"Actually we should really raise an exception if no URI is availalble, instead of returning None. We could remove the multiple if branches by using a dict lookup too\n\n  DEFAULT_URIS \u003d {\n    \u0027kvm\u0027: \u0027qemu+tcp://%s/system\u0027,\n    \u0027qemu\u0027: \u0027qemu+tcp://%s/system\u0027,\n    \u0027xen\u0027: \u0027xen+tcp://%s/system\u0027,\n  }\n\n   uri \u003d CONF.libvirt.live_migration_uri or DEFAULT_URIS.get(CONF.libvirt.virt_type)\n   if uri is None:\n      raise NovaException(\"No live migration URI configured and no default available for %s\", CONF.libvirt.virt_type)\n\n   return uri % dest","commit_id":"16f624fd937b157eda8e3f3e6e310620f4d7152c"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"4d60ef8d5e648b6c2ac7beddac56f232a629193f","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        elif CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":600,"context_line":"            uri \u003d CONF.libvirt.live_migration_uri or \u0027qemu+tcp://%s/system\u0027"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            return"},{"line_number":603,"context_line":"        return uri % dest"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"    def instance_exists(self, instance):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_2d9df3bb","line":602,"in_reply_to":"da20952f_a64e536d","updated":"2015-08-31 07:50:31.000000000","message":"Yep, much better.","commit_id":"16f624fd937b157eda8e3f3e6e310620f4d7152c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f06b4f094833f1bfcf9d72a9c7cf4413a7ab2cdd","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    @staticmethod"},{"line_number":646,"context_line":"    def _live_migration_uri(dest):"},{"line_number":647,"context_line":"        # NOTE(aloga): Only Xen and QEMU support live migration"},{"line_number":648,"context_line":"        uris \u003d {"},{"line_number":649,"context_line":"            \u0027kvm\u0027: \u0027qemu+tcp://%s/system\u0027,"},{"line_number":650,"context_line":"            \u0027qemu\u0027: \u0027qemu+tcp://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_3f519836","line":647,"updated":"2015-08-31 09:34:15.000000000","message":"Perhaps you should to set real source instead of using \"NOTE(aloga)\". That can help future contributors to maintain that list.\n\nIn http://libvirt.org/migration.html I can see VMware in some cases but did not dig enough to be sure if that can be applied to Nova","commit_id":"62655a831d5f1d9e10167500538c78ab4cdbd454"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"af3fa13dfec7849733dff3927019d8aec37a0f2f","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    @staticmethod"},{"line_number":646,"context_line":"    def _live_migration_uri(dest):"},{"line_number":647,"context_line":"        # NOTE(aloga): Only Xen and QEMU support live migration"},{"line_number":648,"context_line":"        uris \u003d {"},{"line_number":649,"context_line":"            \u0027kvm\u0027: \u0027qemu+tcp://%s/system\u0027,"},{"line_number":650,"context_line":"            \u0027qemu\u0027: \u0027qemu+tcp://%s/system\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_90a533a3","line":647,"in_reply_to":"da20952f_3f519836","updated":"2015-08-31 10:41:03.000000000","message":"Done","commit_id":"62655a831d5f1d9e10167500538c78ab4cdbd454"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1dfe9e121b82379a6f2c020074d2f296cff7e75c","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":658,"context_line":"        uri \u003d CONF.libvirt.live_migration_uri or uris.get(virt_type)"},{"line_number":659,"context_line":"        if uri is None:"},{"line_number":660,"context_line":"            raise exception.LiveMigrationURINotAvailable(virt_type\u003dvirt_type)"},{"line_number":661,"context_line":"        return uri % dest"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def instance_exists(self, instance):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_4c72317e","line":660,"updated":"2015-09-21 15:48:40.000000000","message":"Only admin can ask for live migration so we can reasonable share \"virt_type\".","commit_id":"9896b73006e97868b60bd5fefa50a5c68250a13d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"b4e53f1688ca0ad7da6d831edc70d13b18f2ddb2","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        uris \u003d {"},{"line_number":689,"context_line":"            \u0027kvm\u0027: \u0027qemu+tcp://%s/system\u0027,"},{"line_number":690,"context_line":"            \u0027qemu\u0027: \u0027qemu+tcp://%s/system\u0027,"},{"line_number":691,"context_line":"            \u0027xen\u0027: \u0027xen+tcp://%s/system\u0027,"},{"line_number":692,"context_line":"        }"},{"line_number":693,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":694,"context_line":"        uri \u003d CONF.libvirt.live_migration_uri or uris.get(virt_type)"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba63e191_e4ceb359","line":691,"updated":"2016-01-19 10:57:42.000000000","message":"Is this the correct default for Xen?\n\ne.g. in https://jfehlig.wordpress.com/2013/04/05/xen-live-migration-in-openstack-grizzly/ you see:\n\n  For Xen, this needs to be ‘xenmigr://%s/system’:  live_migration_uri \u003d xenmigr://%s/system\n\nAIUI, we have to use direct migrations with Xen, and that means the live migration URI should be a hypervisor specific URI. The xen+tcp:///system one is the libvirtd URI","commit_id":"efc6cef6fdebcb7a365c002b4f228a7069c8712a"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"9240e30eff6cb87fdbd5360f96100e628df24b06","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        uris \u003d {"},{"line_number":689,"context_line":"            \u0027kvm\u0027: \u0027qemu+tcp://%s/system\u0027,"},{"line_number":690,"context_line":"            \u0027qemu\u0027: \u0027qemu+tcp://%s/system\u0027,"},{"line_number":691,"context_line":"            \u0027xen\u0027: \u0027xen+tcp://%s/system\u0027,"},{"line_number":692,"context_line":"        }"},{"line_number":693,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":694,"context_line":"        uri \u003d CONF.libvirt.live_migration_uri or uris.get(virt_type)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a5de9d1_6f096131","line":691,"in_reply_to":"ba63e191_e4ceb359","updated":"2016-01-27 10:45:24.000000000","message":"Yes, you\u0027re right.","commit_id":"efc6cef6fdebcb7a365c002b4f228a7069c8712a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"97007688a04696a78913c0fc2b9462bdd5650c58","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":851,"context_line":"        uri \u003d CONF.libvirt.live_migration_uri or uris.get(virt_type)"},{"line_number":852,"context_line":"        if uri is None:"},{"line_number":853,"context_line":"            raise exception.LiveMigrationURINotAvailable(virt_type\u003dvirt_type)"},{"line_number":854,"context_line":"        return uri % dest"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def instance_exists(self, instance):"}],"source_content_type":"text/x-python","patch_set":26,"id":"dae33548_796b6b1e","line":853,"updated":"2016-02-18 14:09:23.000000000","message":"Nit: its a shame this is a runtime error, but it makes sense I guess.","commit_id":"3159c8fd5bea80c820e58bd38d96f5f8fe8f4503"}]}
