)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"dec68c1bec9dc5e42f4f2503ecb07cb8cd5d490f","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                 \u0027qemu_ver\u0027: self._version_to_string("},{"line_number":614,"context_line":"                     MIN_QEMU_S390_VERSION)})"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    def _check_block_migration_flags(self, live_migration_flags,"},{"line_number":617,"context_line":"                                     block_migration_flags):"},{"line_number":618,"context_line":"        if (live_migration_flags \u0026 libvirt.VIR_MIGRATE_NON_SHARED_INC) !\u003d 0:"},{"line_number":619,"context_line":"            LOG.warning(_LW(\u0027Running Nova with a live_migration_flag config \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_351f856d","line":616,"range":{"start_line":616,"start_character":8,"end_line":616,"end_character":36},"updated":"2016-01-06 03:11:16.000000000","message":"This function name doesn\u0027t match what it do since you are using it to check live_migration_flags and block_migration_flags.\n\nI suggest to remove `block` from function name.","commit_id":"82732207fe943d33c796782a572336964e3896f8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b9477a937b02121b069db08ee919ef94ff5d121b","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                 \u0027qemu_ver\u0027: self._version_to_string("},{"line_number":614,"context_line":"                     MIN_QEMU_S390_VERSION)})"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    def _check_block_migration_flags(self, live_migration_flags,"},{"line_number":617,"context_line":"                                     block_migration_flags):"},{"line_number":618,"context_line":"        if (live_migration_flags \u0026 libvirt.VIR_MIGRATE_NON_SHARED_INC) !\u003d 0:"},{"line_number":619,"context_line":"            LOG.warning(_LW(\u0027Running Nova with a live_migration_flag config \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_6940be34","line":616,"in_reply_to":"fa69d971_351f856d","updated":"2016-01-06 09:04:06.000000000","message":"I think name is good like that, this method is checking whether live_migration_flag and live_migration_block are well configured in a context of block migration.","commit_id":"82732207fe943d33c796782a572336964e3896f8"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"cd2eab67481b4673f42c6e9433cd712807543ea2","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                 \u0027qemu_ver\u0027: self._version_to_string("},{"line_number":614,"context_line":"                     MIN_QEMU_S390_VERSION)})"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    def _check_block_migration_flags(self, live_migration_flags,"},{"line_number":617,"context_line":"                                     block_migration_flags):"},{"line_number":618,"context_line":"        if (live_migration_flags \u0026 libvirt.VIR_MIGRATE_NON_SHARED_INC) !\u003d 0:"},{"line_number":619,"context_line":"            LOG.warning(_LW(\u0027Running Nova with a live_migration_flag config \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_967f46df","line":616,"in_reply_to":"fa69d971_6940be34","updated":"2016-01-06 13:22:14.000000000","message":"Right, the \"block migration\" in this function name is about the fact that NON_SHARED_INC is a block migration flag","commit_id":"82732207fe943d33c796782a572336964e3896f8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a38a44d06095aea8810f026becc71444d71bcfd8","unresolved":false,"context_lines":[{"line_number":634,"context_line":"        def str2sum(str_val):"},{"line_number":635,"context_line":"            logical_sum \u003d 0"},{"line_number":636,"context_line":"            for s in [i.strip() for i in str_val.split(\u0027,\u0027) if i]:"},{"line_number":637,"context_line":"                logical_sum |\u003d getattr(libvirt, s)"},{"line_number":638,"context_line":"            return logical_sum"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_1dc73197","line":637,"updated":"2016-01-05 10:55:19.000000000","message":"Suggestion: We can make this method a little bit more robust and so log or stop process if operator have passed an unknown flag to {block|live}_migration_flag.","commit_id":"82732207fe943d33c796782a572336964e3896f8"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"dec68c1bec9dc5e42f4f2503ecb07cb8cd5d490f","unresolved":false,"context_lines":[{"line_number":634,"context_line":"        def str2sum(str_val):"},{"line_number":635,"context_line":"            logical_sum \u003d 0"},{"line_number":636,"context_line":"            for s in [i.strip() for i in str_val.split(\u0027,\u0027) if i]:"},{"line_number":637,"context_line":"                logical_sum |\u003d getattr(libvirt, s)"},{"line_number":638,"context_line":"            return logical_sum"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_758e5dd1","line":637,"in_reply_to":"fa69d971_1dc73197","updated":"2016-01-06 03:11:16.000000000","message":"+1","commit_id":"82732207fe943d33c796782a572336964e3896f8"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"cd2eab67481b4673f42c6e9433cd712807543ea2","unresolved":false,"context_lines":[{"line_number":634,"context_line":"        def str2sum(str_val):"},{"line_number":635,"context_line":"            logical_sum \u003d 0"},{"line_number":636,"context_line":"            for s in [i.strip() for i in str_val.split(\u0027,\u0027) if i]:"},{"line_number":637,"context_line":"                logical_sum |\u003d getattr(libvirt, s)"},{"line_number":638,"context_line":"            return logical_sum"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_f629e2e6","line":637,"in_reply_to":"fa69d971_1dc73197","updated":"2016-01-06 13:22:14.000000000","message":"Good suggestion. See I2965b369d529e57e00f8bba615303d1a02c216c2","commit_id":"82732207fe943d33c796782a572336964e3896f8"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"323be4ab12b08edeb4c1a9132f4f639e02b38e95","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    msg \u003d _(\"Unknown libvirt live migration flag \u0027%s\u0027\") % s"},{"line_number":641,"context_line":"                    raise exception.Invalid(msg)"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_d96651ba","line":641,"range":{"start_line":641,"start_character":20,"end_line":641,"end_character":48},"updated":"2016-01-06 13:37:20.000000000","message":"We expect stopping compute-node if bad flags are configured?\ncan we let it go(just ignore bad flags)? \n\nNot sure which one is better, just bring it out.","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"1591c1c37899694db2f49699a6804dbc5ebed6ff","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    msg \u003d _(\"Unknown libvirt live migration flag \u0027%s\u0027\") % s"},{"line_number":641,"context_line":"                    raise exception.Invalid(msg)"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_daacfc8d","line":641,"in_reply_to":"fa69d971_2a6dc9cb","updated":"2016-01-06 16:00:11.000000000","message":"Yeah, it would make for a sucky upgrade experience - e.g. someone who isn\u0027t using live migration at all, who has the flags badly configured, suddenly can\u0027t start nova-compute","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"861529248808a7f8e77dc5dacc0e782456d13af5","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    msg \u003d _(\"Unknown libvirt live migration flag \u0027%s\u0027\") % s"},{"line_number":641,"context_line":"                    raise exception.Invalid(msg)"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_f9d475ec","line":641,"range":{"start_line":641,"start_character":20,"end_line":641,"end_character":48},"in_reply_to":"fa69d971_d96651ba","updated":"2016-01-06 14:26:54.000000000","message":"It\u0027s a fair point. Previously, raising this exception just caused the live migration operation to fail.\n\nI think you\u0027re right - we should just log a warning and continue on.","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4dcf73ac94d4b943e23e4b5deb27c419c7e12e7e","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    msg \u003d _(\"Unknown libvirt live migration flag \u0027%s\u0027\") % s"},{"line_number":641,"context_line":"                    raise exception.Invalid(msg)"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2a6dc9cb","line":641,"in_reply_to":"fa69d971_f9d475ec","updated":"2016-01-06 14:50:31.000000000","message":"Actually I do not see problem with preventing to start service if an option is badly configured. But according to the current behavior of nova-compute logging something is probably better yes.","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"323be4ab12b08edeb4c1a9132f4f639e02b38e95","unresolved":false,"context_lines":[{"line_number":5643,"context_line":"            if block_migration:"},{"line_number":5644,"context_line":"                migration_flags \u003d self._block_migration_flags"},{"line_number":5645,"context_line":"            else:"},{"line_number":5646,"context_line":"                migration_flags \u003d self._live_migration_flags"},{"line_number":5647,"context_line":""},{"line_number":5648,"context_line":"            pre_live_migrate_data \u003d (migrate_data or {}).get("},{"line_number":5649,"context_line":"                                        \u0027pre_live_migration_result\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_19c3898a","line":5646,"range":{"start_line":5646,"start_character":16,"end_line":5646,"end_character":31},"updated":"2016-01-06 13:37:20.000000000","message":"We change migration_flags in _parse_migration_flags(in follows patch, more flags are added), it\u0027s better to LOG.debug migration_flags for debug reason.","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"861529248808a7f8e77dc5dacc0e782456d13af5","unresolved":false,"context_lines":[{"line_number":5643,"context_line":"            if block_migration:"},{"line_number":5644,"context_line":"                migration_flags \u003d self._block_migration_flags"},{"line_number":5645,"context_line":"            else:"},{"line_number":5646,"context_line":"                migration_flags \u003d self._live_migration_flags"},{"line_number":5647,"context_line":""},{"line_number":5648,"context_line":"            pre_live_migrate_data \u003d (migrate_data or {}).get("},{"line_number":5649,"context_line":"                                        \u0027pre_live_migration_result\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_39fd2d6e","line":5646,"range":{"start_line":5646,"start_character":16,"end_line":5646,"end_character":31},"in_reply_to":"fa69d971_19c3898a","updated":"2016-01-06 14:26:54.000000000","message":"It would be a bit of a pain to convert the logical sum back into a string. Also we\u0027re taking great care to log warnings when we change the value. And finally, the flag values are logged by libvirt itself. Not a bad suggestion, but I think we\u0027re covered.","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7cde156d8fcd298ed1c7ac51844fa2c06027438d","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    LOG.warning(_LW(\"Ignoring unknown libvirt live migration \""},{"line_number":641,"context_line":"                                    \"flag \u0027%(flag)s\u0027\") % {\u0027flag\u0027: s})"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_22e62944","line":641,"updated":"2016-01-07 08:55:05.000000000","message":"s/%/,","commit_id":"c7ea20ca83a6cace36eb67795ade1da94a2082b0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"6f958a8492257b2dbb0b251f3f74a71a1c67d001","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    LOG.warning(_LW(\"Ignoring unknown libvirt live migration \""},{"line_number":641,"context_line":"                                    \"flag \u0027%(flag)s\u0027\") % {\u0027flag\u0027: s})"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_e4b496d5","line":641,"in_reply_to":"fa69d971_22e62944","updated":"2016-01-07 12:29:30.000000000","message":"Hmm, I don\u0027t understand?","commit_id":"c7ea20ca83a6cace36eb67795ade1da94a2082b0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"c1c1d4b8abd9e9c672666b169d1fb0d255418a27","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    LOG.warning(_LW(\"Ignoring unknown libvirt live migration \""},{"line_number":641,"context_line":"                                    \"flag \u0027%(flag)s\u0027\") % {\u0027flag\u0027: s})"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_a21b847f","line":641,"in_reply_to":"fa69d971_a602e63c","updated":"2016-01-09 17:43:37.000000000","message":"Done","commit_id":"c7ea20ca83a6cace36eb67795ade1da94a2082b0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a034cc30bf3b5db81c9422b905b7165da7bfc107","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                    logical_sum |\u003d getattr(libvirt, s)"},{"line_number":639,"context_line":"                except AttributeError:"},{"line_number":640,"context_line":"                    LOG.warning(_LW(\"Ignoring unknown libvirt live migration \""},{"line_number":641,"context_line":"                                    \"flag \u0027%(flag)s\u0027\") % {\u0027flag\u0027: s})"},{"line_number":642,"context_line":"            return logical_sum"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        live_migration_flags \u003d str2sum(CONF.libvirt.live_migration_flag)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_a602e63c","line":641,"in_reply_to":"fa69d971_e4b496d5","updated":"2016-01-08 09:01:42.000000000","message":"Sorry it was not clear at all.. Usually we prefer to separate formatted string from arguments by a comma when used with LOG.warn|info|error...\n\n  LOG.warning(_LW(\"Ignoring... flag \u0027%(flag)\u0027\"), {\"flag\": s})\n\nIt\u0027s just a nit in case your have to change something more important in this patch.","commit_id":"c7ea20ca83a6cace36eb67795ade1da94a2082b0"}],"releasenotes/notes/libvirt-live-migration-flags-parsed-at-startup-318ff027896423bc.yaml":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4dcf73ac94d4b943e23e4b5deb27c419c7e12e7e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - The libvirt driver\u0027s live_migration_flag and"},{"line_number":4,"context_line":"    block_migration_flag configuration options are now"},{"line_number":5,"context_line":"    parsed when nova-compute starts. This may cause"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa69d971_4a84bd09","line":2,"updated":"2016-01-06 14:50:31.000000000","message":"You can remove this if you change behavior to log something.","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"1591c1c37899694db2f49699a6804dbc5ebed6ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - The libvirt driver\u0027s live_migration_flag and"},{"line_number":4,"context_line":"    block_migration_flag configuration options are now"},{"line_number":5,"context_line":"    parsed when nova-compute starts. This may cause"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa69d971_5aafac7c","line":2,"in_reply_to":"fa69d971_4a84bd09","updated":"2016-01-06 16:00:11.000000000","message":"Done","commit_id":"b0d90af8784695c6081c0bb4633e52133a0c8799"}]}
