)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5295ff30cc2d06d99216beaaab00728bc52e1ffa","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        self.assertIn(\u0027contains the VIR_MIGRATE_TUNNELLED flag\u0027, msg[0][0])"},{"line_number":1069,"context_line":"        msg \u003d mock_log.warning.call_args_list[1]"},{"line_number":1070,"context_line":"        self.assertIn(\u0027contains the VIR_MIGRATE_TUNNELLED flag\u0027, msg[0][0])"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch(\u0027nova.utils.get_image_from_system_metadata\u0027)"},{"line_number":1073,"context_line":"    @mock.patch.object(host.Host,"},{"line_number":1074,"context_line":"                       \u0027has_min_version\u0027, return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_5cc0da2a","line":1071,"updated":"2016-02-02 12:55:10.000000000","message":"We should also test the None case right? Because we\u0027re assuming pass through behavior, but the use of a non default BoolOpt is a little unusual, and I\u0027m not sure I see it tested well in oslo.config.","commit_id":"621594fc41d0e07fd63dfe7c3c5cfee9edc380ad"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"f8ea7536064fdc38ec6764855bf1322153f87865","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        self.assertIn(\u0027contains the VIR_MIGRATE_TUNNELLED flag\u0027, msg[0][0])"},{"line_number":1069,"context_line":"        msg \u003d mock_log.warning.call_args_list[1]"},{"line_number":1070,"context_line":"        self.assertIn(\u0027contains the VIR_MIGRATE_TUNNELLED flag\u0027, msg[0][0])"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch(\u0027nova.utils.get_image_from_system_metadata\u0027)"},{"line_number":1073,"context_line":"    @mock.patch.object(host.Host,"},{"line_number":1074,"context_line":"                       \u0027has_min_version\u0027, return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_3233c5f8","line":1071,"in_reply_to":"7a5de9d1_5cc0da2a","updated":"2016-02-02 13:18:33.000000000","message":"The other migration flags tests should handle the None case.\n\nGood point on oslo.config, thanks. Test case proposed here: Ic480be79772e2721e0f57f17ccc9d893e92af4c9","commit_id":"621594fc41d0e07fd63dfe7c3c5cfee9edc380ad"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0c59a3301411fd9dad7fb82024b0a78e554af47b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                       \u0027VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, \u0027"},{"line_number":168,"context_line":"                       \u0027VIR_MIGRATE_NON_SHARED_INC\u0027,"},{"line_number":169,"context_line":"               help\u003d\u0027Migration flags to be set for block migration\u0027),"},{"line_number":170,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":171,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":172,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":173,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_cf7b1cf4","line":170,"updated":"2016-01-05 11:40:57.000000000","message":"I think you need reno note for new option added - Do we really need to add this new option, I do not see a case where we do not want it by default. OR if we still want to give opportunity for operator to deactivate it, perhaps we should to have this option specifically defaulted to True.","commit_id":"96cce2fd19ba660867e330d37faccf569e06cef8"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4f83fae25de5d614236e9471a3d7ca1ee9457726","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                       \u0027VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, \u0027"},{"line_number":168,"context_line":"                       \u0027VIR_MIGRATE_NON_SHARED_INC\u0027,"},{"line_number":169,"context_line":"               help\u003d\u0027Migration flags to be set for block migration\u0027),"},{"line_number":170,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":171,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":172,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":173,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_d945f142","line":170,"in_reply_to":"fa69d971_79fc3a72","updated":"2016-01-06 13:32:18.000000000","message":"reno added\n\nIn http://lists.openstack.org/pipermail/openstack-dev/2016-January/083275.html I got into the need for the flag\n\ndanpb originally suggested naming this as live_migration_secure_channel but I reckon it\u0027s more clear to be explicit about controlling tunneled versus native mode\n\nThere are a bunch of factors for an operator to consider when choosing native versus tunneled - encryption only supported by the latter, new-style NBD based block migration currently only supported by the former, etc.\n\nIt\u0027s also a choice which has an impact on how the operator needs to configure any firewall on the compute nodes - i.e. for native, you need to allow the direct communication between qemu","commit_id":"96cce2fd19ba660867e330d37faccf569e06cef8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f78fb2889eec7122a6cb0a231cbea47339b2e425","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                       \u0027VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, \u0027"},{"line_number":168,"context_line":"                       \u0027VIR_MIGRATE_NON_SHARED_INC\u0027,"},{"line_number":169,"context_line":"               help\u003d\u0027Migration flags to be set for block migration\u0027),"},{"line_number":170,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":171,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":172,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":173,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_79fc3a72","line":170,"in_reply_to":"fa69d971_cf7b1cf4","updated":"2016-01-05 13:28:42.000000000","message":"I better understand point of this option. What about to use an option like \u0027live_migration_type\u0027 as an cfg.StrOpt with a defined choices\u003d[\u0027tunneled\u0027], this will avoid mistake whether operator set several incompatible options.\n\nAnd yes, you need to add a reno note and tag DocImpact for this new option added.","commit_id":"96cce2fd19ba660867e330d37faccf569e06cef8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0c59a3301411fd9dad7fb82024b0a78e554af47b","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return (live_migration_flags, block_migration_flags)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def _handle_live_migration_tunneled(self, migration_flags, config_name):"},{"line_number":680,"context_line":"        if CONF.libvirt.live_migration_tunneled is None:"},{"line_number":681,"context_line":"            return migration_flags"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        if CONF.libvirt.live_migration_tunneled:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_4fd40ceb","line":680,"updated":"2016-01-05 11:40:57.000000000","message":"Can we really pass here?","commit_id":"96cce2fd19ba660867e330d37faccf569e06cef8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f78fb2889eec7122a6cb0a231cbea47339b2e425","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return (live_migration_flags, block_migration_flags)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def _handle_live_migration_tunneled(self, migration_flags, config_name):"},{"line_number":680,"context_line":"        if CONF.libvirt.live_migration_tunneled is None:"},{"line_number":681,"context_line":"            return migration_flags"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        if CONF.libvirt.live_migration_tunneled:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_9eb9d47b","line":680,"in_reply_to":"fa69d971_4fd40ceb","updated":"2016-01-05 13:28:42.000000000","message":"My mistake, default value of BoolOpt is None","commit_id":"96cce2fd19ba660867e330d37faccf569e06cef8"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4f83fae25de5d614236e9471a3d7ca1ee9457726","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return (live_migration_flags, block_migration_flags)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def _handle_live_migration_tunneled(self, migration_flags, config_name):"},{"line_number":680,"context_line":"        if CONF.libvirt.live_migration_tunneled is None:"},{"line_number":681,"context_line":"            return migration_flags"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        if CONF.libvirt.live_migration_tunneled:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_19ae29e6","line":680,"in_reply_to":"fa69d971_9eb9d47b","updated":"2016-01-06 13:32:18.000000000","message":"Yes. In the patch which removes live_migration_flag in a future release - see I0343dfba2f9ad359c083c94efa53c9c079e9ca07 - we change the default from None to True\n\nWe need this None default to temporarily mean \"don\u0027t touch the TUNNELLED flag in live_migration_flag\"","commit_id":"96cce2fd19ba660867e330d37faccf569e06cef8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ee79fd4b9476cb1dd9e723c81a3de36740004801","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":171,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":172,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":173,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag.\u0027),"},{"line_number":174,"context_line":"    cfg.IntOpt(\u0027live_migration_bandwidth\u0027,"},{"line_number":175,"context_line":"               default\u003d0,"},{"line_number":176,"context_line":"               help\u003d\u0027Maximum bandwidth(in MiB/s) to be used during migration. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_33167af2","line":173,"updated":"2016-01-07 11:17:40.000000000","message":"I think danpb wanted to give an other name because we consider operator is not really aware of internal libvirt flags. We should just to expose the fact which is that using this option will provide a secure data transfer during migration. (if libvirtd are well configured).\n\nPerhaps you can change help message to respond to this question: \"What is benefice for operator to use migration data transported over libvirtd connection ?\"","commit_id":"1f6ee0c12b3a0f3a299abeabca8fbc4f9f06b4ed"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"0aa64f8749d54542b19ccbb7762e894b0d1e1915","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":171,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":172,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":173,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag.\u0027),"},{"line_number":174,"context_line":"    cfg.IntOpt(\u0027live_migration_bandwidth\u0027,"},{"line_number":175,"context_line":"               default\u003d0,"},{"line_number":176,"context_line":"               help\u003d\u0027Maximum bandwidth(in MiB/s) to be used during migration. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_c4ae3298","line":173,"in_reply_to":"fa69d971_33167af2","updated":"2016-01-07 12:27:57.000000000","message":"\"Do you want a secure channel?\"\n\n\"Why, yes, of course I do!\"\n\n\"Well, that means you want to use tunneling over libvirt\u0027s transport, and that menas you can\u0027t have block migration because (in some circumstances) block migration doesn\u0027t work when you\u0027re tunneling\"\n\nIn order to make an informed choice about a \"secure channel\" option, the operator very quickly needs to get into details about tunneled versus native transports. I do think they need to be aware of the tunneled versus native choice.\n\nThey especially need to be aware of it because if they choose native they need to understand the additional firewall ports they need to open.\n\nIn other words, I think we\u0027re kidding ourselves if we think we can hide this detail from operators and attempting to hide it will just make things even more confusing for operators.","commit_id":"1f6ee0c12b3a0f3a299abeabca8fbc4f9f06b4ed"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"18444347a815d831b3a1d8601b4e4116c292466c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":171,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":172,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":173,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag.\u0027),"},{"line_number":174,"context_line":"    cfg.IntOpt(\u0027live_migration_bandwidth\u0027,"},{"line_number":175,"context_line":"               default\u003d0,"},{"line_number":176,"context_line":"               help\u003d\u0027Maximum bandwidth(in MiB/s) to be used during migration. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_bde742ab","line":173,"in_reply_to":"fa69d971_c4ae3298","updated":"2016-01-08 11:52:42.000000000","message":"In the very near future there will in fact be 2 possible secure channels - libvirt tunnelled and QEMU native TLS, with the latter being preferred if available since it will work with block migration too. \n\nWhen this QEMU TLS stuff is done, I\u0027d like to see Nova able to automaatically do the right thing and pick QEMU native TLS where available, falling back to tunnelled only if not.\n\nI could see some people may still wish to force use of tunnelled migration, since it has the advantages of not requiring extra firewal ports open.\n\nThis \"live_migration_tunnelled\" flag makes sense if we consider it to be a tri-state, rather than boolean flag long term. eg, we will have\n\n - False - use QEMU native\n - True - use tunnelled\n - None - use QEMU native if it supports TLS, else use tunnelled if not block migration, etc","commit_id":"1f6ee0c12b3a0f3a299abeabca8fbc4f9f06b4ed"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"73dcefeb1c6b106eff840575c72acd19ddba2d23","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                       \u0027VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, \u0027"},{"line_number":169,"context_line":"                       \u0027VIR_MIGRATE_NON_SHARED_INC\u0027,"},{"line_number":170,"context_line":"               help\u003d\u0027Migration flags to be set for block migration\u0027),"},{"line_number":171,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":172,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":173,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":174,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag, \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_45bb800f","line":171,"range":{"start_line":171,"start_character":40,"end_line":171,"end_character":42},"updated":"2016-01-11 12:09:29.000000000","message":"s/tunneled/tunnelled/  - both are valid spellings, but since libvirt uses two l\u0027s we should match it here IMHO","commit_id":"5a10e8a817ff586092c1f70d28d08b3ee898cceb"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"60d84cfd001343fb02c097d3d022db0bcc5aa527","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                       \u0027VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, \u0027"},{"line_number":169,"context_line":"                       \u0027VIR_MIGRATE_NON_SHARED_INC\u0027,"},{"line_number":170,"context_line":"               help\u003d\u0027Migration flags to be set for block migration\u0027),"},{"line_number":171,"context_line":"    cfg.BoolOpt(\u0027live_migration_tunneled\u0027,"},{"line_number":172,"context_line":"                help\u003d\u0027Whether to use tunneled migration, where migration data \u0027"},{"line_number":173,"context_line":"                     \u0027is transported over the libvirtd connection. If True, \u0027"},{"line_number":174,"context_line":"                     \u0027we use the VIR_MIGRATE_TUNNELLED migration flag, \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_ec86c364","line":171,"range":{"start_line":171,"start_character":40,"end_line":171,"end_character":42},"in_reply_to":"fa69d971_45bb800f","updated":"2016-01-11 22:25:26.000000000","message":"Fair enough, I thought \u0027tunnelled\u0027 was just a typo like \u0027dettach\u0027 was :)\n\nTurns out tunneled is American English, but I agree - if it\u0027s valid, stick with what libvirt has already.","commit_id":"5a10e8a817ff586092c1f70d28d08b3ee898cceb"},{"author":{"_account_id":12909,"name":"Mark Wu","email":"wudx05@gmail.com","username":"markw"},"change_message_id":"27eb68e3bd3b56cb14b2efed8b70f9ae583005b8","unresolved":false,"context_lines":[{"line_number":703,"context_line":"            if (migration_flags \u0026 libvirt.VIR_MIGRATE_TUNNELLED) \u003d\u003d 0:"},{"line_number":704,"context_line":"                LOG.warning(_LW(\u0027The %(config_name)s config option does not \u0027"},{"line_number":705,"context_line":"                                \u0027contain the VIR_MIGRATE_TUNNELLED flag but \u0027"},{"line_number":706,"context_line":"                                \u0027the live_migration_paused is set to True \u0027"},{"line_number":707,"context_line":"                                \u0027which causes VIR_MIGRATE_TUNNELLED to be \u0027"},{"line_number":708,"context_line":"                                \u0027set\u0027),"},{"line_number":709,"context_line":"                            {\u0027config_name\u0027: config_name})"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_fd9f4fb2","line":706,"range":{"start_line":706,"start_character":37,"end_line":706,"end_character":58},"updated":"2016-01-11 23:55:35.000000000","message":"A quick comment, it\u0027s a typo, correct? s/live_migration_paused/live_migration_tunnelled/","commit_id":"f8c05b085a3ad6d5b1a42dec5b05e42af1b034f5"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"e2f1f99f09bcf8c74aa818258c9830d62a226434","unresolved":false,"context_lines":[{"line_number":703,"context_line":"            if (migration_flags \u0026 libvirt.VIR_MIGRATE_TUNNELLED) \u003d\u003d 0:"},{"line_number":704,"context_line":"                LOG.warning(_LW(\u0027The %(config_name)s config option does not \u0027"},{"line_number":705,"context_line":"                                \u0027contain the VIR_MIGRATE_TUNNELLED flag but \u0027"},{"line_number":706,"context_line":"                                \u0027the live_migration_paused is set to True \u0027"},{"line_number":707,"context_line":"                                \u0027which causes VIR_MIGRATE_TUNNELLED to be \u0027"},{"line_number":708,"context_line":"                                \u0027set\u0027),"},{"line_number":709,"context_line":"                            {\u0027config_name\u0027: config_name})"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_fb512ed9","line":706,"range":{"start_line":706,"start_character":37,"end_line":706,"end_character":58},"in_reply_to":"da6ed579_fd9f4fb2","updated":"2016-01-13 16:03:59.000000000","message":"Bleh, good catch. Thank you.","commit_id":"f8c05b085a3ad6d5b1a42dec5b05e42af1b034f5"}]}
