)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a47985bc8ede5e16ef6a430c16fb9d0488123a9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"374408d7_c8bd9c18","updated":"2023-01-11 10:01:28.000000000","message":"I have some comments inline","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"29769efe4f51d61f1e0051e589db9aa9d5fceee0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0f42bdb7_1ada5a6b","updated":"2023-01-10 12:52:16.000000000","message":"The failures of \"nova-tox-functional\" jobs are unrelated to this patch.  That failure is addressed in a separate, unrelated patch by Gibi:\n\nhttps://review.opendev.org/c/openstack/nova/+/869545 (Remove basepython def from tox.ini)","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"13707272ee36f7bc13757065bffa5377a714643d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"11f11116_7a7054b4","updated":"2023-01-10 14:07:43.000000000","message":"recheck (Gate blocker is fixed https://review.opendev.org/c/openstack/nova/+/869545)\n\n","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"3ec5fea862e82e6d4d3d76856bc31c138d15a8b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0bbf8823_5844409a","updated":"2023-01-11 09:51:24.000000000","message":"recheck (unrelated timeout in \u0027tempest-integrated-compute\u0027 job)","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1dbab5dc1025ce715abaa3a9b668e4228eccd9a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f0e54886_3d363701","updated":"2023-01-11 11:26:00.000000000","message":"Looks OK to me.","commit_id":"a34494b852d2e0c9bd48f699ab5b0fb788c9544e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a47985bc8ede5e16ef6a430c16fb9d0488123a9c","unresolved":true,"context_lines":[{"line_number":973,"context_line":"                    \"support selecting CPU models\") % CONF.libvirt.virt_type"},{"line_number":974,"context_line":"            raise exception.Invalid(msg)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if mode !\u003d \"custom\":"},{"line_number":977,"context_line":"            if not models:"},{"line_number":978,"context_line":"                return"},{"line_number":979,"context_line":"            msg \u003d _(\"The cpu_models option is not required when \""},{"line_number":980,"context_line":"                    \"cpu_mode!\u003dcustom\")"},{"line_number":981,"context_line":"            raise exception.Invalid(msg)"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"        if not models:"},{"line_number":984,"context_line":"            msg \u003d _(\"The cpu_models option is required when cpu_mode\u003dcustom\")"},{"line_number":985,"context_line":"            raise exception.Invalid(msg)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":988,"context_line":"        for model in models:"},{"line_number":989,"context_line":"            cpu.model \u003d self._get_cpu_model_mapping(model)"},{"line_number":990,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"c4320c0c_99b87ec8","side":"PARENT","line":987,"range":{"start_line":976,"start_character":8,"end_line":987,"end_character":45},"updated":"2023-01-11 10:01:28.000000000","message":"I\u0027m wondering if this is dead code now as mode and model is checked here probably because the `_get_cpu_model_mapping` call that was deleted depended on it.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"02e0b89afa18e690105caada780846887faf9f39","unresolved":true,"context_lines":[{"line_number":973,"context_line":"                    \"support selecting CPU models\") % CONF.libvirt.virt_type"},{"line_number":974,"context_line":"            raise exception.Invalid(msg)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if mode !\u003d \"custom\":"},{"line_number":977,"context_line":"            if not models:"},{"line_number":978,"context_line":"                return"},{"line_number":979,"context_line":"            msg \u003d _(\"The cpu_models option is not required when \""},{"line_number":980,"context_line":"                    \"cpu_mode!\u003dcustom\")"},{"line_number":981,"context_line":"            raise exception.Invalid(msg)"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"        if not models:"},{"line_number":984,"context_line":"            msg \u003d _(\"The cpu_models option is required when cpu_mode\u003dcustom\")"},{"line_number":985,"context_line":"            raise exception.Invalid(msg)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":988,"context_line":"        for model in models:"},{"line_number":989,"context_line":"            cpu.model \u003d self._get_cpu_model_mapping(model)"},{"line_number":990,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"430b90f1_6b222f45","side":"PARENT","line":987,"range":{"start_line":976,"start_character":8,"end_line":987,"end_character":45},"in_reply_to":"201813e0_f3fcc608","updated":"2023-01-11 10:42:06.000000000","message":"OK lets keep the mode and models check as it those probably assumed to happen here by `_get_guest_cpu_model_config`  too.\n\nbut you can drop the `cpu` variable.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b24027671ca2e24977100cb09458870aaa7a465e","unresolved":false,"context_lines":[{"line_number":973,"context_line":"                    \"support selecting CPU models\") % CONF.libvirt.virt_type"},{"line_number":974,"context_line":"            raise exception.Invalid(msg)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if mode !\u003d \"custom\":"},{"line_number":977,"context_line":"            if not models:"},{"line_number":978,"context_line":"                return"},{"line_number":979,"context_line":"            msg \u003d _(\"The cpu_models option is not required when \""},{"line_number":980,"context_line":"                    \"cpu_mode!\u003dcustom\")"},{"line_number":981,"context_line":"            raise exception.Invalid(msg)"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"        if not models:"},{"line_number":984,"context_line":"            msg \u003d _(\"The cpu_models option is required when cpu_mode\u003dcustom\")"},{"line_number":985,"context_line":"            raise exception.Invalid(msg)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":988,"context_line":"        for model in models:"},{"line_number":989,"context_line":"            cpu.model \u003d self._get_cpu_model_mapping(model)"},{"line_number":990,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"54f0ef09_bd51af99","side":"PARENT","line":987,"range":{"start_line":976,"start_character":8,"end_line":987,"end_character":45},"in_reply_to":"430b90f1_6b222f45","updated":"2023-01-11 11:11:52.000000000","message":"Yep, will drop in the next iteration.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"a03292d314900eafc6750fef4d97f3e5da1947da","unresolved":true,"context_lines":[{"line_number":973,"context_line":"                    \"support selecting CPU models\") % CONF.libvirt.virt_type"},{"line_number":974,"context_line":"            raise exception.Invalid(msg)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if mode !\u003d \"custom\":"},{"line_number":977,"context_line":"            if not models:"},{"line_number":978,"context_line":"                return"},{"line_number":979,"context_line":"            msg \u003d _(\"The cpu_models option is not required when \""},{"line_number":980,"context_line":"                    \"cpu_mode!\u003dcustom\")"},{"line_number":981,"context_line":"            raise exception.Invalid(msg)"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"        if not models:"},{"line_number":984,"context_line":"            msg \u003d _(\"The cpu_models option is required when cpu_mode\u003dcustom\")"},{"line_number":985,"context_line":"            raise exception.Invalid(msg)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":988,"context_line":"        for model in models:"},{"line_number":989,"context_line":"            cpu.model \u003d self._get_cpu_model_mapping(model)"},{"line_number":990,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"d520413e_58c4abd6","side":"PARENT","line":987,"range":{"start_line":976,"start_character":8,"end_line":987,"end_character":45},"in_reply_to":"c4320c0c_99b87ec8","updated":"2023-01-11 10:12:43.000000000","message":"Good catch.  I\u0027ll re-read the code here closely and remove any dead code (without accidentally deleting valid code :-))","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"dbc2572cde20d2b5637dcbee1e89b3052a1315d8","unresolved":true,"context_lines":[{"line_number":973,"context_line":"                    \"support selecting CPU models\") % CONF.libvirt.virt_type"},{"line_number":974,"context_line":"            raise exception.Invalid(msg)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if mode !\u003d \"custom\":"},{"line_number":977,"context_line":"            if not models:"},{"line_number":978,"context_line":"                return"},{"line_number":979,"context_line":"            msg \u003d _(\"The cpu_models option is not required when \""},{"line_number":980,"context_line":"                    \"cpu_mode!\u003dcustom\")"},{"line_number":981,"context_line":"            raise exception.Invalid(msg)"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"        if not models:"},{"line_number":984,"context_line":"            msg \u003d _(\"The cpu_models option is required when cpu_mode\u003dcustom\")"},{"line_number":985,"context_line":"            raise exception.Invalid(msg)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":988,"context_line":"        for model in models:"},{"line_number":989,"context_line":"            cpu.model \u003d self._get_cpu_model_mapping(model)"},{"line_number":990,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"201813e0_f3fcc608","side":"PARENT","line":987,"range":{"start_line":976,"start_character":8,"end_line":987,"end_character":45},"in_reply_to":"d520413e_58c4abd6","updated":"2023-01-11 10:16:14.000000000","message":"But we still need the code to check that if cpu_mode!\u003dcustom then it\u0027s not required to specify \"cpu_models\" option.  And conversely, if cpu_mode\u003dcustom is being uesd, then \"cpu_models\" option is mandatory.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a47985bc8ede5e16ef6a430c16fb9d0488123a9c","unresolved":true,"context_lines":[{"line_number":996,"context_line":"                            \u0027model\u0027: model, \u0027e\u0027: e})"},{"line_number":997,"context_line":"                raise exception.InvalidCPUInfo(msg)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"        # Use guest CPU model to check the compatibility between guest CPU and"},{"line_number":1000,"context_line":"        # configured extra_flags"},{"line_number":1001,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":1002,"context_line":"        cpu.model \u003d self._host.get_capabilities().host.cpu.model"},{"line_number":1003,"context_line":"        for flag in set(x.lower() for x in CONF.libvirt.cpu_model_extra_flags):"},{"line_number":1004,"context_line":"            cpu_feature \u003d self._prepare_cpu_flag(flag)"},{"line_number":1005,"context_line":"            cpu.add_feature(cpu_feature)"},{"line_number":1006,"context_line":"            try:"},{"line_number":1007,"context_line":"                self._compare_cpu(cpu, self._get_cpu_info(), None)"},{"line_number":1008,"context_line":"            except exception.InvalidCPUInfo as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"eb272daa_a6d0ae40","side":"PARENT","line":1005,"range":{"start_line":999,"start_character":7,"end_line":1005,"end_character":40},"updated":"2023-01-11 10:01:28.000000000","message":"this seem like dead code now as `cpu` is not used anywhere below.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b24027671ca2e24977100cb09458870aaa7a465e","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                            \u0027model\u0027: model, \u0027e\u0027: e})"},{"line_number":997,"context_line":"                raise exception.InvalidCPUInfo(msg)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"        # Use guest CPU model to check the compatibility between guest CPU and"},{"line_number":1000,"context_line":"        # configured extra_flags"},{"line_number":1001,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":1002,"context_line":"        cpu.model \u003d self._host.get_capabilities().host.cpu.model"},{"line_number":1003,"context_line":"        for flag in set(x.lower() for x in CONF.libvirt.cpu_model_extra_flags):"},{"line_number":1004,"context_line":"            cpu_feature \u003d self._prepare_cpu_flag(flag)"},{"line_number":1005,"context_line":"            cpu.add_feature(cpu_feature)"},{"line_number":1006,"context_line":"            try:"},{"line_number":1007,"context_line":"                self._compare_cpu(cpu, self._get_cpu_info(), None)"},{"line_number":1008,"context_line":"            except exception.InvalidCPUInfo as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4da4c4ae_1b902ab6","side":"PARENT","line":1005,"range":{"start_line":999,"start_character":7,"end_line":1005,"end_character":40},"in_reply_to":"80534ba1_6944c4a7","updated":"2023-01-11 11:11:52.000000000","message":"You\u0027re of course totally right. We actually handle the processing of extra flags in _get_guest_cpu_model_config().  (I myself added that code in the past \u003cembarrassed emoji\u003e\n\nSo I can nuke this dead code.  Thanks for the eagle eyes.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"02e0b89afa18e690105caada780846887faf9f39","unresolved":true,"context_lines":[{"line_number":996,"context_line":"                            \u0027model\u0027: model, \u0027e\u0027: e})"},{"line_number":997,"context_line":"                raise exception.InvalidCPUInfo(msg)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"        # Use guest CPU model to check the compatibility between guest CPU and"},{"line_number":1000,"context_line":"        # configured extra_flags"},{"line_number":1001,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":1002,"context_line":"        cpu.model \u003d self._host.get_capabilities().host.cpu.model"},{"line_number":1003,"context_line":"        for flag in set(x.lower() for x in CONF.libvirt.cpu_model_extra_flags):"},{"line_number":1004,"context_line":"            cpu_feature \u003d self._prepare_cpu_flag(flag)"},{"line_number":1005,"context_line":"            cpu.add_feature(cpu_feature)"},{"line_number":1006,"context_line":"            try:"},{"line_number":1007,"context_line":"                self._compare_cpu(cpu, self._get_cpu_info(), None)"},{"line_number":1008,"context_line":"            except exception.InvalidCPUInfo as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"80534ba1_6944c4a7","side":"PARENT","line":1005,"range":{"start_line":999,"start_character":7,"end_line":1005,"end_character":40},"in_reply_to":"cf28e0e3_32f148e4","updated":"2023-01-11 10:42:06.000000000","message":"this code adds flags to a local `cpu` variable that variable is not returned so whatever we do here with `cpu` is lost after we return from this function.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"a03292d314900eafc6750fef4d97f3e5da1947da","unresolved":true,"context_lines":[{"line_number":996,"context_line":"                            \u0027model\u0027: model, \u0027e\u0027: e})"},{"line_number":997,"context_line":"                raise exception.InvalidCPUInfo(msg)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"        # Use guest CPU model to check the compatibility between guest CPU and"},{"line_number":1000,"context_line":"        # configured extra_flags"},{"line_number":1001,"context_line":"        cpu \u003d vconfig.LibvirtConfigGuestCPU()"},{"line_number":1002,"context_line":"        cpu.model \u003d self._host.get_capabilities().host.cpu.model"},{"line_number":1003,"context_line":"        for flag in set(x.lower() for x in CONF.libvirt.cpu_model_extra_flags):"},{"line_number":1004,"context_line":"            cpu_feature \u003d self._prepare_cpu_flag(flag)"},{"line_number":1005,"context_line":"            cpu.add_feature(cpu_feature)"},{"line_number":1006,"context_line":"            try:"},{"line_number":1007,"context_line":"                self._compare_cpu(cpu, self._get_cpu_info(), None)"},{"line_number":1008,"context_line":"            except exception.InvalidCPUInfo as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"cf28e0e3_32f148e4","side":"PARENT","line":1005,"range":{"start_line":999,"start_character":7,"end_line":1005,"end_character":40},"in_reply_to":"eb272daa_a6d0ae40","updated":"2023-01-11 10:12:43.000000000","message":"Hmm, I may have to readjust the code here. As we still want to retain the code for allowing addition/removal of CPU flags via CONF.libvirt.cpu_model_extra_flags.","commit_id":"ba9d4c909beff4e9ab86911a35dd5db8d8ce08d6"}],"releasenotes/notes/releasenotes/notes/remove_cpu_compat_check-e29868ee5254223d.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a47985bc8ede5e16ef6a430c16fb9d0488123a9c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8bbe4b70_45f035db","line":12,"updated":"2023-01-11 10:01:28.000000000","message":"Do I understand correctly that this change only removes the compatibility check that happens at compute service startup? So it does not effect the compatibility check during live migration?","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"02e0b89afa18e690105caada780846887faf9f39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"49bc610d_82c20b9b","line":12,"in_reply_to":"777a290e_1aef6655","updated":"2023-01-11 10:42:06.000000000","message":"OK.","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"a03292d314900eafc6750fef4d97f3e5da1947da","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"777a290e_1aef6655","line":12,"in_reply_to":"8bbe4b70_45f035db","updated":"2023-01-11 10:12:43.000000000","message":"Right -- we are not removing anything at live migration, although we should remove that too, as libvirt handles that more correctly as well.  Right now we have a workaround[1] in Nova to allow skipping the check on destination host during live migration.\n\nThe live migration check happens in a different method: check_can_live_migrate_destination().\n\n[1] https://opendev.org/openstack/nova/commit/267a4066","commit_id":"54e35926a41fe1e294066f19e3b012dd5a859c4d"}]}
