)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d74a68ee6f036dace1ad1484ea2027b1e263e9a9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Artom Lifshitz \u003califshit@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-07-03 14:55:56 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"CONF.enable_numa_live_migration is not needed \u003e\u003d Train"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Once a deployment has been fully upgraded to Train, the"},{"line_number":10,"context_line":"CONF.workarounds.enable_numa_live_migration config option is no longer"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_322105a1","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2019-07-04 10:15:48.000000000","message":"s/CONF/CONF.workarounds/","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f5c2418187ffd1a9a171305333d367e38f0d0c07","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Artom Lifshitz \u003califshit@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-07-03 14:55:56 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"CONF.enable_numa_live_migration is not needed \u003e\u003d Train"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Once a deployment has been fully upgraded to Train, the"},{"line_number":10,"context_line":"CONF.workarounds.enable_numa_live_migration config option is no longer"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_7718cc80","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"in_reply_to":"7faddb67_322105a1","updated":"2019-07-04 12:37:17.000000000","message":"Done","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d74a68ee6f036dace1ad1484ea2027b1e263e9a9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"conductor check to only apply if the cell\u0027s (cross-cell live migration"},{"line_number":13,"context_line":"isn\u0027t supported) minimum service version is old."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements blueprint bp/numa-aware-live-migration"},{"line_number":16,"context_line":"Change-Id: If649218db86a04db744990ec0139b4f0b1e79ad6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_b21bb571","line":15,"range":{"start_line":15,"start_character":21,"end_line":15,"end_character":24},"updated":"2019-07-04 10:15:48.000000000","message":"Drop this or the auto-linking from Gerrit is broken","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f5c2418187ffd1a9a171305333d367e38f0d0c07","unresolved":false,"context_lines":[{"line_number":12,"context_line":"conductor check to only apply if the cell\u0027s (cross-cell live migration"},{"line_number":13,"context_line":"isn\u0027t supported) minimum service version is old."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements blueprint bp/numa-aware-live-migration"},{"line_number":16,"context_line":"Change-Id: If649218db86a04db744990ec0139b4f0b1e79ad6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_170dd83d","line":15,"range":{"start_line":15,"start_character":21,"end_line":15,"end_character":24},"in_reply_to":"7faddb67_b21bb571","updated":"2019-07-04 12:37:17.000000000","message":"Done","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"}],"doc/source/common/numa-live-migration-warning.txt":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"944d8e44ea286e9df44d940d5c16579ed07cb534","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   In deployments older than Train, or in mixed Stein/Train deployments with a"},{"line_number":4,"context_line":"   rolling upgrade in progress, unless :oslo.config:option:`specifically"},{"line_number":5,"context_line":"   enabled \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not"},{"line_number":6,"context_line":"   currently possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information."}],"source_content_type":"text/plain","patch_set":50,"id":"5faad753_50f1c1cc","line":6,"range":{"start_line":6,"start_character":3,"end_line":6,"end_character":12},"updated":"2019-09-11 14:24:26.000000000","message":"You\u0027re talking about things in the past and then saying \"currently\". It made sense in the old text because that was the present, but now it seems weird to me. Maybe just \"In deployments older than Train ..... live migration was not possible.\"","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   In deployments older than Train, or in mixed Stein/Train deployments with a"},{"line_number":4,"context_line":"   rolling upgrade in progress, unless :oslo.config:option:`specifically"},{"line_number":5,"context_line":"   enabled \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not"},{"line_number":6,"context_line":"   currently possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information."}],"source_content_type":"text/plain","patch_set":50,"id":"5faad753_333bef9c","line":6,"range":{"start_line":6,"start_character":3,"end_line":6,"end_character":12},"in_reply_to":"5faad753_50f1c1cc","updated":"2019-09-11 15:09:24.000000000","message":"I\u0027ll still use the present, because if someone has a Stein deployment, that\u0027s not in the past for them, but I\u0027ll drop \"currently\".","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"944d8e44ea286e9df44d940d5c16579ed07cb534","unresolved":false,"context_lines":[{"line_number":6,"context_line":"   currently possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":50,"id":"5faad753_d0b611fb","line":9,"updated":"2019-09-11 14:24:26.000000000","message":"Can you just add something here to say \"As of Train, NUMA live migration is fully supported.\" just to close the loop here?","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":6,"context_line":"   currently possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":50,"id":"5faad753_735087d5","line":9,"in_reply_to":"5faad753_104d8999","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"afda70be468a1173ef018f5e6ac75acac9dceec3","unresolved":false,"context_lines":[{"line_number":6,"context_line":"   currently possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":50,"id":"5faad753_104d8999","line":9,"in_reply_to":"5faad753_d0b611fb","updated":"2019-09-11 14:33:45.000000000","message":"...when using the libvirt driver. :)","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":6,"context_line":"   currently possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":50,"id":"5faad753_53554bc5","line":9,"in_reply_to":"5faad753_d0b611fb","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe425182bf397a79f5a2ef5f4f6bb139f676b1e7","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   In deployments older than Train, or in mixed Stein/Train deployments with a"},{"line_number":4,"context_line":"   rolling upgrade in progress, unless :oslo.config:option:`specifically"},{"line_number":5,"context_line":"   enabled \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not"},{"line_number":6,"context_line":"   possible for instances with a NUMA topology when using the libvirt"},{"line_number":7,"context_line":"   driver. A NUMA topology may be specified explicitly or can be added"},{"line_number":8,"context_line":"   implicitly due to the use of CPU pinning or huge pages. Refer to `bug"},{"line_number":9,"context_line":"   #1289064`__ for more information. As of Train, live migration of instances"}],"source_content_type":"text/plain","patch_set":51,"id":"5faad753_ffb996e8","line":6,"updated":"2019-09-11 17:01:25.000000000","message":"Better, thanks.","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5083e733f3507c81c0d9ffee3c260e957803c17e","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    state\u003dpower_state.STATE_MAP[self.instance.power_state],"},{"line_number":175,"context_line":"                    method\u003d\u0027live migrate\u0027)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self, context):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies.\"\"\""},{"line_number":179,"context_line":"        if not self.instance.numa_topology:"},{"line_number":180,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_977d4be9","line":177,"range":{"start_line":177,"start_character":42,"end_line":177,"end_character":49},"updated":"2019-07-04 10:14:31.000000000","message":"Can\u0027t we just access \u0027self.context\u0027 internally instead?","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f5c2418187ffd1a9a171305333d367e38f0d0c07","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    state\u003dpower_state.STATE_MAP[self.instance.power_state],"},{"line_number":175,"context_line":"                    method\u003d\u0027live migrate\u0027)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self, context):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies.\"\"\""},{"line_number":179,"context_line":"        if not self.instance.numa_topology:"},{"line_number":180,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_17dab8e8","line":177,"range":{"start_line":177,"start_character":42,"end_line":177,"end_character":49},"in_reply_to":"7faddb67_977d4be9","updated":"2019-07-04 12:37:17.000000000","message":"Done","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5083e733f3507c81c0d9ffee3c260e957803c17e","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        if hypervisor_type.lower() !\u003d obj_fields.HVType.QEMU:"},{"line_number":190,"context_line":"            return"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        numa_live_migration \u003d ("},{"line_number":193,"context_line":"            objects.Service.get_minimum_version(context,"},{"line_number":194,"context_line":"                                                \u0027nova-compute\u0027) \u003e 38)"},{"line_number":195,"context_line":"        if not numa_live_migration:"},{"line_number":196,"context_line":"            msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":197,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":198,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_57603333","line":195,"range":{"start_line":192,"start_character":0,"end_line":195,"end_character":35},"updated":"2019-07-04 10:14:31.000000000","message":"How about:\n\n    if objects.Service.get_minimum_version(\n            self.context, \u0027nova-compute\u0027) \u003e 38:\n        return\n\nand just leave the below as-is? You probably want a TODO somewhere to remove the entire check in U too","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f5c2418187ffd1a9a171305333d367e38f0d0c07","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        if hypervisor_type.lower() !\u003d obj_fields.HVType.QEMU:"},{"line_number":190,"context_line":"            return"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        numa_live_migration \u003d ("},{"line_number":193,"context_line":"            objects.Service.get_minimum_version(context,"},{"line_number":194,"context_line":"                                                \u0027nova-compute\u0027) \u003e 38)"},{"line_number":195,"context_line":"        if not numa_live_migration:"},{"line_number":196,"context_line":"            msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":197,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":198,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_97bd486a","line":195,"range":{"start_line":192,"start_character":0,"end_line":195,"end_character":35},"in_reply_to":"7faddb67_57603333","updated":"2019-07-04 12:37:17.000000000","message":"Done","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e4f64cecf8ae3858120699638fdc96c124d2b835","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            return"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":195,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e 39:"},{"line_number":196,"context_line":"            # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":197,"context_line":"            # migration, carry on."},{"line_number":198,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_5583afcb","line":195,"range":{"start_line":195,"start_character":46,"end_line":195,"end_character":50},"updated":"2019-08-16 18:37:29.000000000","message":"I think that making these \u003e\u003d N is a lot easier to read and reason about. If I\u0027m going through this code and looking for what this signal means, I lock onto the 39, then I go to the service version history and look for 39, not 40.","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"37e9b86bbee519a35f7a5592d3efed4f0cc1fed8","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            return"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":195,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e 39:"},{"line_number":196,"context_line":"            # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":197,"context_line":"            # migration, carry on."},{"line_number":198,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_0be7afae","line":195,"range":{"start_line":195,"start_character":46,"end_line":195,"end_character":50},"in_reply_to":"7faddb67_5583afcb","updated":"2019-08-27 19:53:06.000000000","message":"Done","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e4f64cecf8ae3858120699638fdc96c124d2b835","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e 39:"},{"line_number":196,"context_line":"            # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":197,"context_line":"            # migration, carry on."},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_b54303b0","line":198,"updated":"2019-08-16 18:37:29.000000000","message":"This is a nit, but I\u0027d put this down as one of the cases in the conditional on L207 just so all the reasons we might proceed are together...\n\n if SERVICE_VERSION:\n     return\n elif CONF.workarounds...:\n     LOG.warning(...)\n else:\n     raise...","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"37e9b86bbee519a35f7a5592d3efed4f0cc1fed8","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e 39:"},{"line_number":196,"context_line":"            # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":197,"context_line":"            # migration, carry on."},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_2b9f0b03","line":198,"in_reply_to":"7faddb67_b54303b0","updated":"2019-08-27 19:53:06.000000000","message":"Done","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3d5a7e7465bb84aa926f5b8a7e5399b2f69d32c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 39:"},{"line_number":202,"context_line":"            # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":203,"context_line":"            # migration, carry on."},{"line_number":204,"context_line":"            return"},{"line_number":205,"context_line":"        elif CONF.workarounds.enable_numa_live_migration:"},{"line_number":206,"context_line":"            LOG.warning(msg, instance\u003dself.instance)"},{"line_number":207,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":38,"id":"7faddb67_3b9b68c9","line":204,"updated":"2019-09-04 13:33:14.000000000","message":"So actually here, is this enough? Even if we\u0027re fully updated, there could still be pinned computes somewhere that can\u0027t sent 5.3 and thus can\u0027t do the new-style NUMA LM, though I suppose that\u0027s unlikely, as you aren\u0027t going to keep pinning if the whole cell is upgraded. And can we do anything else? We don\u0027t have a cell-global \"min_rpc_version\" check... Maybe I should just mention pinning in the release note.","commit_id":"c617e4574b903c049e216940898cd335f0647ea0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7a52233d4ed1ad7d210d812becafbbf7c238885","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"}],"source_content_type":"text/x-python","patch_set":45,"id":"5faad753_2f8f2e2b","line":197,"range":{"start_line":196,"start_character":12,"end_line":197,"end_character":52},"updated":"2019-09-09 23:00:48.000000000","message":"is this getting hte minium version of nova compute in the deployment. so this will only be true whn all nova-compute service are version 40 or higher.","commit_id":"f234b6e65cc50e6792c693c24502b2ea00b2da33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":195,"context_line":"               \u0027pinning information, are not currently recalculated on \u0027"},{"line_number":196,"context_line":"               \u0027live migration. See bug #1289064 for more information.\u0027"},{"line_number":197,"context_line":"               )"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":200,"context_line":"            LOG.warning(msg, instance\u003dself.instance)"},{"line_number":201,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_b0d5a8e7","side":"PARENT","line":198,"updated":"2019-09-10 20:41:13.000000000","message":"nix this unrelated change","commit_id":"808caebf89061633f6de589df31c8c973069ce73"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":195,"context_line":"               \u0027pinning information, are not currently recalculated on \u0027"},{"line_number":196,"context_line":"               \u0027live migration. See bug #1289064 for more information.\u0027"},{"line_number":197,"context_line":"               )"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":200,"context_line":"            LOG.warning(msg, instance\u003dself.instance)"},{"line_number":201,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_9a1d2675","side":"PARENT","line":198,"in_reply_to":"5faad753_b0d5a8e7","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"808caebf89061633f6de589df31c8c973069ce73"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies."},{"line_number":179,"context_line":"        TODO(artom) Remove this check in U."},{"line_number":180,"context_line":"        \"\"\""},{"line_number":181,"context_line":"        if not self.instance.numa_topology:"},{"line_number":182,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_b0a7e8a7","line":179,"updated":"2019-09-10 20:41:13.000000000","message":"Is this accurate? Isn\u0027t this really something we can only remove when the compute RPC API version is bumped to 6.0 because if compute RPC API is pinned to less than 5.2 things won\u0027t work:\n\nhttps://review.opendev.org/#/c/634606/83/nova/objects/service.py\n\nAs much as I\u0027d like to say no one with all Train+ computes should have the compute RPC API version pinned to less than Train, technically it\u0027s possible and is a reality I have to deal with here as well:\n\nhttps://review.opendev.org/#/c/680762/","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies."},{"line_number":179,"context_line":"        TODO(artom) Remove this check in U."},{"line_number":180,"context_line":"        \"\"\""},{"line_number":181,"context_line":"        if not self.instance.numa_topology:"},{"line_number":182,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_ba59025b","line":179,"in_reply_to":"5faad753_b0a7e8a7","updated":"2019-09-11 11:14:01.000000000","message":"I was going to say, in U we know all services are new enough, even if they\u0027re pinned: they support gracefully falling back to the old behaviour... the old *broken* behaviour that this check is meant to block. So yeah, probably best to leave that in until RPC 6.0.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_10e7dce6","line":196,"updated":"2019-09-10 20:41:13.000000000","message":"OK this is specific to the cell that the instance is in which is OK since we don\u0027t support live migrating across cells (like the commit message says).\n\nNote that we could be smarter and support mixed computes if we verified the source was new enough and the dest was new enough, but that makes things more complicated since this is checked before we even have a destination (unless you\u0027re forcing and bypassing the scheduler), and if your computes aren\u0027t all upgraded yet chances are you\u0027ve pinned the compute RPC API version for backward compat during rolling upgrade anyway, so yeah this is good enough.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_3a3bd2eb","line":196,"in_reply_to":"5faad753_10e7dce6","updated":"2019-09-11 11:14:01.000000000","message":"So actually wait a second - which conductor handles live migration? The cell conductor, or the superconductor? If the latter (and IIRC that\u0027s what it was), was does get_minimum_version() even mean?","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_9df992c9","line":196,"in_reply_to":"5faad753_3a3bd2eb","updated":"2019-09-11 13:57:32.000000000","message":"Superconductor since there are no reschedules from the compute to the cell conductor like there is with resize/cold migrate. But the context is targeted at the cell that the instance is in when we get here [1] so Service.get_minimum_version is looking at services in the cell DB that the instance is in.\n\n[1] https://github.com/openstack/nova/blob/0575eabffb0f574942f8695bccc9dc48ad122d49/nova/conductor/manager.py#L396","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_d0f94480","line":198,"updated":"2019-09-10 20:41:13.000000000","message":"OK so if the instance has a numa topology and is using kvm and all computes in this cell are upgraded then enable_numa_live_migration is irrelevant - ack.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e95ccd90c131757bdf2da7690108056b69316d9","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_703410fc","line":198,"in_reply_to":"5faad753_109fdc03","updated":"2019-09-10 20:52:48.000000000","message":"I\u0027m also not saying we need to bend over backward to try and detect this kind of messed up edge case. If you\u0027ve upgraded all of your computes to Train and restarted them so they are reporting train service versions, then you should have also unpinned any manual compute rpc api version pins (or just use [upgrade_levels]/compute\u003dauto). I don\u0027t know what trying to detect this would look like besides something hacky like looking at CONF.upgrade_levels.compute and see if it\u0027s specifically something [a-s]* (and not auto) or \u003c5.3. I\u0027m pretty sure Dan\u0027s head would explode if we added that.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_7a1aaa7d","line":198,"in_reply_to":"5faad753_703410fc","updated":"2019-09-11 11:14:01.000000000","message":"This crossed my mind as well: https://review.opendev.org/#/c/640021/38/nova/conductor/tasks/live_migrate.py@204\n\nI\u0027ll add a release note that explains the upgrade implications, but is there anything else that\u0027s sensible that we can do?","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"72b02b4e419012b28a002596161f89063c9b2391","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_109fdc03","line":198,"in_reply_to":"5faad753_d0f94480","updated":"2019-09-10 20:44:34.000000000","message":"Let\u0027s say we get past this check, all computes are running train, but for whatever reason [upgrade_levels]/compute\u003dstein is in config still, we expose the bug again right? I think we\u0027d log this:\n\nhttps://review.opendev.org/#/c/634606/83/nova/compute/manager.py@6506\n\nBut otherwise we don\u0027t fail and the live migration of the instance with numa topology would be likely be messed up. That\u0027s just a weird edge case where someone messes up, but I wanted to see if that is something that technically could still happen.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies."},{"line_number":179,"context_line":"        TODO(artom) Remove this check in RPC 6.0."},{"line_number":180,"context_line":"        \"\"\""},{"line_number":181,"context_line":"        if not self.instance.numa_topology:"},{"line_number":182,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_1d6122aa","line":179,"range":{"start_line":179,"start_character":41,"end_line":179,"end_character":44},"updated":"2019-09-11 13:57:32.000000000","message":"nit: compute RPC API 6.0 (not to be confused with conductor\u0027s compute task RPC API)","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies."},{"line_number":179,"context_line":"        TODO(artom) Remove this check in RPC 6.0."},{"line_number":180,"context_line":"        \"\"\""},{"line_number":181,"context_line":"        if not self.instance.numa_topology:"},{"line_number":182,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_1006e9cf","line":179,"range":{"start_line":179,"start_character":41,"end_line":179,"end_character":44},"in_reply_to":"5faad753_1d6122aa","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"944d8e44ea286e9df44d940d5c16579ed07cb534","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _check_instance_has_no_numa(self):"},{"line_number":178,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies."},{"line_number":179,"context_line":"        TODO(artom) Remove this check in RPC 6.0."},{"line_number":180,"context_line":"        \"\"\""},{"line_number":181,"context_line":"        if not self.instance.numa_topology:"},{"line_number":182,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_d084d10e","line":179,"range":{"start_line":179,"start_character":41,"end_line":179,"end_character":44},"in_reply_to":"5faad753_1d6122aa","updated":"2019-09-11 14:24:26.000000000","message":"Yeah","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_9d8992cb","line":196,"updated":"2019-09-11 13:57:32.000000000","message":"If this is false, should we log a debug statement about there being older computes in the cell? Though that might be unnecessary if we go below because if enable_numa_live_migration is True we\u0027re going to log a warning and if it\u0027s False we\u0027re going to fail.\n\nI was thinking about the questions I raised about a stale cache in the release note - if the computes are all upgraded but the version cache in conductor is stale, the get_minimum_version check won\u0027t pass and we\u0027ll drop below and either fail or do the naive thing which is also bad and likely unexpected, so in those cases I\u0027d think some debug statement about there being older computes during a numa-aware live migration attempt would be useful.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_13bd93d7","line":196,"in_reply_to":"5faad753_10dee910","updated":"2019-09-11 15:09:24.000000000","message":"\u003e Yeah, I think logging both of the two non-happy ways would be good:\n \u003e \n \u003e 1. ERROR: \"Computes are too old and the workaround is disabled,\n \u003e failing\"\n\nL197 takes care of that, right? Just need to update the msg.\n\n \u003e 2. WARNING: \"Computes are too old to do the smart thing, workaround\n \u003e is enabled, doing that\"","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"55a2d9379a36cf801a806c6e5301973ec94be9c1","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_2e85c25a","line":196,"in_reply_to":"5faad753_13bd93d7","updated":"2019-09-11 15:11:19.000000000","message":"\u003e \u003e Yeah, I think logging both of the two non-happy ways would be\n \u003e good:\n \u003e \u003e\n \u003e \u003e 1. ERROR: \"Computes are too old and the workaround is disabled,\n \u003e \u003e failing\"\n \u003e \n \u003e L197 takes care of that, right? Just need to update the msg.\n\nI don\u0027t know what you\u0027re saying about L197.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dfc45e75b5dbaaa58d7a8b84af8b7e4e10e77335","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_8e1dd6be","line":196,"in_reply_to":"5faad753_2e85c25a","updated":"2019-09-11 15:38:17.000000000","message":"I mean that when we raise, that\u0027s logged, so we don\u0027t need an explicit LOG.error there.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed62d1d972e62d337605a6086f4c9d483c3366fa","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_ffd436bf","line":196,"in_reply_to":"5faad753_8e1dd6be","updated":"2019-09-11 17:09:10.000000000","message":"Well, we raise but where is it logged? It would be handled here:\n\nhttps://github.com/openstack/nova/blob/0575eabffb0f574942f8695bccc9dc48ad122d49/nova/conductor/manager.py#L450\n\nBut that doesn\u0027t log anything. I guess it calls this:\n\nhttps://github.com/openstack/nova/blob/0575eabffb0f574942f8695bccc9dc48ad122d49/nova/conductor/manager.py#L412\n\nWhich I guess will log a warning here:\n\nhttps://github.com/openstack/nova/blob/0575eabffb0f574942f8695bccc9dc48ad122d49/nova/scheduler/utils.py#L686","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_90d09921","line":196,"in_reply_to":"5faad753_9d8992cb","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"944d8e44ea286e9df44d940d5c16579ed07cb534","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # We\u0027re fully upgraded to a version that supports NUMA live"},{"line_number":195,"context_line":"        # migration, carry on."},{"line_number":196,"context_line":"        if objects.Service.get_minimum_version("},{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_10dee910","line":196,"in_reply_to":"5faad753_9d8992cb","updated":"2019-09-11 14:24:26.000000000","message":"Yeah, I think logging both of the two non-happy ways would be good:\n\n 1. ERROR: \"Computes are too old and the workaround is disabled, failing\"\n 2. WARNING: \"Computes are too old to do the smart thing, workaround is enabled, doing that\"","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"76c42c9d897103050c30c05e527e79f97c19eb6e","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":202,"context_line":"               \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":203,"context_line":"               \u0027pinning information, are not currently recalculated on \u0027"}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_4e511e0e","line":200,"range":{"start_line":200,"start_character":56,"end_line":200,"end_character":57},"updated":"2019-09-11 15:07:19.000000000","message":"so maybe adjust here and say \"Instance has an associated NUMA topology and the nova-compute services in its cell are not fully upgraded yet to support NUMA-aware live migration properly. Instance NUMA topologies...\"","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":202,"context_line":"               \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":203,"context_line":"               \u0027pinning information, are not currently recalculated on \u0027"}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_ce650ee3","line":200,"range":{"start_line":200,"start_character":56,"end_line":200,"end_character":57},"in_reply_to":"5faad753_4e511e0e","updated":"2019-09-11 15:09:24.000000000","message":"\u003e the nova-compute services in its cell are not fully\n \u003e upgraded yet to support NUMA-aware live migration properly.\n\nYeah, that\u0027s the thing I have issues with - the specific source and dest might be new, and would make it work.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"55a2d9379a36cf801a806c6e5301973ec94be9c1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                self.context, \u0027nova-compute\u0027) \u003e\u003d 40:"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        msg \u003d (\u0027Instance has an associated NUMA topology. \u0027"},{"line_number":201,"context_line":"               \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":202,"context_line":"               \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":203,"context_line":"               \u0027pinning information, are not currently recalculated on \u0027"}],"source_content_type":"text/x-python","patch_set":50,"id":"5faad753_4e883e70","line":200,"range":{"start_line":200,"start_character":56,"end_line":200,"end_character":57},"in_reply_to":"5faad753_ce650ee3","updated":"2019-09-11 15:11:19.000000000","message":"BUT THAT\u0027S NOT HOW THE CODE WORKS HERE SO IT DOESN\u0027T MATTER ARTOM","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe425182bf397a79f5a2ef5f4f6bb139f676b1e7","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":201,"context_line":"            LOG.warning("},{"line_number":202,"context_line":"                \u0027Instance has an associated NUMA topology, cell contains \u0027"},{"line_number":203,"context_line":"                \u0027compute nodes older than train, but the \u0027"},{"line_number":204,"context_line":"                \u0027enable_numa_live_migration workaround is enabled. Live \u0027"},{"line_number":205,"context_line":"                \u0027migration will not be NUMA-aware. The instance NUMA \u0027"},{"line_number":206,"context_line":"                \u0027topology, including related attributes such as CPU pinning, \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_1f903243","line":203,"range":{"start_line":202,"start_character":59,"end_line":203,"end_character":47},"updated":"2019-09-11 17:01:25.000000000","message":"This isn\u0027t necessarily correct, which is why I think this is too much detail here. Explaining every possible way we could have gotten here is too much for a log message, IMHO. However, I don\u0027t care that much and I think we said we could nit out over log messages all we want in a follow-up.","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be829114c70e9d09c0dc37de8e15b3ecf8d24fbb","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":201,"context_line":"            LOG.warning("},{"line_number":202,"context_line":"                \u0027Instance has an associated NUMA topology, cell contains \u0027"},{"line_number":203,"context_line":"                \u0027compute nodes older than train, but the \u0027"},{"line_number":204,"context_line":"                \u0027enable_numa_live_migration workaround is enabled. Live \u0027"},{"line_number":205,"context_line":"                \u0027migration will not be NUMA-aware. The instance NUMA \u0027"},{"line_number":206,"context_line":"                \u0027topology, including related attributes such as CPU pinning, \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_7f9845bf","line":203,"range":{"start_line":202,"start_character":59,"end_line":203,"end_character":47},"in_reply_to":"5faad753_1f15929c","updated":"2019-09-11 17:19:34.000000000","message":"Yeah I suppose computes are old our the cache in conductor is stale and conductor needs to be restarted, or Jupiter is not aligned with Venus, etc.","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c95d0768d5a8d95f05e28f0fbb8ced8ee8acf99c","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":201,"context_line":"            LOG.warning("},{"line_number":202,"context_line":"                \u0027Instance has an associated NUMA topology, cell contains \u0027"},{"line_number":203,"context_line":"                \u0027compute nodes older than train, but the \u0027"},{"line_number":204,"context_line":"                \u0027enable_numa_live_migration workaround is enabled. Live \u0027"},{"line_number":205,"context_line":"                \u0027migration will not be NUMA-aware. The instance NUMA \u0027"},{"line_number":206,"context_line":"                \u0027topology, including related attributes such as CPU pinning, \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_1f15929c","line":203,"range":{"start_line":202,"start_character":59,"end_line":203,"end_character":47},"in_reply_to":"5faad753_1f903243","updated":"2019-09-11 17:13:51.000000000","message":"Well, you said in your comment on the previous patch:\n\n 1. ERROR: \"Computes are too old and the workaround is disabled, failing\"\n\nI guess by \"not necessarily correct\" you mean caching? Not sure what else I can put here. Since you seem to be OK with this, let\u0027s nit-out in a fup.","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"67c22529d6a48c982222454210e174a706700eba","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":201,"context_line":"            LOG.warning("},{"line_number":202,"context_line":"                \u0027Instance has an associated NUMA topology, cell contains \u0027"},{"line_number":203,"context_line":"                \u0027compute nodes older than train, but the \u0027"},{"line_number":204,"context_line":"                \u0027enable_numa_live_migration workaround is enabled. Live \u0027"},{"line_number":205,"context_line":"                \u0027migration will not be NUMA-aware. The instance NUMA \u0027"},{"line_number":206,"context_line":"                \u0027topology, including related attributes such as CPU pinning, \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_1f3271a8","line":203,"range":{"start_line":202,"start_character":59,"end_line":203,"end_character":47},"in_reply_to":"5faad753_7f9845bf","updated":"2019-09-11 17:27:18.000000000","message":"I meant not necessarily, because everything could be completely updated but versions are still pinned manually. And I was giving you the scenarios, not the exact text to put in the string.","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe425182bf397a79f5a2ef5f4f6bb139f676b1e7","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                instance\u003dself.instance)"},{"line_number":210,"context_line":"        else:"},{"line_number":211,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                reason\u003d\u0027Instance has an associated NUMA topology, cell \u0027"},{"line_number":213,"context_line":"                       \u0027contains compute nodes older than train, and the \u0027"},{"line_number":214,"context_line":"                       \u0027enablde_numa_live_migration workaround is disabled. \u0027"},{"line_number":215,"context_line":"                       \u0027Refusing to perform the live migration, as the \u0027"},{"line_number":216,"context_line":"                       \u0027instance NUMA topology, including related attributes \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_df993a6e","line":213,"range":{"start_line":212,"start_character":66,"end_line":213,"end_character":63},"updated":"2019-09-11 17:01:25.000000000","message":"ditto","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe425182bf397a79f5a2ef5f4f6bb139f676b1e7","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                reason\u003d\u0027Instance has an associated NUMA topology, cell \u0027"},{"line_number":213,"context_line":"                       \u0027contains compute nodes older than train, and the \u0027"},{"line_number":214,"context_line":"                       \u0027enablde_numa_live_migration workaround is disabled. \u0027"},{"line_number":215,"context_line":"                       \u0027Refusing to perform the live migration, as the \u0027"},{"line_number":216,"context_line":"                       \u0027instance NUMA topology, including related attributes \u0027"},{"line_number":217,"context_line":"                       \u0027such as CPU pinning, huge page and emulator thread \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_bf9ebe51","line":214,"range":{"start_line":214,"start_character":24,"end_line":214,"end_character":31},"updated":"2019-09-11 17:01:25.000000000","message":"enable","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c95d0768d5a8d95f05e28f0fbb8ced8ee8acf99c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                reason\u003d\u0027Instance has an associated NUMA topology, cell \u0027"},{"line_number":213,"context_line":"                       \u0027contains compute nodes older than train, and the \u0027"},{"line_number":214,"context_line":"                       \u0027enablde_numa_live_migration workaround is disabled. \u0027"},{"line_number":215,"context_line":"                       \u0027Refusing to perform the live migration, as the \u0027"},{"line_number":216,"context_line":"                       \u0027instance NUMA topology, including related attributes \u0027"},{"line_number":217,"context_line":"                       \u0027such as CPU pinning, huge page and emulator thread \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"5faad753_9f8982cb","line":214,"range":{"start_line":214,"start_character":24,"end_line":214,"end_character":31},"in_reply_to":"5faad753_bf9ebe51","updated":"2019-09-11 17:13:51.000000000","message":"Done","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"}],"nova/conf/workarounds.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5083e733f3507c81c0d9ffee3c260e957803c17e","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_17ae3b2e","line":191,"updated":"2019-07-04 10:14:31.000000000","message":"You should probably deprecate this for removal now since we\u0027re going to remove it in U (or in a later release if we forget)","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f5c2418187ffd1a9a171305333d367e38f0d0c07","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_9730e809","line":191,"in_reply_to":"7faddb67_17ae3b2e","updated":"2019-07-04 12:37:17.000000000","message":"Done","commit_id":"58c151d7a165815461e9aca3db78cb93bbb8b394"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e4f64cecf8ae3858120699638fdc96c124d2b835","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"},{"line_number":163,"context_line":"with NUMA live migration. Those issues were resolved in Train. Clouds fully"},{"line_number":164,"context_line":"upgraded to Train suppotr NUMA live migration. This option will be removed in a"},{"line_number":165,"context_line":"future release."},{"line_number":166,"context_line":"\"\"\","},{"line_number":167,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_75134bb9","line":164,"range":{"start_line":164,"start_character":18,"end_line":164,"end_character":25},"updated":"2019-08-16 18:37:29.000000000","message":"support","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"37e9b86bbee519a35f7a5592d3efed4f0cc1fed8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"},{"line_number":163,"context_line":"with NUMA live migration. Those issues were resolved in Train. Clouds fully"},{"line_number":164,"context_line":"upgraded to Train suppotr NUMA live migration. This option will be removed in a"},{"line_number":165,"context_line":"future release."},{"line_number":166,"context_line":"\"\"\","},{"line_number":167,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_cb8517b0","line":164,"range":{"start_line":164,"start_character":18,"end_line":164,"end_character":25},"in_reply_to":"7faddb67_75134bb9","updated":"2019-08-27 19:53:06.000000000","message":"Done","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e4f64cecf8ae3858120699638fdc96c124d2b835","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"NUMA live migration is only supported on deployments that have been fully"},{"line_number":171,"context_line":"upgraded to Train. In previous versions, or in mixed Stein/Train deployments"},{"line_number":172,"context_line":"with a rolling upgrade in progress, live migration of instances with NUMA"},{"line_number":173,"context_line":"topologies is disabled by default when using the libvirt driver. This includes"},{"line_number":174,"context_line":"live migration of instances with CPU pinning or hugepages. CPU pinning and huge"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_550e4f8c","line":171,"range":{"start_line":171,"start_character":12,"end_line":171,"end_character":17},"updated":"2019-08-16 18:37:29.000000000","message":", or later?","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"37e9b86bbee519a35f7a5592d3efed4f0cc1fed8","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"NUMA live migration is only supported on deployments that have been fully"},{"line_number":171,"context_line":"upgraded to Train. In previous versions, or in mixed Stein/Train deployments"},{"line_number":172,"context_line":"with a rolling upgrade in progress, live migration of instances with NUMA"},{"line_number":173,"context_line":"topologies is disabled by default when using the libvirt driver. This includes"},{"line_number":174,"context_line":"live migration of instances with CPU pinning or hugepages. CPU pinning and huge"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_8b8f1fcc","line":171,"range":{"start_line":171,"start_character":12,"end_line":171,"end_character":17},"in_reply_to":"7faddb67_550e4f8c","updated":"2019-08-27 19:53:06.000000000","message":"Done","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7a52233d4ed1ad7d210d812becafbbf7c238885","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    cfg.BoolOpt("},{"line_number":158,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":159,"context_line":"        default\u003dFalse,"},{"line_number":160,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"}],"source_content_type":"text/x-python","patch_set":45,"id":"5faad753_0f8fd223","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":22},"updated":"2019-09-09 23:00:48.000000000","message":"note to self, we are not enableing this by default to support\nrolling upgrades or mix version clouds.\n\nthe _check_instance_has_no_numa function has been updated to check the minium version fo the comptue service so it should enabel this behavior if all compute services are upgraded.","commit_id":"f234b6e65cc50e6792c693c24502b2ea00b2da33"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7a52233d4ed1ad7d210d812becafbbf7c238885","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        help\u003d\"\"\""},{"line_number":168,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"NUMA live migration is only supported on deployments that have been fully"},{"line_number":171,"context_line":"upgraded to Train or later. In previous versions, or in mixed Stein/Train"},{"line_number":172,"context_line":"deployments with a rolling upgrade in progress, live migration of instances"},{"line_number":173,"context_line":"with NUMA topologies is disabled by default when using the libvirt driver. This"},{"line_number":174,"context_line":"includes live migration of instances with CPU pinning or hugepages. CPU pinning"}],"source_content_type":"text/x-python","patch_set":45,"id":"5faad753_0fdd9213","line":171,"range":{"start_line":170,"start_character":0,"end_line":171,"end_character":27},"updated":"2019-09-09 23:00:48.000000000","message":"this is not entirely true.\nas long as the conductor and the source and dest nodes are updated and they are usign the new rpc version 5.3 it will work.\n\nso if you have a multi cell deployment and all the nodes in that cell were updated this feature could be used in that cell even if the other cells were not upgraded yet.\n\nthat said this is just being concentrative.","commit_id":"f234b6e65cc50e6792c693c24502b2ea00b2da33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":161,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Live migration of instances with NUMA topologies is disabled by default"},{"line_number":164,"context_line":"when using the libvirt driver. This includes live migration of instances with"},{"line_number":165,"context_line":"CPU pinning or hugepages. CPU pinning and huge page information for such"},{"line_number":166,"context_line":"instances is not currently re-calculated, as noted in `bug #1289064`_.  This"},{"line_number":167,"context_line":"means that if instances were already present on the destination host, the"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_b01cc8c1","side":"PARENT","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":30},"updated":"2019-09-10 20:41:13.000000000","message":"ding ding ding","commit_id":"808caebf89061633f6de589df31c8c973069ce73"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    cfg.BoolOpt("},{"line_number":158,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":159,"context_line":"        default\u003dFalse,"},{"line_number":160,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"},{"line_number":163,"context_line":"with NUMA live migration. Those issues were resolved in Train. Clouds fully"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_50c79413","line":160,"updated":"2019-09-10 20:41:13.000000000","message":"Why isn\u0027t there a deprecation release note for this and for that matter, a feature release note for the new support?","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    cfg.BoolOpt("},{"line_number":158,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":159,"context_line":"        default\u003dFalse,"},{"line_number":160,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"},{"line_number":163,"context_line":"with NUMA live migration. Those issues were resolved in Train. Clouds fully"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_ddfdd8b1","line":160,"in_reply_to":"5faad753_50c79413","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"},{"line_number":163,"context_line":"with NUMA live migration. Those issues were resolved in Train. Clouds fully"},{"line_number":164,"context_line":"upgraded to Train support NUMA live migration. This option will be removed in a"},{"line_number":165,"context_line":"future release."},{"line_number":166,"context_line":"\"\"\","},{"line_number":167,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_501474a0","line":164,"range":{"start_line":163,"start_character":63,"end_line":164,"end_character":46},"updated":"2019-09-10 20:41:13.000000000","message":"Well, technically only compute nodes running the libvirt driver, right? Shouldn\u0027t we be a bit more specific since there is a comment in the code about hyperv:\n\n# Only KVM (libvirt) supports NUMA topologies with CPU pinning;\n# HyperV\u0027s vNUMA feature doesn\u0027t allow specific pinning","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":161,"context_line":"        deprecated_since\u003d\u002720.0.0\u0027,"},{"line_number":162,"context_line":"        deprecated_reason\u003d\"\"\"This option was added to mitigate known issues"},{"line_number":163,"context_line":"with NUMA live migration. Those issues were resolved in Train. Clouds fully"},{"line_number":164,"context_line":"upgraded to Train support NUMA live migration. This option will be removed in a"},{"line_number":165,"context_line":"future release."},{"line_number":166,"context_line":"\"\"\","},{"line_number":167,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_bd1b3c19","line":164,"range":{"start_line":163,"start_character":63,"end_line":164,"end_character":46},"in_reply_to":"5faad753_501474a0","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"NUMA live migration is only supported on deployments that have been fully"},{"line_number":171,"context_line":"upgraded to Train or later. In previous versions, or in mixed Stein/Train"},{"line_number":172,"context_line":"deployments with a rolling upgrade in progress, live migration of instances"},{"line_number":173,"context_line":"with NUMA topologies is disabled by default when using the libvirt driver. This"},{"line_number":174,"context_line":"includes live migration of instances with CPU pinning or hugepages. CPU pinning"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_707c10eb","line":171,"range":{"start_line":171,"start_character":26,"end_line":171,"end_character":27},"updated":"2019-09-10 20:41:13.000000000","message":"when using the libvirt driver - again, hyperv supports numa live migration yeah?","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"NUMA live migration is only supported on deployments that have been fully"},{"line_number":171,"context_line":"upgraded to Train or later. In previous versions, or in mixed Stein/Train"},{"line_number":172,"context_line":"deployments with a rolling upgrade in progress, live migration of instances"},{"line_number":173,"context_line":"with NUMA topologies is disabled by default when using the libvirt driver. This"},{"line_number":174,"context_line":"includes live migration of instances with CPU pinning or hugepages. CPU pinning"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_5de008fb","line":171,"range":{"start_line":171,"start_character":26,"end_line":171,"end_character":27},"in_reply_to":"5faad753_707c10eb","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"}],"nova/objects/service.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e4f64cecf8ae3858120699638fdc96c124d2b835","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    # Version 39: Compute RPC version 5.2"},{"line_number":157,"context_line":"    {\u0027compute_rpc\u0027: \u00275.2\u0027},"},{"line_number":158,"context_line":"    # Version 40: Indicates support for NUMA live migration"},{"line_number":159,"context_line":"    {\u0027compute_rpc\u0027: \u00275.2\u0027},"},{"line_number":160,"context_line":")"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_d519dfd0","line":159,"updated":"2019-08-16 18:37:29.000000000","message":"Um, no, I think you should put the RPC bump after all the plumbing and then check for that bump to know if it\u0027s working. Otherwise, as mentioned before, we have two versions (RPC and Service) that indicate that NUMA LM may or may not be implemented, and then another one that means \"okay for reals now\".","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"37e9b86bbee519a35f7a5592d3efed4f0cc1fed8","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    # Version 39: Compute RPC version 5.2"},{"line_number":157,"context_line":"    {\u0027compute_rpc\u0027: \u00275.2\u0027},"},{"line_number":158,"context_line":"    # Version 40: Indicates support for NUMA live migration"},{"line_number":159,"context_line":"    {\u0027compute_rpc\u0027: \u00275.2\u0027},"},{"line_number":160,"context_line":")"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_4beda78c","line":159,"in_reply_to":"7faddb67_d519dfd0","updated":"2019-08-27 19:53:06.000000000","message":"Done","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"}],"nova/tests/unit/conductor/tasks/test_live_migrate.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3d5a7e7465bb84aa926f5b8a7e5399b2f69d32c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    @mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"},{"line_number":214,"context_line":"                       return_value\u003d39)"},{"line_number":215,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"},{"line_number":216,"context_line":"    def test_check_instance_has_no_numa_fails(self, mock_get, _):"},{"line_number":217,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":218,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":219,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027QEMU\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_4b17e755","line":216,"range":{"start_line":216,"start_character":32,"end_line":216,"end_character":39},"updated":"2019-09-04 13:33:14.000000000","message":"I\u0027m not sure how to reconcile this test name with L220 below, but the intention here seems to be to fail, so I\u0027m mocking the service version to allow that to happen.","commit_id":"1758b26eee3444c41f6107ca65d1b00cfa1f01d9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":188,"context_line":"        self.task.instance.numa_topology \u003d None"},{"line_number":189,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":190,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":191,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_904f4cbc","line":190,"range":{"start_line":190,"start_character":45,"end_line":190,"end_character":49},"updated":"2019-09-10 20:41:13.000000000","message":"Why did you need to change this?","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":188,"context_line":"        self.task.instance.numa_topology \u003d None"},{"line_number":189,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":190,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":191,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_bdcb2e70","line":190,"range":{"start_line":190,"start_character":45,"end_line":190,"end_character":49},"in_reply_to":"5faad753_1d90504e","updated":"2019-09-11 13:57:32.000000000","message":"OK, but it\u0027s also unrelated to your change and the code is doing a lower() check against the enum so I don\u0027t see why it matters to you to change it here.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":188,"context_line":"        self.task.instance.numa_topology \u003d None"},{"line_number":189,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":190,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":191,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_1d90504e","line":190,"range":{"start_line":190,"start_character":45,"end_line":190,"end_character":49},"in_reply_to":"5faad753_904f4cbc","updated":"2019-09-11 11:14:01.000000000","message":"https://review.opendev.org/#/c/640462/\n\nWe fixed the code but not all of the tests. In this case, it\u0027s hardless because we pass on [1]...\n\n[1] [1] https://review.opendev.org/#/c/640021/48/nova/conductor/tasks/live_migrate.py@182","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":188,"context_line":"        self.task.instance.numa_topology \u003d None"},{"line_number":189,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":190,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":191,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_30d68551","line":190,"range":{"start_line":190,"start_character":45,"end_line":190,"end_character":49},"in_reply_to":"5faad753_bdcb2e70","updated":"2019-09-11 15:09:24.000000000","message":"See below - it\u0027s harmless here, but should still be set to the \"real\" value for consistency and correctness.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            cells\u003d[objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0]),"},{"line_number":211,"context_line":"                                            memory\u003d1024)])"},{"line_number":212,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":213,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":214,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":215,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_b04a88a9","line":213,"range":{"start_line":213,"start_character":45,"end_line":213,"end_character":49},"updated":"2019-09-10 20:41:13.000000000","message":"and this?","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            cells\u003d[objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0]),"},{"line_number":211,"context_line":"                                            memory\u003d1024)])"},{"line_number":212,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":213,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":214,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":215,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_dd72b849","line":213,"range":{"start_line":213,"start_character":45,"end_line":213,"end_character":49},"in_reply_to":"5faad753_b04a88a9","updated":"2019-09-11 11:14:01.000000000","message":"... [continued from L190] but here we were passing on [1], which is clearly not what we\u0027re meant to test.\n\n[1] [1] https://review.opendev.org/#/c/640021/48/nova/conductor/tasks/live_migrate.py@192","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            cells\u003d[objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0]),"},{"line_number":211,"context_line":"                                            memory\u003d1024)])"},{"line_number":212,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":213,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":214,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":215,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_dd84ea0e","line":213,"range":{"start_line":213,"start_character":45,"end_line":213,"end_character":49},"in_reply_to":"5faad753_dd72b849","updated":"2019-09-11 13:57:32.000000000","message":"Same reply as above, I don\u0027t see what it matters for your change, it\u0027s unrelated and the code is doing a lower() on the compute node field so it doesn\u0027t matter.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            cells\u003d[objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0]),"},{"line_number":211,"context_line":"                                            memory\u003d1024)])"},{"line_number":212,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":213,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":214,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":215,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_10d34962","line":213,"range":{"start_line":213,"start_character":45,"end_line":213,"end_character":49},"in_reply_to":"5faad753_dd84ea0e","updated":"2019-09-11 15:09:24.000000000","message":"The problem is not lower(), it\u0027s this bit in the task code:\n\n  # KVM is not a hypervisor, so when using a virt_type of \"kvm\" the\n  # hypervisor_type will still be \"QEMU\".\n  if hypervisor_type.lower() !\u003d obj_fields.HVType.QEMU:\n      return\n\nThis happens before we actually check the value of the workaround config option, which is what this test is trying to test. Because we used to test with the \"kvm\" hypervisor, which is 1. not real 2. not what the code checks for, this test was always a false positive because it was passing the hypervisor check before ever getting to checking the value of the workaround config option.","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":213,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":214,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":215,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"},{"line_number":218,"context_line":"    @mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_105cbc7c","line":215,"range":{"start_line":215,"start_character":25,"end_line":215,"end_character":43},"updated":"2019-09-10 20:41:13.000000000","message":"assert_called_once_with","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":213,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027qemu\u0027)"},{"line_number":214,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":215,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"},{"line_number":218,"context_line":"    @mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_1038299e","line":215,"range":{"start_line":215,"start_character":25,"end_line":215,"end_character":43},"in_reply_to":"5faad753_105cbc7c","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                                            memory\u003d1024)])"},{"line_number":228,"context_line":"        self.assertRaises(exception.MigrationPreCheckError,"},{"line_number":229,"context_line":"                          self.task._check_instance_has_no_numa)"},{"line_number":230,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"},{"line_number":233,"context_line":"    @mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_305f7873","line":230,"range":{"start_line":230,"start_character":25,"end_line":230,"end_character":43},"updated":"2019-09-10 20:41:13.000000000","message":"assert_called_once_with","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                                            memory\u003d1024)])"},{"line_number":228,"context_line":"        self.assertRaises(exception.MigrationPreCheckError,"},{"line_number":229,"context_line":"                          self.task._check_instance_has_no_numa)"},{"line_number":230,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"},{"line_number":233,"context_line":"    @mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_3d998c6d","line":230,"range":{"start_line":230,"start_character":25,"end_line":230,"end_character":43},"in_reply_to":"5faad753_305f7873","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05ca5a0ff1c9d5ea5d3a2fcd6dd9633d3e7dbd80","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            cells\u003d[objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0]),"},{"line_number":242,"context_line":"                                            memory\u003d1024)])"},{"line_number":243,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":244,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    @mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027)"},{"line_number":247,"context_line":"    @mock.patch.object(servicegroup.API, \u0027service_is_up\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_d055c451","line":244,"range":{"start_line":244,"start_character":25,"end_line":244,"end_character":43},"updated":"2019-09-10 20:41:13.000000000","message":"assert_called_once_with","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            cells\u003d[objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0]),"},{"line_number":242,"context_line":"                                            memory\u003d1024)])"},{"line_number":243,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":244,"context_line":"        mock_get_min_ver.assert_called_with(self.context, \u0027nova-compute\u0027)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    @mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027)"},{"line_number":247,"context_line":"    @mock.patch.object(servicegroup.API, \u0027service_is_up\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5faad753_5d9c885c","line":244,"range":{"start_line":244,"start_character":25,"end_line":244,"end_character":43},"in_reply_to":"5faad753_d055c451","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"9cd260e084a7c114747f598f99f48a50879c0e62"}],"releasenotes/notes/numa-aware-live-migration-4297653974458ee1.yaml":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"685d6ead9f0766ccf5074011d0ee50b7c1e156f0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    deprecated. Once a cell has been fully upgraded to Train, its value is"},{"line_number":29,"context_line":"    ignored."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    .. note:: Even in a cell fully upgraded to Train, RPC pinning via"},{"line_number":32,"context_line":"    ``CONF.upgrade_levels.compute`` can cause live migration of instances with"},{"line_number":33,"context_line":"    a NUMA topology to revert to the legacy naive behavior. For more details"},{"line_number":34,"context_line":"    refer to the Upgrade section."}],"source_content_type":"text/x-yaml","patch_set":49,"id":"5faad753_d1d620c4","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":33},"updated":"2019-09-11 08:03:22.000000000","message":"It should be:\n\n    .. note::\n\n      Even in a cell fully upgraded to Train, RPC pinning via\n      ``CONF.upgrade_levels.compute`` can cause live migration of instances\n      with a NUMA topology to revert to the legacy naive behavior.\n      For more details refer to the Upgrade section.\n\nor\n\n    .. note:: Even in a cell fully upgraded to Train, RPC pinning via\n              ``CONF.upgrade_levels.compute`` can cause live migration of\n              instances with a NUMA topology to revert to the legacy naive\n              behavior. For more details refer to the Upgrade section.","commit_id":"13d112924a3b74b186185f02ef919d3acbe2fafd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7d0b575fe8cd580441e05268d3186489eb653c33","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    deprecated. Once a cell has been fully upgraded to Train, its value is"},{"line_number":29,"context_line":"    ignored."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    .. note:: Even in a cell fully upgraded to Train, RPC pinning via"},{"line_number":32,"context_line":"    ``CONF.upgrade_levels.compute`` can cause live migration of instances with"},{"line_number":33,"context_line":"    a NUMA topology to revert to the legacy naive behavior. For more details"},{"line_number":34,"context_line":"    refer to the Upgrade section."}],"source_content_type":"text/x-yaml","patch_set":49,"id":"5faad753_4015749b","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":33},"in_reply_to":"5faad753_d1d620c4","updated":"2019-09-11 11:14:01.000000000","message":"Done","commit_id":"13d112924a3b74b186185f02ef919d3acbe2fafd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    the destination host, without updating any of the underlying NUMA guest to"},{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be refused. If the instance can fit on the destination, the NUMA guest"},{"line_number":10,"context_line":"    to host mappings will be recalculated to reflect the its new host, and its"},{"line_number":11,"context_line":"    resource usage updated."},{"line_number":12,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_7d73764e","line":9,"range":{"start_line":9,"start_character":19,"end_line":9,"end_character":20},"updated":"2019-09-11 13:57:32.000000000","message":"and attempted on an alternate destination if the request is setup to have alternates.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    the destination host, without updating any of the underlying NUMA guest to"},{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be refused. If the instance can fit on the destination, the NUMA guest"},{"line_number":10,"context_line":"    to host mappings will be recalculated to reflect the its new host, and its"},{"line_number":11,"context_line":"    resource usage updated."},{"line_number":12,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_b0791530","line":9,"range":{"start_line":9,"start_character":19,"end_line":9,"end_character":20},"in_reply_to":"5faad753_7d73764e","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be refused. If the instance can fit on the destination, the NUMA guest"},{"line_number":10,"context_line":"    to host mappings will be recalculated to reflect the its new host, and its"},{"line_number":11,"context_line":"    resource usage updated."},{"line_number":12,"context_line":"upgrade:"},{"line_number":13,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_1db922cb","line":10,"range":{"start_line":10,"start_character":53,"end_line":10,"end_character":56},"updated":"2019-09-11 13:57:32.000000000","message":"nix","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be refused. If the instance can fit on the destination, the NUMA guest"},{"line_number":10,"context_line":"    to host mappings will be recalculated to reflect the its new host, and its"},{"line_number":11,"context_line":"    resource usage updated."},{"line_number":12,"context_line":"upgrade:"},{"line_number":13,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_3dbc1eba","line":10,"range":{"start_line":10,"start_character":29,"end_line":10,"end_character":31},"updated":"2019-09-11 13:57:32.000000000","message":"re-","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be refused. If the instance can fit on the destination, the NUMA guest"},{"line_number":10,"context_line":"    to host mappings will be recalculated to reflect the its new host, and its"},{"line_number":11,"context_line":"    resource usage updated."},{"line_number":12,"context_line":"upgrade:"},{"line_number":13,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_70ef1db0","line":10,"range":{"start_line":10,"start_character":53,"end_line":10,"end_character":56},"in_reply_to":"5faad753_1db922cb","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be refused. If the instance can fit on the destination, the NUMA guest"},{"line_number":10,"context_line":"    to host mappings will be recalculated to reflect the its new host, and its"},{"line_number":11,"context_line":"    resource usage updated."},{"line_number":12,"context_line":"upgrade:"},{"line_number":13,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_50f46186","line":10,"range":{"start_line":10,"start_character":29,"end_line":10,"end_character":31},"in_reply_to":"5faad753_3dbc1eba","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_fdea06aa","line":17,"range":{"start_line":17,"start_character":25,"end_line":17,"end_character":38},"updated":"2019-09-11 13:57:32.000000000","message":"``[upgrade_levels]/compute`` configuration option value","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_bdf56e85","line":17,"range":{"start_line":17,"start_character":58,"end_line":17,"end_character":65},"updated":"2019-09-11 13:57:32.000000000","message":"less than 5.3 or a release older than \"train\".\n\n--\n\nNote that you can set specific versions or release aliases:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#upgrade_levels.compute","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_f0bb0d6f","line":17,"range":{"start_line":17,"start_character":25,"end_line":17,"end_character":38},"in_reply_to":"5faad753_fdea06aa","updated":"2019-09-11 15:09:24.000000000","message":"\"option value\" sounds weird, no? Otherwise done.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"944d8e44ea286e9df44d940d5c16579ed07cb534","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_d035b147","line":17,"range":{"start_line":17,"start_character":25,"end_line":17,"end_character":38},"in_reply_to":"5faad753_fdea06aa","updated":"2019-09-11 14:24:26.000000000","message":"Yeah, use the upgrade_levels/compute instead of \"rpc\" because that\u0027s what people care about and will recognize. The generic non-service-scoped \"RPC\" above is ambiguous.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":21,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":22,"context_line":"    behavior, in which the instance was simply moved over without updating its"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_7d44d6b7","line":19,"range":{"start_line":17,"start_character":67,"end_line":19,"end_character":77},"updated":"2019-09-11 13:57:32.000000000","message":"You can get Dan\u0027s opinion but I wouldn\u0027t even include this in here. The upgrade statement is already confusing and this just adds more confusion. Let\u0027s just be clear that the computes must be upgraded to Train and the compute upgrade level can\u0027t be pinned lower than train/5.3.\n\nShould we try to add a summary statement? Something like, \"In other words, NUMA-aware live migration with the libvirt driver is not supported until (1) all compute and conductor services are upgraded to Train code and (2) the ``[upgrade_levels]/compute`` RPC API pin is removed (or set to \"auto\") and services are restarted.\n\n--\n\nFinally, this is a question for Dan, but conductor caches the min compute service version check value, so based on that summary above, is it worthwhile saying that conductor needs to be restarted to flush that cache after all computes are upgraded, unpinnned and restarted? Meaning you can\u0027t restart conductor before the computes and expect things to work b/c conductor would have a stale cache.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":21,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":22,"context_line":"    behavior, in which the instance was simply moved over without updating its"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_b02035b2","line":19,"range":{"start_line":17,"start_character":67,"end_line":19,"end_character":77},"in_reply_to":"5faad753_7d44d6b7","updated":"2019-09-11 15:09:24.000000000","message":"\u003e You can get Dan\u0027s opinion but I wouldn\u0027t even include this in here.\n \u003e The upgrade statement is already confusing and this just adds more\n \u003e confusion. Let\u0027s just be clear that the computes must be upgraded\n \u003e to Train and the compute upgrade level can\u0027t be pinned lower than\n \u003e train/5.3.\n\nFair point - the simpler the better, even if we have to oversimplify a bit.\n\n\n \u003e Should we try to add a summary statement? Something like, \"In other\n \u003e words, NUMA-aware live migration with the libvirt driver is not\n \u003e supported until (1) all compute and conductor services are upgraded\n \u003e to Train code and (2) the ``[upgrade_levels]/compute`` RPC API pin\n \u003e is removed (or set to \"auto\") and services are restarted.\n\nDone.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"944d8e44ea286e9df44d940d5c16579ed07cb534","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    For the libvirt driver, the NUMA-aware live migration feature requires the"},{"line_number":15,"context_line":"    conductor, source compute, and destination compute to be upgraded to Train."},{"line_number":16,"context_line":"    It also requires the conductor and source compute to be able to send RPC"},{"line_number":17,"context_line":"    5.3 - that is, their upgrade level must not be set to \u0027stein\u0027. The"},{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":21,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":22,"context_line":"    behavior, in which the instance was simply moved over without updating its"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_7072bd13","line":19,"range":{"start_line":17,"start_character":67,"end_line":19,"end_character":77},"in_reply_to":"5faad753_7d44d6b7","updated":"2019-09-11 14:24:26.000000000","message":"\u003e You can get Dan\u0027s opinion but I wouldn\u0027t even include this in here.\n \u003e The upgrade statement is already confusing and this just adds more\n \u003e confusion. Let\u0027s just be clear that the computes must be upgraded\n \u003e to Train and the compute upgrade level can\u0027t be pinned lower than\n \u003e train/5.3.\n\nYes, agree, we needed to test and validate those things, but don\u0027t try to articulate the complicated scenario.\n\n \u003e Should we try to add a summary statement? Something like, \"In other\n \u003e words, NUMA-aware live migration with the libvirt driver is not\n \u003e supported until (1) all compute and conductor services are upgraded\n \u003e to Train code and (2) the ``[upgrade_levels]/compute`` RPC API pin\n \u003e is removed (or set to \"auto\") and services are restarted.\n\nSounds good to me. Honestly, that summary might be enough as it is.\n\n \u003e Finally, this is a question for Dan, but conductor caches the min\n \u003e compute service version check value, so based on that summary\n \u003e above, is it worthwhile saying that conductor needs to be restarted\n \u003e to flush that cache after all computes are upgraded, unpinnned and\n \u003e restarted? Meaning you can\u0027t restart conductor before the computes\n \u003e and expect things to work b/c conductor would have a stale cache.\n\nI think that\u0027s always the case for any situation where conductor makes a newer compute call. So I guess it doesn\u0027t seem overly necessary to call it out specifically here, but it won\u0027t hurt of course.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":21,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":22,"context_line":"    behavior, in which the instance was simply moved over without updating its"},{"line_number":23,"context_line":"    NUMA guest to host mappings or its resource usage."},{"line_number":24,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_bd232e05","line":21,"range":{"start_line":21,"start_character":49,"end_line":21,"end_character":75},"updated":"2019-09-11 13:57:32.000000000","message":"Well, this is conditional on the enable_numa_live_migration option right? It\u0027s true in the case that the computes are upgraded but still RPC pinned, but not true in the case that the computes are not yet upgraded during a rolling upgrade with stein computes. I\u0027m not sure if you want to try and wordsmith that in here since it might just make things more confusing.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    destination compute, while needing to be upgraded to Train, is *not*"},{"line_number":19,"context_line":"    required to be able to send RPC 5.3 and can have a \u0027stein\u0027 upgrade level."},{"line_number":20,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":21,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":22,"context_line":"    behavior, in which the instance was simply moved over without updating its"},{"line_number":23,"context_line":"    NUMA guest to host mappings or its resource usage."},{"line_number":24,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_d3a5bb05","line":21,"range":{"start_line":21,"start_character":49,"end_line":21,"end_character":75},"in_reply_to":"5faad753_bd232e05","updated":"2019-09-11 15:09:24.000000000","message":"Added a note after.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    NUMA guest to host mappings or its resource usage."},{"line_number":24,"context_line":"deprecations:"},{"line_number":25,"context_line":"  - |"},{"line_number":26,"context_line":"    With the introduction of the NUMA-aware live migration feature for th"},{"line_number":27,"context_line":"    libvirt driver, ``CONF.workarounds.enable_numa_live_migration`` is"},{"line_number":28,"context_line":"    deprecated. Once a cell has been fully upgraded to Train, its value is"},{"line_number":29,"context_line":"    ignored."}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_7d8e16d1","line":26,"range":{"start_line":26,"start_character":71,"end_line":26,"end_character":73},"updated":"2019-09-11 13:57:32.000000000","message":"the","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    NUMA guest to host mappings or its resource usage."},{"line_number":24,"context_line":"deprecations:"},{"line_number":25,"context_line":"  - |"},{"line_number":26,"context_line":"    With the introduction of the NUMA-aware live migration feature for th"},{"line_number":27,"context_line":"    libvirt driver, ``CONF.workarounds.enable_numa_live_migration`` is"},{"line_number":28,"context_line":"    deprecated. Once a cell has been fully upgraded to Train, its value is"},{"line_number":29,"context_line":"    ignored."}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_53b9cb2b","line":26,"range":{"start_line":26,"start_character":71,"end_line":26,"end_character":73},"in_reply_to":"5faad753_7d8e16d1","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":24,"context_line":"deprecations:"},{"line_number":25,"context_line":"  - |"},{"line_number":26,"context_line":"    With the introduction of the NUMA-aware live migration feature for th"},{"line_number":27,"context_line":"    libvirt driver, ``CONF.workarounds.enable_numa_live_migration`` is"},{"line_number":28,"context_line":"    deprecated. Once a cell has been fully upgraded to Train, its value is"},{"line_number":29,"context_line":"    ignored."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_9db2f293","line":27,"range":{"start_line":27,"start_character":22,"end_line":27,"end_character":26},"updated":"2019-09-11 13:57:32.000000000","message":"This is code, not user docs. You should use ``[workarounds]/enable_numa_live_migration``.\n\nMajor pet peeve of mine and you\u0027re not the first to do this in docs.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":24,"context_line":"deprecations:"},{"line_number":25,"context_line":"  - |"},{"line_number":26,"context_line":"    With the introduction of the NUMA-aware live migration feature for th"},{"line_number":27,"context_line":"    libvirt driver, ``CONF.workarounds.enable_numa_live_migration`` is"},{"line_number":28,"context_line":"    deprecated. Once a cell has been fully upgraded to Train, its value is"},{"line_number":29,"context_line":"    ignored."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_3388cf6f","line":27,"range":{"start_line":27,"start_character":22,"end_line":27,"end_character":26},"in_reply_to":"5faad753_9db2f293","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"963a91508fa7533ac0b43f66ef9367ab94a18d35","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    ignored."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    .. note:: Even in a cell fully upgraded to Train, RPC pinning via"},{"line_number":32,"context_line":"              ``CONF.upgrade_levels.compute`` can cause live migration of"},{"line_number":33,"context_line":"              instances with a NUMA topology to revert to the legacy naive"},{"line_number":34,"context_line":"              behavior. For more details refer to the Upgrade section."}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_7da7f650","line":32,"range":{"start_line":32,"start_character":16,"end_line":32,"end_character":20},"updated":"2019-09-11 13:57:32.000000000","message":"I will cut you man.","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a47a3fc08855391725ef071d5dfa3b75c8337fad","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    ignored."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    .. note:: Even in a cell fully upgraded to Train, RPC pinning via"},{"line_number":32,"context_line":"              ``CONF.upgrade_levels.compute`` can cause live migration of"},{"line_number":33,"context_line":"              instances with a NUMA topology to revert to the legacy naive"},{"line_number":34,"context_line":"              behavior. For more details refer to the Upgrade section."}],"source_content_type":"text/x-yaml","patch_set":50,"id":"5faad753_f381d74b","line":32,"range":{"start_line":32,"start_character":16,"end_line":32,"end_character":20},"in_reply_to":"5faad753_7da7f650","updated":"2019-09-11 15:09:24.000000000","message":"Done","commit_id":"7e1e5fd06920b0df8e15819f6c1a12276a70f447"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eefd12382f2b9b846e4c35e7c52917a2bb0ae4b4","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    the destination host, without updating any of the underlying NUMA guest to"},{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be and attempted on an alternate destination if the request is"},{"line_number":10,"context_line":"    setup to have alternates. If the instance can fit on the destination, the"},{"line_number":11,"context_line":"    NUMA guest to host mappings will be re-calculated to reflect its new"},{"line_number":12,"context_line":"    host, and its resource usage updated."}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_5f2f8aa0","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":15},"updated":"2019-09-11 17:14:37.000000000","message":"nix","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a14cd03b909f42712ee9080e7f3f263df0a0c2c3","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    the destination host, without updating any of the underlying NUMA guest to"},{"line_number":7,"context_line":"    host mappings or the resource usage. With the new NUMA-aware live migration"},{"line_number":8,"context_line":"    feature, if the instance cannot fit on the destination the live migration"},{"line_number":9,"context_line":"    will be and attempted on an alternate destination if the request is"},{"line_number":10,"context_line":"    setup to have alternates. If the instance can fit on the destination, the"},{"line_number":11,"context_line":"    NUMA guest to host mappings will be re-calculated to reflect its new"},{"line_number":12,"context_line":"    host, and its resource usage updated."}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_7f412539","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":15},"in_reply_to":"5faad753_5f2f8aa0","updated":"2019-09-11 17:17:43.000000000","message":"Done","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eefd12382f2b9b846e4c35e7c52917a2bb0ae4b4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    not be set to less than 5.3 or a release older than \"train\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    In other words, NUMA-aware live migration with the libvirt driver is not"},{"line_number":22,"context_line":"    supported until the following conditions are met."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      * All compute and conductor services are upgraded to Train code."},{"line_number":25,"context_line":"      * The ``[upgrade_levels]/compute`` RPC API pin is removed (or set to"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_5f08ea2a","line":22,"range":{"start_line":22,"start_character":52,"end_line":22,"end_character":53},"updated":"2019-09-11 17:14:37.000000000","message":":","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a14cd03b909f42712ee9080e7f3f263df0a0c2c3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    not be set to less than 5.3 or a release older than \"train\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    In other words, NUMA-aware live migration with the libvirt driver is not"},{"line_number":22,"context_line":"    supported until the following conditions are met."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      * All compute and conductor services are upgraded to Train code."},{"line_number":25,"context_line":"      * The ``[upgrade_levels]/compute`` RPC API pin is removed (or set to"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_ff7675a4","line":22,"range":{"start_line":22,"start_character":52,"end_line":22,"end_character":53},"in_reply_to":"5faad753_5f08ea2a","updated":"2019-09-11 17:17:43.000000000","message":"Done","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eefd12382f2b9b846e4c35e7c52917a2bb0ae4b4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    In other words, NUMA-aware live migration with the libvirt driver is not"},{"line_number":22,"context_line":"    supported until the following conditions are met."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      * All compute and conductor services are upgraded to Train code."},{"line_number":25,"context_line":"      * The ``[upgrade_levels]/compute`` RPC API pin is removed (or set to"},{"line_number":26,"context_line":"        \"auto\") and services are restarted."},{"line_number":27,"context_line":"    "}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_bf09de31","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":6},"updated":"2019-09-11 17:14:37.000000000","message":"The alignment of this is wrong","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a14cd03b909f42712ee9080e7f3f263df0a0c2c3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    In other words, NUMA-aware live migration with the libvirt driver is not"},{"line_number":22,"context_line":"    supported until the following conditions are met."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      * All compute and conductor services are upgraded to Train code."},{"line_number":25,"context_line":"      * The ``[upgrade_levels]/compute`` RPC API pin is removed (or set to"},{"line_number":26,"context_line":"        \"auto\") and services are restarted."},{"line_number":27,"context_line":"    "}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_1f7a7187","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":6},"in_reply_to":"5faad753_bf09de31","updated":"2019-09-11 17:17:43.000000000","message":"Done","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe425182bf397a79f5a2ef5f4f6bb139f676b1e7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"      * All compute and conductor services are upgraded to Train code."},{"line_number":25,"context_line":"      * The ``[upgrade_levels]/compute`` RPC API pin is removed (or set to"},{"line_number":26,"context_line":"        \"auto\") and services are restarted."},{"line_number":27,"context_line":"    "},{"line_number":28,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":29,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":30,"context_line":"    behavior, in which the instance was simply moved over without updating its"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_9fcc226b","line":27,"updated":"2019-09-11 17:01:25.000000000","message":"whitespace","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c95d0768d5a8d95f05e28f0fbb8ced8ee8acf99c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"      * All compute and conductor services are upgraded to Train code."},{"line_number":25,"context_line":"      * The ``[upgrade_levels]/compute`` RPC API pin is removed (or set to"},{"line_number":26,"context_line":"        \"auto\") and services are restarted."},{"line_number":27,"context_line":"    "},{"line_number":28,"context_line":"    If any of these requirements are not met, live migration of instances with"},{"line_number":29,"context_line":"    a NUMA topology with the libvirt driver will revert to the legacy naive"},{"line_number":30,"context_line":"    behavior, in which the instance was simply moved over without updating its"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_ff3e76d8","line":27,"in_reply_to":"5faad753_9fcc226b","updated":"2019-09-11 17:13:51.000000000","message":"Done","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe425182bf397a79f5a2ef5f4f6bb139f676b1e7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    behavior, in which the instance was simply moved over without updating its"},{"line_number":31,"context_line":"    NUMA guest to host mappings or its resource usage."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    .. note:: The legacy naive behavior is dependant on the value of the"},{"line_number":34,"context_line":"              ``[workarounds]/enable_numa_live_migration`` option. Refer to the"},{"line_number":35,"context_line":"              Deprecations sections for more details."},{"line_number":36,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_1fdef210","line":33,"range":{"start_line":33,"start_character":43,"end_line":33,"end_character":52},"updated":"2019-09-11 17:01:25.000000000","message":"dependent","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c95d0768d5a8d95f05e28f0fbb8ced8ee8acf99c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    behavior, in which the instance was simply moved over without updating its"},{"line_number":31,"context_line":"    NUMA guest to host mappings or its resource usage."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    .. note:: The legacy naive behavior is dependant on the value of the"},{"line_number":34,"context_line":"              ``[workarounds]/enable_numa_live_migration`` option. Refer to the"},{"line_number":35,"context_line":"              Deprecations sections for more details."},{"line_number":36,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5faad753_9f2502c5","line":33,"range":{"start_line":33,"start_character":43,"end_line":33,"end_character":52},"in_reply_to":"5faad753_1fdef210","updated":"2019-09-11 17:13:51.000000000","message":"Done","commit_id":"2f3f7471c36ca68a9d421c1c89683d3bbfb6524a"}]}
