)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9a894d35b7409c817bebfc5d707b8529af28e0a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6e4f074e_33511bdd","updated":"2026-07-03 12:47:39.000000000","message":"OK this refines the error handling and class it from the API layer","commit_id":"1e41d25a34702ef4156517f6dc9b605245cbc96a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"3ee1df5f1c17a80c5aa38b489507372c07741835","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e50e80f3_a16b4ac0","updated":"2026-07-03 13:59:37.000000000","message":"I\u0027ve updated the change to add test coverage at api call and also a release note, following the update in the parent change.","commit_id":"760f5b0e1a8639c1c46dcec1d217bdd2cf0f9338"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"332ab60508c2b69d16426cf1ae49bc228492603c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5912fa0a_dcae2dac","updated":"2026-07-06 13:29:57.000000000","message":"one question in line.\nyour test matches the current behaivor but just want ot clarify if pc/bios boot is alwasy stateless as i tought we only got nvrm files if you enable uefi boot on q35.","commit_id":"798e7d0cf3c2b667df9d9d56c3808671b9dc6a6c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8db89c787d0532e7c0d3531b4e7332df343c0e15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"92f347ea_57b39812","updated":"2026-07-05 10:47:15.000000000","message":"recheck zuul didn\u0027t vote a score correctly.","commit_id":"798e7d0cf3c2b667df9d9d56c3808671b9dc6a6c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"961e85cc27d2f9268f3e72b401acf73b7f3e744d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1b39fd30_4bc82ee1","updated":"2026-07-13 15:03:57.000000000","message":"I noted the change of direction but I agree with it.","commit_id":"b9ccaf93e20e96e3895ea52353a5b3efcd48860b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2ace4f567384eb8d0f5fc7ea000a04a574e98e99","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8297cf90_01acc034","updated":"2026-07-13 17:36:06.000000000","message":"recheck\n\n`public endpoint for block-storage service in RegionOne region not found` might indicate test configuration issue, though.","commit_id":"b9ccaf93e20e96e3895ea52353a5b3efcd48860b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0611ca7e789bb437b290d6a77082ff0b874a9403","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4601c371_58ec07c8","updated":"2026-07-15 15:35:24.000000000","message":"recheck https://review.opendev.org/c/openstack/requirements/+/997345 was merged","commit_id":"b9ccaf93e20e96e3895ea52353a5b3efcd48860b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b1742bc044ee81357e8691e790b0eb8407beb835","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1bc387e5_92645a31","updated":"2026-07-07 17:36:01.000000000","message":"this i think is the pragmatic approch","commit_id":"b9ccaf93e20e96e3895ea52353a5b3efcd48860b"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c67405851a61a329853bde53f7cfbf42425184b4","unresolved":true,"context_lines":[{"line_number":87,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":88,"context_line":"    exception.RequiredMixedInstancePolicy,"},{"line_number":89,"context_line":"    exception.RequiredMixedOrRealtimeCPUMask,"},{"line_number":90,"context_line":"    exception.StatelessFirmwareNotSupported,"},{"line_number":91,"context_line":"    exception.InvalidMixedInstanceDedicatedMask,"},{"line_number":92,"context_line":")"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ca269347_6d662958","line":90,"updated":"2026-07-03 12:48:04.000000000","message":"do we need a specific test case to cover this?","commit_id":"1e41d25a34702ef4156517f6dc9b605245cbc96a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"332ab60508c2b69d16426cf1ae49bc228492603c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":88,"context_line":"    exception.RequiredMixedInstancePolicy,"},{"line_number":89,"context_line":"    exception.RequiredMixedOrRealtimeCPUMask,"},{"line_number":90,"context_line":"    exception.StatelessFirmwareNotSupported,"},{"line_number":91,"context_line":"    exception.InvalidMixedInstanceDedicatedMask,"},{"line_number":92,"context_line":")"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"101221e9_faf302ae","line":90,"in_reply_to":"ca269347_6d662958","updated":"2026-07-06 13:29:57.000000000","message":"Done https://review.opendev.org/c/openstack/nova/+/995835/4/nova/tests/functional/test_servers.py#7082","commit_id":"1e41d25a34702ef4156517f6dc9b605245cbc96a"}],"nova/compute/api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9a894d35b7409c817bebfc5d707b8529af28e0a6","unresolved":true,"context_lines":[{"line_number":914,"context_line":"            raise exception.MixedInstanceNotSupportByComputeService()"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    @staticmethod"},{"line_number":917,"context_line":"    def _validate_flavor_image_numa_pci("},{"line_number":918,"context_line":"        image, flavor, validate_numa\u003dTrue, validate_pci\u003dFalse,"},{"line_number":919,"context_line":"    ):"},{"line_number":920,"context_line":"        \"\"\"Validate the flavor and image NUMA/PCI values."}],"source_content_type":"text/x-python","patch_set":2,"id":"303400cf_b8280237","line":917,"updated":"2026-07-03 12:47:39.000000000","message":"(follow up): I think this need to be renamed as it does not only validate numa and pci stuff for a long time.","commit_id":"1e41d25a34702ef4156517f6dc9b605245cbc96a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"332ab60508c2b69d16426cf1ae49bc228492603c","unresolved":true,"context_lines":[{"line_number":914,"context_line":"            raise exception.MixedInstanceNotSupportByComputeService()"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    @staticmethod"},{"line_number":917,"context_line":"    def _validate_flavor_image_numa_pci("},{"line_number":918,"context_line":"        image, flavor, validate_numa\u003dTrue, validate_pci\u003dFalse,"},{"line_number":919,"context_line":"    ):"},{"line_number":920,"context_line":"        \"\"\"Validate the flavor and image NUMA/PCI values."}],"source_content_type":"text/x-python","patch_set":2,"id":"946ae93f_da22b21d","line":917,"in_reply_to":"303400cf_b8280237","updated":"2026-07-06 13:29:57.000000000","message":"well the generic one is ment to be _validate_flavor_image_nostatus\nand this was ment to just be the numa related stuff\n\nbut ya we stop making that disinction\n\nso wither we move nhe non numa stuff out or we could rename in a followup\n\nthis mianinly exts to make _validate_flavor_image_nostatus shorter\nthe pmu, multiqueu and serial port check along with the stateless firmware are all not numa related so they coudl also just eb put in a \"_validate_flavor_image_virt\" function.\n\nalthough we have to be carful of \n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L4391-L4408","commit_id":"1e41d25a34702ef4156517f6dc9b605245cbc96a"}],"nova/exception.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9a894d35b7409c817bebfc5d707b8529af28e0a6","unresolved":false,"context_lines":[{"line_number":2111,"context_line":"    msg_fmt \u003d _(\"This firmware doesn\u0027t require (support) SMM\")"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":""},{"line_number":2114,"context_line":"class StatelessFirmwareNotSupported(Invalid):"},{"line_number":2115,"context_line":"    msg_fmt \u003d _(\"Stateless firmware is supported only when UEFI firmware type \""},{"line_number":2116,"context_line":"                \"is used.\")"},{"line_number":2117,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ccf03760_37b8ca34","line":2114,"updated":"2026-07-03 12:47:39.000000000","message":"OK the code that used the validation on the virt side understood Invalid, as that was raised in the past, this is a subclass of Invalid so the virt side will work as before.","commit_id":"1e41d25a34702ef4156517f6dc9b605245cbc96a"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"332ab60508c2b69d16426cf1ae49bc228492603c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"53ffd0bf_2c6587af","line":7093,"range":{"start_line":7089,"start_character":3,"end_line":7093,"end_character":1},"updated":"2026-07-06 13:29:57.000000000","message":"so on that topic.\n\nis the inlcution of the nvram trigged by enable uefi boot or q35?\n\nbecause i tough bios boot with the pc machine type did not have the nvram and was statelsss by defualt as a reulst.\n\nso is this really correct?","commit_id":"798e7d0cf3c2b667df9d9d56c3808671b9dc6a6c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1462169230e5b0de511d5b2f3a144f25049b1a98","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c557e521_fd76a83a","line":7093,"range":{"start_line":7089,"start_character":3,"end_line":7093,"end_character":1},"in_reply_to":"0f4e2e1f_b766fb59","updated":"2026-07-06 15:26:24.000000000","message":"According to the discussion in irc (mainly about the concern about breaking existing usage of the \"wrong\" combination) I updated the implementation to just ignore hw_firmware_stateless in case hw_firmware_type is bios.","commit_id":"798e7d0cf3c2b667df9d9d56c3808671b9dc6a6c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1a2e549c8b419940ec61a7b8a20177bc7e0482ec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7d5bd34b_0eb5dad5","line":7093,"range":{"start_line":7089,"start_character":3,"end_line":7093,"end_character":1},"in_reply_to":"53ffd0bf_2c6587af","updated":"2026-07-06 13:56:04.000000000","message":"nvram is part of the uefi firmware files, so it\u0027s related to uefi, not q35 machine type.\n\n\u003e so is this really correct?\n\nI think you spotted a good point and it\u0027s wrong that we accept hw_firmware_type\u003dbios with hw_firmware_stateless\u003dfalse. Let me fix that point.","commit_id":"798e7d0cf3c2b667df9d9d56c3808671b9dc6a6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"76798b33fc22406ac779e4bd58d1d26c6d2d91a2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0f4e2e1f_b766fb59","line":7093,"range":{"start_line":7089,"start_character":3,"end_line":7093,"end_character":1},"in_reply_to":"7d5bd34b_0eb5dad5","updated":"2026-07-06 14:12:11.000000000","message":"well its also not really correct to reject \n\nhw_firmware_type\u003dbios with hw_firmware_stateless\u003dtrue\n\nthat was kind of  my point if bios is always stateless then we shoudl not reject that im inclient to say that we shoudl really only be validating this when hw_firmware_type\u003duefi.\n\nespicaly sicne if you have set both biso and the statelest flag you cant fix it without a rebuild on exisitng isntace or usign the nova-mange command\n\nwe shoudl just document that its ignored unless the firmwware tyep is uefi IMO","commit_id":"798e7d0cf3c2b667df9d9d56c3808671b9dc6a6c"}],"nova/virt/hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fcc55d44c61d08a7d4fb347cb37322a3997df7a9","unresolved":false,"context_lines":[{"line_number":2262,"context_line":""},{"line_number":2263,"context_line":"    :param image_meta: ``nova.objects.ImageMeta`` instance"},{"line_number":2264,"context_line":"    \"\"\""},{"line_number":2265,"context_line":"    if image_meta.properties.get(\u0027hw_firmware_stateless\u0027) is None:"},{"line_number":2266,"context_line":"        return None"},{"line_number":2267,"context_line":""},{"line_number":2268,"context_line":"    if image_meta.properties.get(\u0027hw_firmware_type\u0027) !\u003d \u0027uefi\u0027:"},{"line_number":2269,"context_line":"        LOG.warning(\"The image property \u0027hw_firmware_stateless\u0027 is set for \""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f337a4d_b3ce0a32","line":2266,"range":{"start_line":2265,"start_character":1,"end_line":2266,"end_character":19},"updated":"2026-07-07 17:22:22.000000000","message":"so early out if not set","commit_id":"f9f0825e051b83767387405625459a937af3ac2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fcc55d44c61d08a7d4fb347cb37322a3997df7a9","unresolved":false,"context_lines":[{"line_number":2268,"context_line":"    if image_meta.properties.get(\u0027hw_firmware_type\u0027) !\u003d \u0027uefi\u0027:"},{"line_number":2269,"context_line":"        LOG.warning(\"The image property \u0027hw_firmware_stateless\u0027 is set for \""},{"line_number":2270,"context_line":"                    \"non UEFI firmware type. This property is ignored.\")"},{"line_number":2271,"context_line":"        return None"},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"    return image_meta.properties.get(\u0027hw_firmware_stateless\u0027, False)"},{"line_number":2274,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2e5a017d_feb1b68a","line":2271,"range":{"start_line":2271,"start_character":14,"end_line":2271,"end_character":19},"updated":"2026-07-07 17:22:22.000000000","message":"the we are using None to model unset or ignored because not uefi","commit_id":"f9f0825e051b83767387405625459a937af3ac2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fcc55d44c61d08a7d4fb347cb37322a3997df7a9","unresolved":false,"context_lines":[{"line_number":2270,"context_line":"                    \"non UEFI firmware type. This property is ignored.\")"},{"line_number":2271,"context_line":"        return None"},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"    return image_meta.properties.get(\u0027hw_firmware_stateless\u0027, False)"},{"line_number":2274,"context_line":""},{"line_number":2275,"context_line":""},{"line_number":2276,"context_line":"def numa_get_constraints(flavor, image_meta):"}],"source_content_type":"text/x-python","patch_set":6,"id":"955c7045_493a9a3c","line":2273,"range":{"start_line":2273,"start_character":11,"end_line":2273,"end_character":68},"updated":"2026-07-07 17:22:22.000000000","message":"and if we do get here we know its uefi so we just return result.\n\nits defined as a FlexibleBooleanField so it should handel the type conversion\nto bool automatically.\n```\n        # This indicates the guest needs stateless firmware\n        \u0027hw_firmware_stateless\u0027: fields.FlexibleBooleanField(),\n```        \nhttps://github.com/openstack/nova/blob/master/nova/objects/image_meta.py#L393-L394","commit_id":"f9f0825e051b83767387405625459a937af3ac2b"}],"releasenotes/notes/bug-2158967-cb974891dcd2e6f2.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fcc55d44c61d08a7d4fb347cb37322a3997df7a9","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    set to ``True`` is accepted and succeeds, because BIOS is always stateless"},{"line_number":8,"context_line":"    and this request is valid."},{"line_number":9,"context_line":"    Note that ``hw_firmware_statelsss\u003dTrue`` in image properties is effectively"},{"line_number":10,"context_line":"    ignored when a server is created with BIOS boot, to presetve the existing"},{"line_number":11,"context_line":"    behavior."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fb2103bb_b88252a0","line":10,"range":{"start_line":10,"start_character":56,"end_line":10,"end_character":64},"updated":"2026-07-07 17:22:22.000000000","message":"preserve?","commit_id":"f9f0825e051b83767387405625459a937af3ac2b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7f8df447bb222e7422ef5b2674cf229f6f40f165","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    set to ``True`` is accepted and succeeds, because BIOS is always stateless"},{"line_number":8,"context_line":"    and this request is valid."},{"line_number":9,"context_line":"    Note that ``hw_firmware_statelsss\u003dTrue`` in image properties is effectively"},{"line_number":10,"context_line":"    ignored when a server is created with BIOS boot, to presetve the existing"},{"line_number":11,"context_line":"    behavior."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"bab52faa_00d19bc4","line":10,"range":{"start_line":10,"start_character":56,"end_line":10,"end_character":64},"in_reply_to":"fb2103bb_b88252a0","updated":"2026-07-07 17:30:24.000000000","message":"Oh yes, Fixed it.","commit_id":"f9f0825e051b83767387405625459a937af3ac2b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"961e85cc27d2f9268f3e72b401acf73b7f3e744d","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    creating a server with BIOS boot and the ``hw_firmware_stateless`` property"},{"line_number":7,"context_line":"    set to ``True`` is accepted and succeeds, because BIOS is always stateless"},{"line_number":8,"context_line":"    and this request is valid."},{"line_number":9,"context_line":"    Note that ``hw_firmware_statelsss\u003dTrue`` in image properties is effectively"},{"line_number":10,"context_line":"    ignored when a server is created with BIOS boot, to preserve the existing"},{"line_number":11,"context_line":"    behavior."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"0f5104e4_6d9cf189","line":9,"range":{"start_line":9,"start_character":16,"end_line":9,"end_character":37},"updated":"2026-07-13 15:03:57.000000000","message":"nit: too many \u0027s\u0027 at the end :)","commit_id":"b9ccaf93e20e96e3895ea52353a5b3efcd48860b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7167cf160d9ddfab0e9352ce3a6f97a88fd0b499","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    creating a server with BIOS boot and the ``hw_firmware_stateless`` property"},{"line_number":7,"context_line":"    set to ``True`` is accepted and succeeds, because BIOS is always stateless"},{"line_number":8,"context_line":"    and this request is valid."},{"line_number":9,"context_line":"    Note that ``hw_firmware_statelsss\u003dTrue`` in image properties is effectively"},{"line_number":10,"context_line":"    ignored when a server is created with BIOS boot, to preserve the existing"},{"line_number":11,"context_line":"    behavior."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"beadc165_1bb04494","line":9,"range":{"start_line":9,"start_character":16,"end_line":9,"end_character":37},"in_reply_to":"0f5104e4_6d9cf189","updated":"2026-07-13 15:08:52.000000000","message":"Oh. I\u0027ll fix that in follow-up","commit_id":"b9ccaf93e20e96e3895ea52353a5b3efcd48860b"}]}
