)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dff1292eaae285c007fd4b4be577ef7a5c1cffe9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the response code returned when the image contains invalid"},{"line_number":10,"context_line":"properties for locked memory."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":" - hw_locked_memory set but hw_mem_page_size unset"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":" - hw_locked_memory conflicting with hw:locked_memory in property"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"0dc85529_13efc9bb","line":12,"range":{"start_line":11,"start_character":1,"end_line":12,"end_character":50},"updated":"2026-07-06 13:13:06.000000000","message":"ok so looking back at the history of this i added locked memory\n\nhttps://github.com/openstack/nova-specs/blob/b855fe1b5d192aefa238cd9465fc0ee60568b2d1/specs/zed/implemented/libvirt-viommu-device.rst?plain\u003d1#L61\n\nto support the viommu with pci passhtough without usign hw:cpu_realtime or whatever that extra sepc is which was the only way to do this before.\n\n\nfor future us the reason this is only allowed with hw:mem_page_size is locked memory cannot be swapped which means its unsafe to use if you allow memory over commit.\n\nwe do not allow memofy over commit when you use hw:mem_page_size fo that limitation is there to prevent OOM issues\n\ntechnially locked memory could be used with any vm but it would not be safe too form a schduling point of view since our accounting woudl be wrong if the allcoation ratio is \u003e1","commit_id":"f2bc9efc8228bcb4c50694ac82a301ec642cdcec"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"973acf14d93e508970446f22c2ec4828e839785b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1d85b69f_8f789654","updated":"2026-07-03 12:30:20.000000000","message":"could you please add at least a unit test around this change?","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"131f62c1e57f26e9fe111f7120cdc0a20c161fe1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4e4262e6_62e6b742","updated":"2026-07-02 23:23:08.000000000","message":"recheck network error during pip install","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec2bb56336d4a225091cb2e3f0feb6cfcf256267","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ebf42101_53b0fa56","in_reply_to":"1d85b69f_8f789654","updated":"2026-07-03 13:37:13.000000000","message":"I\u0027ve decided to add a few functional test cases to cover these. Let me know if you prefer different places where these testes are implemented.","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"32ba65003246ca222db395f791af74d43d8f860f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c90cd9e8_1943ca6e","updated":"2026-07-06 09:02:45.000000000","message":"Thanks","commit_id":"ca384766a76ebd442ad4a87ff94089194d3cf300"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"88ff2f40a20719df1c4eacc583f891d60abbcf1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"04211e91_1f03a4a8","updated":"2026-07-06 14:55:19.000000000","message":"started to review all the changes in the series","commit_id":"ca384766a76ebd442ad4a87ff94089194d3cf300"}],"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":"7cabde90c0995482103b1b64d11177896137cc59","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"INVALID_FLAVOR_IMAGE_EXCEPTIONS \u003d ("},{"line_number":56,"context_line":"    exception.BadRequirementEmulatorThreadsPolicy,"},{"line_number":57,"context_line":"    exception.CPUThreadPolicyConfigurationInvalid,"},{"line_number":58,"context_line":"    exception.FlavorImageConflict,"}],"source_content_type":"text/x-python","patch_set":6,"id":"f6a94b43_98cd023c","line":55,"updated":"2026-07-03 12:33:19.000000000","message":"do we need to add FlavorImageLockedMemoryConflict here?","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec2bb56336d4a225091cb2e3f0feb6cfcf256267","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"INVALID_FLAVOR_IMAGE_EXCEPTIONS \u003d ("},{"line_number":56,"context_line":"    exception.BadRequirementEmulatorThreadsPolicy,"},{"line_number":57,"context_line":"    exception.CPUThreadPolicyConfigurationInvalid,"},{"line_number":58,"context_line":"    exception.FlavorImageConflict,"}],"source_content_type":"text/x-python","patch_set":6,"id":"d377bea6_f745a604","line":55,"in_reply_to":"f6a94b43_98cd023c","updated":"2026-07-03 13:37:13.000000000","message":"I\u0027ve made it a subclass of FlavorImageConflict so this is no longer needed.","commit_id":"485672f3026aff11f2f63ce75123383febffd920"}],"nova/exception.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"973acf14d93e508970446f22c2ec4828e839785b","unresolved":true,"context_lines":[{"line_number":2012,"context_line":"    msg_fmt \u003d _(\"Page size %(pagesize)s is not supported by the host.\")"},{"line_number":2013,"context_line":""},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":"class LockMemoryForbidden(Invalid):"},{"line_number":2016,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image or flavor is forbidden when \""},{"line_number":2017,"context_line":"                \"mem_page_size is not set.\")"},{"line_number":2018,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e8a0140d_2e517e07","line":2015,"updated":"2026-07-03 12:30:20.000000000","message":"So this means that we returned 403 in the past but we will return 400 going forward. This might worth a release notes as this is a slight API change.","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec2bb56336d4a225091cb2e3f0feb6cfcf256267","unresolved":false,"context_lines":[{"line_number":2012,"context_line":"    msg_fmt \u003d _(\"Page size %(pagesize)s is not supported by the host.\")"},{"line_number":2013,"context_line":""},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":"class LockMemoryForbidden(Invalid):"},{"line_number":2016,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image or flavor is forbidden when \""},{"line_number":2017,"context_line":"                \"mem_page_size is not set.\")"},{"line_number":2018,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"c9395af9_ed680d7b","line":2015,"in_reply_to":"e8a0140d_2e517e07","updated":"2026-07-03 13:37:13.000000000","message":"Done","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"973acf14d93e508970446f22c2ec4828e839785b","unresolved":true,"context_lines":[{"line_number":2017,"context_line":"                \"mem_page_size is not set.\")"},{"line_number":2018,"context_line":""},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"class FlavorImageLockedMemoryConflict(Invalid):"},{"line_number":2021,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image (%(image)s) and flavor \""},{"line_number":2022,"context_line":"                \"(%(flavor)s) conflict. A consistent value is expected if \""},{"line_number":2023,"context_line":"                \"both specified.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"afb5fb56_70bd1272","line":2020,"updated":"2026-07-03 12:30:20.000000000","message":"this was 500 before and now it is a proper 400 that is a clear bugfix.","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec2bb56336d4a225091cb2e3f0feb6cfcf256267","unresolved":false,"context_lines":[{"line_number":2017,"context_line":"                \"mem_page_size is not set.\")"},{"line_number":2018,"context_line":""},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"class FlavorImageLockedMemoryConflict(Invalid):"},{"line_number":2021,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image (%(image)s) and flavor \""},{"line_number":2022,"context_line":"                \"(%(flavor)s) conflict. A consistent value is expected if \""},{"line_number":2023,"context_line":"                \"both specified.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"1cf7a9a9_7110e07a","line":2020,"in_reply_to":"2e414090_f4c68f1b","updated":"2026-07-03 13:37:13.000000000","message":"Done","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7cabde90c0995482103b1b64d11177896137cc59","unresolved":true,"context_lines":[{"line_number":2017,"context_line":"                \"mem_page_size is not set.\")"},{"line_number":2018,"context_line":""},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"class FlavorImageLockedMemoryConflict(Invalid):"},{"line_number":2021,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image (%(image)s) and flavor \""},{"line_number":2022,"context_line":"                \"(%(flavor)s) conflict. A consistent value is expected if \""},{"line_number":2023,"context_line":"                \"both specified.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"2e414090_f4c68f1b","line":2020,"in_reply_to":"afb5fb56_70bd1272","updated":"2026-07-03 12:33:19.000000000","message":"It feels like a subclass of FlavorImageConflict","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7cabde90c0995482103b1b64d11177896137cc59","unresolved":true,"context_lines":[{"line_number":2455,"context_line":"                \"moved.\")"},{"line_number":2456,"context_line":""},{"line_number":2457,"context_line":""},{"line_number":2458,"context_line":"class FlavorImageConflict(NovaException):"},{"line_number":2459,"context_line":"    msg_fmt \u003d _(\"Conflicting values for %(setting)s found in the flavor \""},{"line_number":2460,"context_line":"                \"(%(flavor_val)s) and the image (%(image_val)s).\")"},{"line_number":2461,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"6d74d58f_5ec51898","line":2458,"updated":"2026-07-03 12:33:19.000000000","message":"I guess it we can use this as a baseclass above but we need to make sure that it does not lead to HTTP500","commit_id":"485672f3026aff11f2f63ce75123383febffd920"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec2bb56336d4a225091cb2e3f0feb6cfcf256267","unresolved":false,"context_lines":[{"line_number":2455,"context_line":"                \"moved.\")"},{"line_number":2456,"context_line":""},{"line_number":2457,"context_line":""},{"line_number":2458,"context_line":"class FlavorImageConflict(NovaException):"},{"line_number":2459,"context_line":"    msg_fmt \u003d _(\"Conflicting values for %(setting)s found in the flavor \""},{"line_number":2460,"context_line":"                \"(%(flavor_val)s) and the image (%(image_val)s).\")"},{"line_number":2461,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2dd3fca4_658d6bac","line":2458,"in_reply_to":"6d74d58f_5ec51898","updated":"2026-07-03 13:37:13.000000000","message":"I\u0027ve added a test case to cover this, too.","commit_id":"485672f3026aff11f2f63ce75123383febffd920"}]}
