)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63e948cb1c3ea2161da079df83859e7e2c063524","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This change adds a new hw:locked_memory extra spec and hw_locked_memory"},{"line_number":10,"context_line":"image property to contol preventing guest memory from swapping"},{"line_number":11,"context_line":"which is required for some DMA usage such"},{"line_number":12,"context_line":"as VDPA. Note not all VDPA deivce should"},{"line_number":13,"context_line":"required locked memory but currently it required"},{"line_number":14,"context_line":"for connectx-6 dx nics."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This change adds docs and extend the flavor"},{"line_number":17,"context_line":"validators for the new extra spec."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"adbc27c9_5016f6a7","line":14,"range":{"start_line":12,"start_character":9,"end_line":14,"end_character":23},"updated":"2022-07-07 10:12:10.000000000","message":"i woudl drop this by the way the vdpa reqirement has been mostly adressed by libvirt\n\nit would be beteer to call out the usage in the viommu context or just delete these last few lines.","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1a03cbde0e518278e368f722f028bf5289547459","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds a new hw:locked_memory extra spec and hw_locked_memory"},{"line_number":10,"context_line":"image property to contol preventing guest memory from swapping"},{"line_number":11,"context_line":"which is required for some DMA usage such"},{"line_number":12,"context_line":"as VDPA. Note not all VDPA deivce should"},{"line_number":13,"context_line":"required locked memory but currently it required"},{"line_number":14,"context_line":"for connectx-6 dx nics."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This change adds docs and extend the flavor"},{"line_number":17,"context_line":"validators for the new extra spec."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f584dfd_0dad6032","line":14,"range":{"start_line":12,"start_character":9,"end_line":14,"end_character":23},"in_reply_to":"adbc27c9_5016f6a7","updated":"2022-07-14 20:31:30.000000000","message":"Done","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Also add new image property."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Blueprint: libvirt-viommu-device"},{"line_number":17,"context_line":"Blueprint: libvirt-vdpa-support"},{"line_number":18,"context_line":"Change-Id: Id3779594f0078a5045031aded2ed68ee4301abbd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"e28644d3_ba824b39","line":17,"updated":"2022-07-19 09:54:00.000000000","message":"nit: this is already marked implemented https://blueprints.launchpad.net/nova/+spec/libvirt-vdpa-support","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Also add new image property."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Blueprint: libvirt-viommu-device"},{"line_number":17,"context_line":"Blueprint: libvirt-vdpa-support"},{"line_number":18,"context_line":"Change-Id: Id3779594f0078a5045031aded2ed68ee4301abbd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"0cd0c120_aa75f44b","line":17,"in_reply_to":"e28644d3_ba824b39","updated":"2022-07-19 10:33:05.000000000","message":"yes it is\nthis was orginaly part of that feature but was not needed with a newer libvirt so this line can be dropped.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c3d21c0d_63e7b543","updated":"2022-06-03 07:46:47.000000000","message":"I have couple of comments iline","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63e948cb1c3ea2161da079df83859e7e2c063524","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"a89d6c26_de1dcbff","updated":"2022-07-07 10:12:10.000000000","message":"i may be biased but over all i think this looks good i have some nits as do gibi/stephen so i think it makes sense to rebase this and adress them\nim going to continue reviewing the rest of the series but it woudl be good if you could adress the comments inline","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"0e4fb049_22554ecd","updated":"2022-07-19 09:54:00.000000000","message":"I think we have a bug.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"908d12b5_1f9b2a97","updated":"2022-07-19 10:33:05.000000000","message":"lets use FlexibleBooleanField to handel the type convertion and that should help with some of the ambiguity the we can aslo resue \n_get_locked_memory_constraint as gibi suggested but if we do we shoudl rename it to \nget_locked_memory_constraint to note that it can be used outside of the module.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6a654c56680c4d377fd5b746fabc68de343098e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"3b2bbff2_155239c7","updated":"2022-07-25 09:07:53.000000000","message":"I only have a request for an extra code comments but overall this looks good.","commit_id":"3d2f16731ce71aa95d781b8c8702c61ea95292cc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c0217101d58951e65b10d27edd56fd93062cb0b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"0afff81f_0a974684","updated":"2022-08-18 07:39:10.000000000","message":"Looks good to me.","commit_id":"14c1912de25857fbc295f41738a98b0dc3d588cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0a337762486d9e545668f0d2e859e011ab3ee36f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"e57258eb_9a730891","updated":"2022-08-22 17:14:07.000000000","message":"These functional failures look real","commit_id":"a3611fd3a4411cdb291804c2328d0afa89dabdc9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1eb712c5ae24ace044630395ed5fb2066d68bfd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"795d05c2_36701a16","updated":"2022-08-24 08:27:21.000000000","message":"The functional test failures are relevant, see my note inline how to fix it.","commit_id":"3cc574998da83cf884d02c56f740b1c215bd3f66"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c263694ebc79cafe3cd75328f958268b1c823226","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"8ffbd68c_cc7e86d9","updated":"2022-08-26 14:50:35.000000000","message":"Small typo inline. A follow-up would be nice","commit_id":"572c2b18e27f6fcbbd4a1f416b0ec21098b3ba74"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"485b7fca953960f74679a49c71f054e6536475d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"2353dffc_a04c268a","updated":"2022-08-25 11:49:08.000000000","message":"i think this now looks correct to me ill try and take a look at the rest of the seriese shortly","commit_id":"572c2b18e27f6fcbbd4a1f416b0ec21098b3ba74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"763f2c7beecf919b877d64a8278cfd92b99bdfcc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"d60645b6_98742aa1","updated":"2022-08-26 13:39:53.000000000","message":"looks good to me","commit_id":"572c2b18e27f6fcbbd4a1f416b0ec21098b3ba74"}],"doc/notification_samples/common_payloads/ImageMetaPropsPayload.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1eb712c5ae24ace044630395ed5fb2066d68bfd6","unresolved":true,"context_lines":[{"line_number":4,"context_line":"        \"hw_architecture\": \"x86_64\""},{"line_number":5,"context_line":"    },"},{"line_number":6,"context_line":"    \"nova_object.name\": \"ImageMetaPropsPayload\","},{"line_number":7,"context_line":"    \"nova_object.version\": \"1.10\""},{"line_number":8,"context_line":"}"}],"source_content_type":"application/json","patch_set":19,"id":"a18c5a6d_90901a8b","line":7,"updated":"2022-08-24 08:27:21.000000000","message":"as you bumped the object version to 1.11 you need to bump version in the sample file too to make the functional test happy.","commit_id":"3cc574998da83cf884d02c56f740b1c215bd3f66"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"485b7fca953960f74679a49c71f054e6536475d4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"        \"hw_architecture\": \"x86_64\""},{"line_number":5,"context_line":"    },"},{"line_number":6,"context_line":"    \"nova_object.name\": \"ImageMetaPropsPayload\","},{"line_number":7,"context_line":"    \"nova_object.version\": \"1.10\""},{"line_number":8,"context_line":"}"}],"source_content_type":"application/json","patch_set":19,"id":"ae4f58aa_0c19a24e","line":7,"in_reply_to":"a18c5a6d_90901a8b","updated":"2022-08-25 11:49:08.000000000","message":"Done","commit_id":"3cc574998da83cf884d02c56f740b1c215bd3f66"}],"doc/source/admin/libvirt-misc.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63e948cb1c3ea2161da079df83859e7e2c063524","unresolved":true,"context_lines":[{"line_number":153,"context_line":"``hw:locked_memory`` extra spec (or use ``hw_locked_memory`` image property)."},{"line_number":154,"context_line":"``hw:locked_memory`` (also ``hw_locked_memory`` image property) accept"},{"line_number":155,"context_line":"boolean values like true or false value."},{"line_number":156,"context_line":"Valid values for true are: \u0027True\u0027, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027yes\u0027, or \u0027y\u0027."},{"line_number":157,"context_line":"Valid values for false are: \u0027False\u0027, \u0027false\u0027, \u0027f\u0027, \u00270\u0027, \u0027no\u0027, or \u0027n\u0027."},{"line_number":158,"context_line":"This will only be allowed if you have also set ``hw:mem_page_size``,"},{"line_number":159,"context_line":"so we can ensure that the scheduler can actually account for this correctly"},{"line_number":160,"context_line":"and prevent out of memory events."}],"source_content_type":"text/x-rst","patch_set":11,"id":"65feac1e_e2ff39a4","line":157,"range":{"start_line":156,"start_character":0,"end_line":157,"end_character":68},"updated":"2022-07-07 10:12:10.000000000","message":"nit: while technically correct i normally try to avoid listing all values intentionally to encourage true/false to be used.\n\nso normally i intentionally do not document the full range of accepted inputs\n\ni woudld prefer if we did not list all valid values here but this should not hold up the patch its just a nit. i dont really consider the other values as intentionaly supported its just an artifact fo the implemnetaion of the sring to bool function in oslo and not part of the api contract.","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1a03cbde0e518278e368f722f028bf5289547459","unresolved":false,"context_lines":[{"line_number":153,"context_line":"``hw:locked_memory`` extra spec (or use ``hw_locked_memory`` image property)."},{"line_number":154,"context_line":"``hw:locked_memory`` (also ``hw_locked_memory`` image property) accept"},{"line_number":155,"context_line":"boolean values like true or false value."},{"line_number":156,"context_line":"Valid values for true are: \u0027True\u0027, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027yes\u0027, or \u0027y\u0027."},{"line_number":157,"context_line":"Valid values for false are: \u0027False\u0027, \u0027false\u0027, \u0027f\u0027, \u00270\u0027, \u0027no\u0027, or \u0027n\u0027."},{"line_number":158,"context_line":"This will only be allowed if you have also set ``hw:mem_page_size``,"},{"line_number":159,"context_line":"so we can ensure that the scheduler can actually account for this correctly"},{"line_number":160,"context_line":"and prevent out of memory events."}],"source_content_type":"text/x-rst","patch_set":11,"id":"74392685_2f27ea2c","line":157,"range":{"start_line":156,"start_character":0,"end_line":157,"end_character":68},"in_reply_to":"65feac1e_e2ff39a4","updated":"2022-07-14 20:31:30.000000000","message":"Done","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"}],"doc/source/user/flavors.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f63ecca2352bb7e20fd2229c31314934318f084","unresolved":true,"context_lines":[{"line_number":730,"context_line":"     backed by huge pages. Otherwise, the guest OS will not be getting the"},{"line_number":731,"context_line":"     performance benefit it is expecting."},{"line_number":732,"context_line":""},{"line_number":733,"context_line":".. _extra-spec-mlock"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."}],"source_content_type":"text/x-rst","patch_set":2,"id":"80162877_5ef65209","line":733,"updated":"2021-03-05 02:33:04.000000000","message":":","commit_id":"f45d0c904efa52eb3002352b44941e6af35c7808"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":730,"context_line":"     backed by huge pages. Otherwise, the guest OS will not be getting the"},{"line_number":731,"context_line":"     performance benefit it is expecting."},{"line_number":732,"context_line":""},{"line_number":733,"context_line":".. _extra-spec-mlock"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfaecb26_97196743","line":733,"in_reply_to":"80162877_5ef65209","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"f45d0c904efa52eb3002352b44941e6af35c7808"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":733,"context_line":".. _extra-spec-mlock"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"89dcaa02_5d6ffb00","line":736,"range":{"start_line":736,"start_character":2,"end_line":736,"end_character":15},"updated":"2021-03-09 18:25:44.000000000","message":"Locking memory marks\n\n-or-\n\nLocked memory is memory marked as","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":733,"context_line":".. _extra-spec-mlock"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"e6026100_84ba8f1d","line":736,"range":{"start_line":736,"start_character":68,"end_line":736,"end_character":78},"updated":"2021-03-09 18:25:44.000000000","message":"unswappable","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":733,"context_line":".. _extra-spec-mlock"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"269dc540_b5f29d2a","line":736,"range":{"start_line":736,"start_character":2,"end_line":736,"end_character":15},"in_reply_to":"89dcaa02_5d6ffb00","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":733,"context_line":".. _extra-spec-mlock"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"d860dec7_463a11d6","line":736,"range":{"start_line":736,"start_character":68,"end_line":736,"end_character":78},"in_reply_to":"e6026100_84ba8f1d","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53d17fe177b49e746a7099fe93a3dc8e18726f8f","unresolved":true,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"480cc814_1eae763a","line":737,"range":{"start_line":737,"start_character":2,"end_line":737,"end_character":4},"updated":"2021-03-09 13:17:21.000000000","message":"nit: It","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Locked memory allocation"},{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ea63ad3c_a774088f","line":737,"range":{"start_line":737,"start_character":2,"end_line":737,"end_character":4},"in_reply_to":"480cc814_1eae763a","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"c877bb75_2a6aa476","line":739,"range":{"start_line":739,"start_character":38,"end_line":739,"end_character":60},"updated":"2021-03-09 18:25:44.000000000","message":"Not quite. The valid values are anything that oslo_utils.strutils.bool_from_str or whatever it\u0027s called recognises as a boolean-like value. Last I checked, that was 1, yes, y, true or True for true values and similar for False values.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53d17fe177b49e746a7099fe93a3dc8e18726f8f","unresolved":true,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"c69d15c1_0478c921","line":739,"updated":"2021-03-09 13:17:21.000000000","message":"Should we mention that locked instances do not play well with memory over allocation? Or is it a trivial consequence of the unswapableness of them?","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e1d25726_67a6271e","line":739,"in_reply_to":"37a61a0a_c977bb20","updated":"2021-03-09 18:25:44.000000000","message":"\u003e well it is a trivial concequnce of not being able to swap them but i can make this more clear.\n\u003e i also realise i should have a release note for this in this patch too.\n\u003e \n\u003e i would generally say this should only be used in conjunction with hugepages to prevent over allocation.\n\u003e its not striclty required but if you dont then you should not set memory_allcoation_ratio\u003e1\n\nCan we make this an explicit dependency, i.e. you must set \u0027hw:mem_page_size\u0027 to set \u0027hw:mem_locked\u0027? It would greatly simplify matters.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"8d3be2af_6e2bb3c0","line":739,"in_reply_to":"490f5500_e4f022d0","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7ccf770228e4ec88afa1b52e11519026d825d103","unresolved":true,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"37a61a0a_c977bb20","line":739,"in_reply_to":"c69d15c1_0478c921","updated":"2021-03-09 14:20:16.000000000","message":"well it is a trivial concequnce of not being able to swap them but i can make this more clear.\ni also realise i should have a release note for this in this patch too.\n\ni would generally say this should only be used in conjunction with hugepages to prevent over allocation.\nits not striclty required but if you dont then you should not set memory_allcoation_ratio\u003e1\n\nill add this to the doc to make that clear.\n\n\non a related note i also need to file a bug and add a ptg item related to libvirts current behaivor.\nthis is needed for vdpa because of a behavior in libvirt we were not previouly aware of.\neven without asking libvirt sets RLIMIT_MEMLOCK to guest ram + 1G when a vm has VFIO, mdev or nvme devices assigned. qemu then locks all the guest ram and the deivce dma buffers and caches.\nthat means all instance using neutron sriov ports, pci passthough, vGPU and cinder NVMEoF volumns today are effectivly locked. meaning our memoy over subsciption is broken in those cases.\n\ni need to add this for vdpa because libvirt currently do not do that for vdpa yet but it likely will in the future to be consitent with other device types.\n\nim not really sure how to fix our memory over allocation support in nova.\ni only became aware of this last week and confirm it on wednesday.\nhttp://paste.openstack.org/show/803381/\n\nthe drastic approch is to require all vms with passthough devices to use hugepages or hw:mem_page_size in genral\neven with small pages to prevent memory over allocation.\nless drastic would be to set memtune.hard_limit equal to RAM+1G as libvirt does and claim ram+1G in placment\nif we did this we would want to make the hard_limit configurable by the flavor because libvirt is just gussing 1G is enough today its very possible to exceed that.\nwe discuss this at some lenght in the SEV spec and determined that we cant come up with a resonable algorithm to determin the hard_limit.\nhttps://review.opendev.org/c/openstack/nova-specs/+/641994/2/specs/train/approved/amd-sev-libvirt-support.rst#167\n\nwhen we use locked today we dont set hard_limit so RLIMIT_MEMLOCK shoudl be set to unlimited.\ni dont think adding the ablity to created locked vms makes our currnt issue any worse so i would like to add the extra spec for now and then figure out what to do in general later.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20c48cf8dfaa82551b311387a9bd88c6a18c7d8d","unresolved":true,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e9c8270d_c857dcdb","line":739,"range":{"start_line":739,"start_character":38,"end_line":739,"end_character":60},"in_reply_to":"c877bb75_2a6aa476","updated":"2021-03-09 18:57:54.000000000","message":"oh i know i intentionlayy dont document that when i use it to try and keep peopld only using true or false but i guess i can add it 😊\n\ni can explay it anything truthy i guess i just would prefer if peopel stuck to true|false|True|False and ingored the rest.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20c48cf8dfaa82551b311387a9bd88c6a18c7d8d","unresolved":true,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"490f5500_e4f022d0","line":739,"in_reply_to":"e1d25726_67a6271e","updated":"2021-03-09 18:57:54.000000000","message":"well we dont require hw:mem_page_size for realtime or for sev but both enable locked today but neither require hw:mem_page_size set. so that is why i was not going to requrie that.\n\ni can but then we likely shoudl be requireing it for the other case too.\n\nwe need to talk about memory locking in general some other time so if we want to be conservative and require hw:mem_pages_and require all instance that have lock memory to be numa instances.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":736,"context_line":"  Locked Memory marks the guest memory allocations as unmovable and unswapable."},{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ae538cdb_78e717a8","line":739,"range":{"start_line":739,"start_character":38,"end_line":739,"end_character":60},"in_reply_to":"e9c8270d_c857dcdb","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53d17fe177b49e746a7099fe93a3dc8e18726f8f","unresolved":true,"context_lines":[{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"53999aa4_d0082c3f","line":740,"updated":"2021-03-09 13:17:21.000000000","message":"What will happen if this is specified to False and then a realtime or a SEV instance is started? Is it fails cleanly when the domain is created in libvirt?","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7ccf770228e4ec88afa1b52e11519026d825d103","unresolved":true,"context_lines":[{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf1f0460_37b86cf0","line":740,"in_reply_to":"53999aa4_d0082c3f","updated":"2021-03-09 14:20:16.000000000","message":"for SEV it would break it today because AMD does not have pagefault supprot right now i belive.\nthat might change in the future.\n\nfor realtime it would actully be fine, it would reduce the performacne in some cases as parts of the quest memory or qemus memory could we swapped out unless the guest is using hugepages for it ram although the qemu memory coudl still be swapped.\nso for realtime is proably ok for this to override thing i intentionally put this last in the code to that it could overried it in this case.\n\nfor sev the vm woudl error so perhaps i should raise an error in validate_no_status or whatever thats called in the api since sev with non locked memory is not valid today?","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":737,"context_line":"  it is implicitly enabled in a number of cases such as SEV or realtime"},{"line_number":738,"context_line":"  guests but can also be enabled explictly using the ``hw:mlock`` extra spec."},{"line_number":739,"context_line":"  The valid value of ``hw:mlock`` are ``True`` or ``False``."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1cb18541_aedc518f","line":740,"in_reply_to":"bf1f0460_37b86cf0","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"},{"line_number":744,"context_line":"         --property hw:mlock\u003dTrue|False"},{"line_number":745,"context_line":"  .. note::"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"     This is currently only supported by the libvirt driver."}],"source_content_type":"text/x-rst","patch_set":4,"id":"b6705dcd_722a0f27","line":744,"range":{"start_line":744,"start_character":29,"end_line":744,"end_character":39},"updated":"2021-03-09 18:25:44.000000000","message":"nit:\n\n  .. code:: console\n\n     $ openstack flavor set FLAVOR-NAME \\\n         --property hw:mlock\u003dVALUE\n\n  Where:\n\n  - VALUE: (boolean) A boolean like true or false value. Valid values for true\n    are: \u0027True\u0027, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027yes\u0027, or \u0027y\u0027. Valid values for false are\n    ...","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"},{"line_number":744,"context_line":"         --property hw:mlock\u003dTrue|False"},{"line_number":745,"context_line":"  .. note::"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"     This is currently only supported by the libvirt driver."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1d8d5f83_8b854fbf","line":744,"range":{"start_line":744,"start_character":29,"end_line":744,"end_character":39},"in_reply_to":"95da43b9_f1998d63","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20c48cf8dfaa82551b311387a9bd88c6a18c7d8d","unresolved":true,"context_lines":[{"line_number":741,"context_line":"  .. code:: console"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"},{"line_number":744,"context_line":"         --property hw:mlock\u003dTrue|False"},{"line_number":745,"context_line":"  .. note::"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"     This is currently only supported by the libvirt driver."}],"source_content_type":"text/x-rst","patch_set":4,"id":"95da43b9_f1998d63","line":744,"range":{"start_line":744,"start_character":29,"end_line":744,"end_character":39},"in_reply_to":"b6705dcd_722a0f27","updated":"2021-03-09 18:57:54.000000000","message":"sure i can thouhgh i dislike listing all the values since that is determined by oslo.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"  .. note::"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"     This is currently only supported by the libvirt driver."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":".. _extra-specs-secure-boot:"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7d24b2ea_548fc846","line":140,"updated":"2022-06-03 07:46:47.000000000","message":"Since the first revision of this patch Stephen moved the libvirt specific things to a separate doc: doc/source/admin/libvirt-misc.rst See https://review.opendev.org/c/openstack/nova/+/781440 So I guess this new mlock thing also belongs there","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"  .. note::"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"     This is currently only supported by the libvirt driver."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":".. _extra-specs-secure-boot:"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7798a461_a3bf3d7c","line":140,"in_reply_to":"7d24b2ea_548fc846","updated":"2022-06-15 19:23:56.000000000","message":"Done","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"}],"nova/api/validation/extra_specs/hw.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        },"},{"line_number":148,"context_line":"    ),"},{"line_number":149,"context_line":"    base.ExtraSpecValidator("},{"line_number":150,"context_line":"        name\u003d\u0027hw:mlock\u0027,"},{"line_number":151,"context_line":"        description\u003d("},{"line_number":152,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":153,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"938ee9b5_c8023156","line":150,"range":{"start_line":150,"start_character":17,"end_line":150,"end_character":22},"updated":"2021-03-09 18:25:44.000000000","message":"This isn\u0027t a helpful name. Could we even go with something like \u0027mem_lock\u0027 or \u0027locked_memory\u0027?","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8750cc34e7f1ccc63a7551a0bfd4836138e03cfc","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        },"},{"line_number":148,"context_line":"    ),"},{"line_number":149,"context_line":"    base.ExtraSpecValidator("},{"line_number":150,"context_line":"        name\u003d\u0027hw:mlock\u0027,"},{"line_number":151,"context_line":"        description\u003d("},{"line_number":152,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":153,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"add94263_11411e24","line":150,"range":{"start_line":150,"start_character":17,"end_line":150,"end_character":22},"in_reply_to":"8206fbd6_1fabdd3e","updated":"2021-03-09 19:09:55.000000000","message":"+1 for \u0027locked_memory\u0027 (Sean asked me to weigh in and bikeshed the name)","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20c48cf8dfaa82551b311387a9bd88c6a18c7d8d","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        },"},{"line_number":148,"context_line":"    ),"},{"line_number":149,"context_line":"    base.ExtraSpecValidator("},{"line_number":150,"context_line":"        name\u003d\u0027hw:mlock\u0027,"},{"line_number":151,"context_line":"        description\u003d("},{"line_number":152,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":153,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"8206fbd6_1fabdd3e","line":150,"range":{"start_line":150,"start_character":17,"end_line":150,"end_character":22},"in_reply_to":"938ee9b5_c8023156","updated":"2021-03-09 18:57:54.000000000","message":"sure mlock is the name of the syscall that is used which is why i chose it but\nthose work too.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        },"},{"line_number":148,"context_line":"    ),"},{"line_number":149,"context_line":"    base.ExtraSpecValidator("},{"line_number":150,"context_line":"        name\u003d\u0027hw:mlock\u0027,"},{"line_number":151,"context_line":"        description\u003d("},{"line_number":152,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":153,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"965d9c68_33f543ef","line":150,"range":{"start_line":150,"start_character":17,"end_line":150,"end_character":22},"in_reply_to":"add94263_11411e24","updated":"2022-06-01 20:21:34.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":165,"context_line":"    base.ExtraSpecValidator("},{"line_number":166,"context_line":"        name\u003d\u0027hw:locked_memory\u0027,"},{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":9,"id":"6adb657e_4c822dce","line":168,"range":{"start_line":168,"start_character":26,"end_line":168,"end_character":38},"updated":"2022-06-03 07:46:47.000000000","message":"To follow the pattern in this file:\n                       **guest** (instance)","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    base.ExtraSpecValidator("},{"line_number":166,"context_line":"        name\u003d\u0027hw:locked_memory\u0027,"},{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":9,"id":"0a40c639_2bca3bd7","line":168,"range":{"start_line":168,"start_character":26,"end_line":168,"end_character":38},"in_reply_to":"6adb657e_4c822dce","updated":"2022-06-15 19:23:56.000000000","message":"Done","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":166,"context_line":"        name\u003d\u0027hw:locked_memory\u0027,"},{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"},{"line_number":172,"context_line":"        value\u003d{"}],"source_content_type":"text/x-python","patch_set":9,"id":"bedb14d4_a3a1153f","line":169,"range":{"start_line":169,"start_character":33,"end_line":169,"end_character":43},"updated":"2022-06-03 07:46:47.000000000","message":"This does not really tell the user when this is needed to be set. Do we have a doc somewhere that states for which features needs this flag to be set?","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d8985587ab5f6d19a6257b572aa755997fb5604","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        name\u003d\u0027hw:locked_memory\u0027,"},{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"},{"line_number":172,"context_line":"        value\u003d{"}],"source_content_type":"text/x-python","patch_set":9,"id":"82cd31b0_eaa4fe73","line":169,"range":{"start_line":169,"start_character":33,"end_line":169,"end_character":43},"in_reply_to":"4f85caf2_308767c9","updated":"2022-06-16 09:25:42.000000000","message":"sure","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":true,"context_lines":[{"line_number":166,"context_line":"        name\u003d\u0027hw:locked_memory\u0027,"},{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"},{"line_number":172,"context_line":"        value\u003d{"}],"source_content_type":"text/x-python","patch_set":9,"id":"4f85caf2_308767c9","line":169,"range":{"start_line":169,"start_character":33,"end_line":169,"end_character":43},"in_reply_to":"bedb14d4_a3a1153f","updated":"2022-06-15 19:23:56.000000000","message":"viommu feature required this flag, but since it depends on this patch as well, do you think maybe I can add improvement of this description on that patch?","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"},{"line_number":172,"context_line":"        value\u003d{"},{"line_number":173,"context_line":"            \u0027type\u0027: bool,"}],"source_content_type":"text/x-python","patch_set":9,"id":"6c774872_dd32b4e0","line":170,"range":{"start_line":170,"start_character":12,"end_line":170,"end_character":51},"updated":"2022-06-03 07:46:47.000000000","message":"to follow the pattern in this file this should be:\n          \u0027Only supported by the libvirt virt driver.\u0027","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        description\u003d("},{"line_number":168,"context_line":"            \u0027Determine if guest memory should be locked preventing swaping. \u0027"},{"line_number":169,"context_line":"            \u0027This is required in rare cases for device DMA transfers. \u0027"},{"line_number":170,"context_line":"            \u0027Only supported by the libvirt driver.\u0027"},{"line_number":171,"context_line":"        ),"},{"line_number":172,"context_line":"        value\u003d{"},{"line_number":173,"context_line":"            \u0027type\u0027: bool,"}],"source_content_type":"text/x-python","patch_set":9,"id":"135a27b4_05c1452f","line":170,"range":{"start_line":170,"start_character":12,"end_line":170,"end_character":51},"in_reply_to":"6c774872_dd32b4e0","updated":"2022-06-15 19:23:56.000000000","message":"Done","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c263694ebc79cafe3cd75328f958268b1c823226","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        name\u003d\u0027hw:locked_memory\u0027,"},{"line_number":168,"context_line":"        description\u003d("},{"line_number":169,"context_line":"            \u0027Determine if **guest** (instance) memory should be locked \u0027"},{"line_number":170,"context_line":"            \u0027preventing swaping. This is required in rare cases for device \u0027"},{"line_number":171,"context_line":"            \u0027DMA transfers. Only supported by the libvirt virt driver.\u0027"},{"line_number":172,"context_line":"        ),"},{"line_number":173,"context_line":"        value\u003d{"}],"source_content_type":"text/x-python","patch_set":20,"id":"caa1f847_0b44cb83","line":170,"range":{"start_line":170,"start_character":24,"end_line":170,"end_character":31},"updated":"2022-08-26 14:50:35.000000000","message":"swapping","commit_id":"572c2b18e27f6fcbbd4a1f416b0ec21098b3ba74"}],"nova/exception.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c0217101d58951e65b10d27edd56fd93062cb0b3","unresolved":true,"context_lines":[{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"class FlavorImageLockedMemoryConflict(NovaException):"},{"line_number":1870,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image (%(image)s) and flavor \""},{"line_number":1871,"context_line":"                \"(%(flavor)s) conflict. Expect consist value if both \""},{"line_number":1872,"context_line":"                \"specified.\")"},{"line_number":1873,"context_line":""},{"line_number":1874,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"a832d86a_8bc3d4cb","line":1871,"range":{"start_line":1871,"start_character":40,"end_line":1871,"end_character":60},"updated":"2022-08-18 07:39:10.000000000","message":"A consistent value is expected if","commit_id":"14c1912de25857fbc295f41738a98b0dc3d588cd"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"16b47b6f3c051af2bf495bab6e987f290b5eddb9","unresolved":false,"context_lines":[{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"class FlavorImageLockedMemoryConflict(NovaException):"},{"line_number":1870,"context_line":"    msg_fmt \u003d _(\"locked_memory value in image (%(image)s) and flavor \""},{"line_number":1871,"context_line":"                \"(%(flavor)s) conflict. Expect consist value if both \""},{"line_number":1872,"context_line":"                \"specified.\")"},{"line_number":1873,"context_line":""},{"line_number":1874,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac981a9_ca3053ab","line":1871,"range":{"start_line":1871,"start_character":40,"end_line":1871,"end_character":60},"in_reply_to":"a832d86a_8bc3d4cb","updated":"2022-08-20 21:23:46.000000000","message":"Done","commit_id":"14c1912de25857fbc295f41738a98b0dc3d588cd"}],"nova/objects/image_meta.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":true,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # string - make sure ``locked`` element is present in the"},{"line_number":370,"context_line":"        # ``memoryBacking``."},{"line_number":371,"context_line":"        \u0027hw_locked_memory\u0027: fields.StringField(),"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        # There are sooooooooooo many possible machine types in"},{"line_number":374,"context_line":"        # QEMU - several new ones with each new release - that it"}],"source_content_type":"text/x-python","patch_set":12,"id":"04a3c6d7_6b4b3678","line":371,"range":{"start_line":371,"start_character":35,"end_line":371,"end_character":46},"updated":"2022-07-19 09:54:00.000000000","message":"What was the problem with FlexibleBooleanField ?","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":true,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # string - make sure ``locked`` element is present in the"},{"line_number":370,"context_line":"        # ``memoryBacking``."},{"line_number":371,"context_line":"        \u0027hw_locked_memory\u0027: fields.StringField(),"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        # There are sooooooooooo many possible machine types in"},{"line_number":374,"context_line":"        # QEMU - several new ones with each new release - that it"}],"source_content_type":"text/x-python","patch_set":12,"id":"5c457fd2_a2a17340","line":371,"range":{"start_line":371,"start_character":35,"end_line":371,"end_character":46},"in_reply_to":"04a3c6d7_6b4b3678","updated":"2022-07-19 10:33:05.000000000","message":"FlexibleBooleanField would be better i think i just copy pasted  \u0027hw_machine_type\u0027\n\nand never updated it since this was  orginally a poc patch to ask for feedback rather then somethign i planded to merge so i proably did not check the type.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1745ad5ba8ff359b7361b5c414028bf0157cd14","unresolved":true,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # string - make sure ``locked`` element is present in the"},{"line_number":370,"context_line":"        # ``memoryBacking``."},{"line_number":371,"context_line":"        \u0027hw_locked_memory\u0027: fields.StringField(),"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        # There are sooooooooooo many possible machine types in"},{"line_number":374,"context_line":"        # QEMU - several new ones with each new release - that it"}],"source_content_type":"text/x-python","patch_set":12,"id":"a1a68c86_38da5499","line":371,"range":{"start_line":371,"start_character":35,"end_line":371,"end_character":46},"in_reply_to":"5c457fd2_a2a17340","updated":"2022-07-20 16:54:17.000000000","message":"This changed between PS9 and PS12 hence my question","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"b266ec5d69d2774d00c9e344673ef693d71ea489","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # string - make sure ``locked`` element is present in the"},{"line_number":370,"context_line":"        # ``memoryBacking``."},{"line_number":371,"context_line":"        \u0027hw_locked_memory\u0027: fields.StringField(),"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        # There are sooooooooooo many possible machine types in"},{"line_number":374,"context_line":"        # QEMU - several new ones with each new release - that it"}],"source_content_type":"text/x-python","patch_set":12,"id":"70b7f339_e27d792b","line":371,"range":{"start_line":371,"start_character":35,"end_line":371,"end_character":46},"in_reply_to":"a1a68c86_38da5499","updated":"2022-07-20 21:09:25.000000000","message":"I update it because it accept string type of boolean, but if FlexibleBooleanField also can accept those value with better constraint, I think it will be better.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"}],"nova/tests/unit/objects/test_image_meta.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":291,"context_line":"        props \u003d {\u0027hw_locked_memory\u0027: \u0027yes\u0027}"},{"line_number":292,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":293,"context_line":"        self.assertTrue(virtprops.hw_locked_memory)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_get_unnumbered_trait_fields(self):"},{"line_number":296,"context_line":"        \"\"\"Tests that only valid un-numbered required traits are parsed from"},{"line_number":297,"context_line":"        the properties."}],"source_content_type":"text/x-python","patch_set":9,"id":"0a6af6b5_8d62873f","line":294,"updated":"2022-06-03 07:46:47.000000000","message":"We need test coverage for the object version compatibility handling something similar to test_obj_make_compatible_hw_emulation","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        props \u003d {\u0027hw_locked_memory\u0027: \u0027yes\u0027}"},{"line_number":292,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":293,"context_line":"        self.assertTrue(virtprops.hw_locked_memory)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_get_unnumbered_trait_fields(self):"},{"line_number":296,"context_line":"        \"\"\"Tests that only valid un-numbered required traits are parsed from"},{"line_number":297,"context_line":"        the properties."}],"source_content_type":"text/x-python","patch_set":9,"id":"71a24d6c_d3d797ad","line":294,"in_reply_to":"0a6af6b5_8d62873f","updated":"2022-06-15 19:23:56.000000000","message":"Done","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63e948cb1c3ea2161da079df83859e7e2c063524","unresolved":true,"context_lines":[{"line_number":288,"context_line":"                         virtprops.hw_numa_cpus)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_locked_memory_prop(self):"},{"line_number":291,"context_line":"        props \u003d {\u0027hw_locked_memory\u0027: \u0027yes\u0027}"},{"line_number":292,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":293,"context_line":"        self.assertTrue(virtprops.hw_locked_memory)"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"52234fa1_1594ab2b","line":291,"updated":"2022-07-07 10:12:10.000000000","message":"nit: i would prefer if you use true and flase in all test code.\ni consider it bad pratice to use yes/no even if its in the valid set of imports","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1a03cbde0e518278e368f722f028bf5289547459","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                         virtprops.hw_numa_cpus)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_locked_memory_prop(self):"},{"line_number":291,"context_line":"        props \u003d {\u0027hw_locked_memory\u0027: \u0027yes\u0027}"},{"line_number":292,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":293,"context_line":"        self.assertTrue(virtprops.hw_locked_memory)"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"4909eb0d_6cb60808","line":291,"in_reply_to":"52234fa1_1594ab2b","updated":"2022-07-14 20:31:30.000000000","message":"Done","commit_id":"d8929513448ceec31f19e1623c4a64bca4663983"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"332ddee0_6ed6476e","line":3347,"updated":"2021-03-09 18:25:44.000000000","message":"style nit: Can you avoid the giant hanging indent like below?","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"741608f0_f917539e","line":3347,"in_reply_to":"01a95da9_e432c30f","updated":"2022-06-03 07:46:47.000000000","message":"I think this was not addressed","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20c48cf8dfaa82551b311387a9bd88c6a18c7d8d","unresolved":true,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"4aa13572_721f97c1","line":3347,"in_reply_to":"332ddee0_6ed6476e","updated":"2021-03-09 18:57:54.000000000","message":"again this is not a haning indent you always get it mixed up\n\nthe \n        membacking \u003d drvr._get_guest_memory_backing_config(\n            None, None, flavor, image_meta)\nis a hanning indent as defiend by pep8\n\nbut yes this was just me copy pasting.\nill fix it also most of the flavor value are not relevant so ill remove them","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":false,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"01a95da9_e432c30f","line":3347,"in_reply_to":"4aa13572_721f97c1","updated":"2022-06-01 20:21:34.000000000","message":"I think this is addressed","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1a03cbde0e518278e368f722f028bf5289547459","unresolved":false,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"9b5e75a0_815f69e8","line":3347,"in_reply_to":"5cf5f43f_c8369d18","updated":"2022-07-14 20:31:30.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":true,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"e47ff682_3e0e3d63","line":3347,"in_reply_to":"741608f0_f917539e","updated":"2022-06-15 19:23:56.000000000","message":"I\u0027m targeting it here and the one below, but assume we gonna need a separate patch to target them all at once. please check if this addressed","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63e948cb1c3ea2161da079df83859e7e2c063524","unresolved":true,"context_lines":[{"line_number":3344,"context_line":"                                root_gb\u003d496,"},{"line_number":3345,"context_line":"                                ephemeral_gb\u003d8128,"},{"line_number":3346,"context_line":"                                swap\u003d33550336,"},{"line_number":3347,"context_line":"                                extra_specs\u003dextra_specs)"},{"line_number":3348,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("}],"source_content_type":"text/x-python","patch_set":4,"id":"5cf5f43f_c8369d18","line":3347,"in_reply_to":"e47ff682_3e0e3d63","updated":"2022-07-07 10:12:10.000000000","message":"given we likely need rework of the later patches in the serise i woudl prefer if you fix this in this patch not a followup since you will need to rebase the seriese later anyway.\n\nso i agree with gibi this is not currently adressed.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e59e3ae339239767f8b0976d07dea3c39c9ff22e","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"ed1e9d55_be9c7206","line":3352,"updated":"2021-03-09 18:25:44.000000000","message":"If we add a dependency on mempage size being specified like I\u0027m suggesting, we should add a test for that being missing here","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1a03cbde0e518278e368f722f028bf5289547459","unresolved":false,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba380937_c3fd7c32","line":3352,"in_reply_to":"7d79656f_afdcc8d6","updated":"2022-07-14 20:31:30.000000000","message":"Done","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d8985587ab5f6d19a6257b572aa755997fb5604","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"da414e22_ca88b776","line":3352,"in_reply_to":"9f909c8e_5ab2075b","updated":"2022-06-16 09:25:42.000000000","message":"I\u0027m not sure that is a good user experience. I would raise an error to make it explicit that the memory locking is not applied. It is better being explicit than letting the user troubleshoot why the memory locking is not applied.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f909c8e_5ab2075b","line":3352,"in_reply_to":"aba05062_41e4427a","updated":"2022-06-15 19:23:56.000000000","message":"currently, we don\u0027t raise anything if mem_page_size is not set, but only ignore it.\nAnd to test if mem_page_size not set, is already covered by https://review.opendev.org/c/openstack/nova/+/778347/4..9/nova/tests/unit/virt/libvirt/test_driver.py#3132","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"aba05062_41e4427a","line":3352,"in_reply_to":"b18129e3_a48d048d","updated":"2022-06-03 07:46:47.000000000","message":"At least I don\u0027t see a test with mem_page_size not set. Also I don\u0027t see \u0027validate_no_status_numa\u0027 being adapted to reject the api request.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1ed37047a44d86e5c38b558c37466d633fb445b6","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"b18129e3_a48d048d","line":3352,"in_reply_to":"ba756eaf_9f6e6473","updated":"2022-06-01 20:21:34.000000000","message":"is this still pending?","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6dde44411720cbac13d7afc84c16623b366755a8","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"7d79656f_afdcc8d6","line":3352,"in_reply_to":"da414e22_ca88b776","updated":"2022-06-16 10:15:27.000000000","message":"yep its shoudl be a hard errir and we shoudl not get as far as the driver.\n\nthis shoudl be rejected in the api in _validate_flavor_image_numa_pci\n\nhttps://github.com/openstack/nova/blob/93a65f06df67ce39d65827692150c78013c7f6d5/nova/compute/api.py#L842\u003d\n\nwhich is called form _validate_flavor_image_nostatus \n\nhttps://github.com/openstack/nova/blob/93a65f06df67ce39d65827692150c78013c7f6d5/nova/compute/api.py#L703\n\nhere https://github.com/openstack/nova/blob/93a65f06df67ce39d65827692150c78013c7f6d5/nova/compute/api.py#L815\u003d\n\ni would proably add the check to  numa_get_constraints(\n\nhttps://github.com/openstack/nova/blob/93a65f06df67ce39d65827692150c78013c7f6d5/nova/virt/hardware.py#L1958\n\nby intoducing a get_locked_memory_constrait function like get_cpu_thread_policy_constriat\nhttps://github.com/openstack/nova/blob/93a65f06df67ce39d65827692150c78013c7f6d5/nova/virt/hardware.py#L1483-L1522\u003d\nwhich will raise if hw_mem_page_size or hw:mem_page_size is not in the falvor/image but locked memeory is requested.\n\nor do the check inline in _validate_flavor_image_numa_pci but i woudl prefer to keep this type of check in hardware.py\n\nwith that the boot request never gets past the api to even create an instance object and  the use will get a clear expcition form the api noting that the combiniation is invlaid and why.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20c48cf8dfaa82551b311387a9bd88c6a18c7d8d","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":3350,"context_line":"        membacking \u003d drvr._get_guest_memory_backing_config("},{"line_number":3351,"context_line":"            None, None, flavor, image_meta)"},{"line_number":3352,"context_line":"        self.assertTrue(membacking.locked)"},{"line_number":3353,"context_line":""},{"line_number":3354,"context_line":"    def test_get_guest_memory_backing_config_realtime_invalid_share(self):"},{"line_number":3355,"context_line":"        \"\"\"Test behavior when there is no pool of shared CPUS on which to place"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba756eaf_9f6e6473","line":3352,"in_reply_to":"ed1e9d55_be9c7206","updated":"2021-03-09 18:57:54.000000000","message":"yep assert that it raises if hw:mem_page_size is not set.\nalthough in reality it would not get here since if we required\nthat we would reject it at the api in validate_no_status_numa or whatever that\u0027s called.\n\nim going to ping a few other to take a look like artom and see what people think then ill respin this tomorrow.","commit_id":"76fa9f1309cca38621cb32652a5ef80e1b63383c"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":true,"context_lines":[{"line_number":2821,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"properties\": props or {}})"},{"line_number":2822,"context_line":"        return hw._get_locked_memory_constraint(flavor, image_meta)"},{"line_number":2823,"context_line":""},{"line_number":2824,"context_line":"    def test_get_locked_memory_constraint_image(self):"},{"line_number":2825,"context_line":"        self.assertEqual("},{"line_number":2826,"context_line":"            \"True\", self._test_get_locked_memory_constraint("},{"line_number":2827,"context_line":"                spec\u003d{\"hw:mem_page_size\": \"small\"},"},{"line_number":2828,"context_line":"                props\u003d{\"hw_locked_memory\": \"True\"}))"},{"line_number":2829,"context_line":""},{"line_number":2830,"context_line":"    def test_get_locked_memory_constraint_flavor(self):"},{"line_number":2831,"context_line":"        # hw:locked_memory should override hw_locked_memory"},{"line_number":2832,"context_line":"        self.assertEqual("},{"line_number":2833,"context_line":"            \"False\", self._test_get_locked_memory_constraint("},{"line_number":2834,"context_line":"                spec\u003d{\"hw:locked_memory\": \"False\","},{"line_number":2835,"context_line":"                      \"hw:mem_page_size\": \"small\"},"},{"line_number":2836,"context_line":"                props\u003d{\"hw_locked_memory\": \"True\"}))"},{"line_number":2837,"context_line":""},{"line_number":2838,"context_line":"    def test_get_locked_memory_constraint_forbidden(self):"},{"line_number":2839,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":12,"id":"33cb10d3_970cec26","line":2836,"range":{"start_line":2824,"start_character":4,"end_line":2836,"end_character":52},"updated":"2022-07-19 10:33:05.000000000","message":"oh actully this is wrong you shoudl be returning boolean values not the raw strings at this point","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"b266ec5d69d2774d00c9e344673ef693d71ea489","unresolved":false,"context_lines":[{"line_number":2821,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"properties\": props or {}})"},{"line_number":2822,"context_line":"        return hw._get_locked_memory_constraint(flavor, image_meta)"},{"line_number":2823,"context_line":""},{"line_number":2824,"context_line":"    def test_get_locked_memory_constraint_image(self):"},{"line_number":2825,"context_line":"        self.assertEqual("},{"line_number":2826,"context_line":"            \"True\", self._test_get_locked_memory_constraint("},{"line_number":2827,"context_line":"                spec\u003d{\"hw:mem_page_size\": \"small\"},"},{"line_number":2828,"context_line":"                props\u003d{\"hw_locked_memory\": \"True\"}))"},{"line_number":2829,"context_line":""},{"line_number":2830,"context_line":"    def test_get_locked_memory_constraint_flavor(self):"},{"line_number":2831,"context_line":"        # hw:locked_memory should override hw_locked_memory"},{"line_number":2832,"context_line":"        self.assertEqual("},{"line_number":2833,"context_line":"            \"False\", self._test_get_locked_memory_constraint("},{"line_number":2834,"context_line":"                spec\u003d{\"hw:locked_memory\": \"False\","},{"line_number":2835,"context_line":"                      \"hw:mem_page_size\": \"small\"},"},{"line_number":2836,"context_line":"                props\u003d{\"hw_locked_memory\": \"True\"}))"},{"line_number":2837,"context_line":""},{"line_number":2838,"context_line":"    def test_get_locked_memory_constraint_forbidden(self):"},{"line_number":2839,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":12,"id":"a326813b_b72dfb1d","line":2836,"range":{"start_line":2824,"start_character":4,"end_line":2836,"end_character":52},"in_reply_to":"33cb10d3_970cec26","updated":"2022-07-20 21:09:25.000000000","message":"Done","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":true,"context_lines":[{"line_number":2846,"context_line":"            self._test_get_locked_memory_constraint,"},{"line_number":2847,"context_line":"            {},"},{"line_number":2848,"context_line":"            {\"hw_locked_memory\": \"True\"})"},{"line_number":2849,"context_line":""},{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"class VirtMemoryPagesTestCase(test.NoDBTestCase):"},{"line_number":2852,"context_line":"    def test_cell_instance_pagesize(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ea156e66_36cfe643","line":2849,"updated":"2022-07-19 09:54:00.000000000","message":"We have a bug (see my comment in hardware.py) and it is not caught here as you have missing test coverage. E.g.\n\n    def test_get_locked_memory_constraint_image_false(self):\n        self.assertEqual(\n            \"False\", self._test_get_locked_memory_constraint(\n                spec\u003dNone,\n                props\u003d{\"hw_locked_memory\": \"False\"}))\n\nwill fail with \n    nova.exception.LockMemoryForbidden: locked_memory value in image or flavor is forbidden when mem_page_size is not set.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"b266ec5d69d2774d00c9e344673ef693d71ea489","unresolved":false,"context_lines":[{"line_number":2846,"context_line":"            self._test_get_locked_memory_constraint,"},{"line_number":2847,"context_line":"            {},"},{"line_number":2848,"context_line":"            {\"hw_locked_memory\": \"True\"})"},{"line_number":2849,"context_line":""},{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"class VirtMemoryPagesTestCase(test.NoDBTestCase):"},{"line_number":2852,"context_line":"    def test_cell_instance_pagesize(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"15e56fc4_2629ffa1","line":2849,"in_reply_to":"ea156e66_36cfe643","updated":"2022-07-20 21:09:25.000000000","message":"Done","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":14084,"name":"Einst Crazy","email":"yu.changcai@99cloud.net","username":"Einst"},"change_message_id":"48b9e8b314c10b99d1f87b5f174a4a055d04b82a","unresolved":true,"context_lines":[{"line_number":2856,"context_line":""},{"line_number":2857,"context_line":"    def test_get_locked_memory_constraint_image_false(self):"},{"line_number":2858,"context_line":"        # False value of locked_memory will not raise LockMemoryForbidden"},{"line_number":2859,"context_line":"        self.assertFalse("},{"line_number":2860,"context_line":"            self._test_get_locked_memory_constraint("},{"line_number":2861,"context_line":"                spec\u003dNone,"},{"line_number":2862,"context_line":"                props\u003d{\"hw_locked_memory\": \"False\"}))"},{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":""},{"line_number":2865,"context_line":"class VirtMemoryPagesTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"656e8d18_88bc853f","line":2862,"range":{"start_line":2859,"start_character":5,"end_line":2862,"end_character":52},"updated":"2022-08-22 02:59:22.000000000","message":"Need to add image props of like  \"{\"hw_locked_memory\": \"False\"}\"","commit_id":"a3611fd3a4411cdb291804c2328d0afa89dabdc9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"485b7fca953960f74679a49c71f054e6536475d4","unresolved":true,"context_lines":[{"line_number":2856,"context_line":""},{"line_number":2857,"context_line":"    def test_get_locked_memory_constraint_image_false(self):"},{"line_number":2858,"context_line":"        # False value of locked_memory will not raise LockMemoryForbidden"},{"line_number":2859,"context_line":"        self.assertFalse("},{"line_number":2860,"context_line":"            self._test_get_locked_memory_constraint("},{"line_number":2861,"context_line":"                spec\u003dNone,"},{"line_number":2862,"context_line":"                props\u003d{\"hw_locked_memory\": \"False\"}))"},{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":""},{"line_number":2865,"context_line":"class VirtMemoryPagesTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"94603e45_a01b37e3","line":2862,"range":{"start_line":2859,"start_character":5,"end_line":2862,"end_character":52},"in_reply_to":"3d40d1c4_9ad263fd","updated":"2022-08-25 11:49:08.000000000","message":"they are sayting that you should not call this via a keyword argument\nbut shoudl a postional instead which is wrong this is correct as written.\n\n\nalthoguh technially\n\n        self.assertRaises(\n            exception.LockMemoryForbidden,\n            self._test_get_locked_memory_constraint,\n            {},\n            {\"hw_locked_memory\": \"True\"})\n            \nshoudl be \n\n        self.assertRaises(\n            exception.LockMemoryForbidden,\n            self._test_get_locked_memory_constraint,\n            spec\u003d{},\n            props\u003d{\"hw_locked_memory\": \"True\"})\n            \nbut im not goign to require you to fix that here.\nif you respince however it would be nice to fix that.\n\ncalling keyword arguments as positionals args while allowed is dangorus and should never be done in real code. in the test is bad practice but not dangours its just overly strict. there are not orderign guarentees for kwargs.","commit_id":"a3611fd3a4411cdb291804c2328d0afa89dabdc9"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4f83520681ef2cee48c2a78bd3e11b635738e67c","unresolved":true,"context_lines":[{"line_number":2856,"context_line":""},{"line_number":2857,"context_line":"    def test_get_locked_memory_constraint_image_false(self):"},{"line_number":2858,"context_line":"        # False value of locked_memory will not raise LockMemoryForbidden"},{"line_number":2859,"context_line":"        self.assertFalse("},{"line_number":2860,"context_line":"            self._test_get_locked_memory_constraint("},{"line_number":2861,"context_line":"                spec\u003dNone,"},{"line_number":2862,"context_line":"                props\u003d{\"hw_locked_memory\": \"False\"}))"},{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":""},{"line_number":2865,"context_line":"class VirtMemoryPagesTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3d40d1c4_9ad263fd","line":2862,"range":{"start_line":2859,"start_character":5,"end_line":2862,"end_character":52},"in_reply_to":"656e8d18_88bc853f","updated":"2022-08-22 20:35:45.000000000","message":"Not following, this line provide props that will be use as image property setup. is that what you mean?","commit_id":"a3611fd3a4411cdb291804c2328d0afa89dabdc9"}],"nova/virt/hardware.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    if locked_memory and not (mem_page_size_flavor or mem_page_size_image):"},{"line_number":1361,"context_line":"        raise exception.LockMemoryForbidden()"}],"source_content_type":"text/x-python","patch_set":12,"id":"39694a1f_1c25bb30","line":1358,"range":{"start_line":1358,"start_character":20,"end_line":1358,"end_character":63},"updated":"2022-07-19 09:54:00.000000000","message":"Both of these values are strings. So (\"False\" or \"False\") will be \"False\". But then\n     if \"False\" \n\nbelow will be True\n\nThis also shows that we are lacking test coverage as this is not caught by the current coverage","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    if locked_memory and not (mem_page_size_flavor or mem_page_size_image):"},{"line_number":1361,"context_line":"        raise exception.LockMemoryForbidden()"}],"source_content_type":"text/x-python","patch_set":12,"id":"67a87ef6_f479ec22","line":1358,"range":{"start_line":1358,"start_character":20,"end_line":1358,"end_character":63},"in_reply_to":"39694a1f_1c25bb30","updated":"2022-07-19 10:33:05.000000000","message":"locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta(\n        \u0027locked_memory\u0027, flavor, image_meta)\n    locked_memory \u003d locked_memory_flavor or locked_memory_image\n    if locked_memory and not (mem_page_size_flavor or mem_page_size_image):\n        raise exception.LockMemoryForbidden()\n        \n        \n  so if \n  \n  locked_memory_flavor, locked_memory_image \u003d False , False\n  \n  then \n  locked_memory will be False\n  \n  so \n   if locked_memory and not (mem_page_size_flavor or mem_page_size_image):\n   \n   will be\n   \n    if False and not (mem_page_size_flavor or mem_page_size_image):\n    \n    so we short curcat and never check if mem_page_size is set\n  \n  and return False\n  \n  \n  so that all look correct to me.\n  ------------------------------------\n  latere ya ok i see the issue the we are not doing the type convertion to bool here if we use the flexibleboolfiled type it will fix this bug otherwise we need to use strutils to implement tht convertion on locked_memory before we use it later","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5305f238993505c1512ff6180ed9a250010c2405","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    if locked_memory and not (mem_page_size_flavor or mem_page_size_image):"},{"line_number":1361,"context_line":"        raise exception.LockMemoryForbidden()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7feb304e_b0ae5ae5","line":1358,"range":{"start_line":1358,"start_character":20,"end_line":1358,"end_character":63},"in_reply_to":"67a87ef6_f479ec22","updated":"2022-07-19 10:35:17.000000000","message":"actully flexibleboolfiled will only corret the issue for image propperties you need to do the string to bool convertion porply with strutils for the flavor.","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"b266ec5d69d2774d00c9e344673ef693d71ea489","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    if locked_memory and not (mem_page_size_flavor or mem_page_size_image):"},{"line_number":1361,"context_line":"        raise exception.LockMemoryForbidden()"}],"source_content_type":"text/x-python","patch_set":12,"id":"f7f6163f_ebd8e779","line":1358,"range":{"start_line":1358,"start_character":20,"end_line":1358,"end_character":63},"in_reply_to":"7feb304e_b0ae5ae5","updated":"2022-07-20 21:09:25.000000000","message":"I think we can directly do `locked_memory_bool \u003d strutils.bool_from_string(locked_memory)` and use it for  `if locked_memory_bool and not (mem_page_size_flavor or mem_page_size_image):`","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":true,"context_lines":[{"line_number":2133,"context_line":"    pagesize \u003d _get_numa_pagesize_constraint(flavor, image_meta)"},{"line_number":2134,"context_line":"    vpmems \u003d get_vpmems(flavor)"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"    _get_locked_memory_constraint(flavor, image_meta)"},{"line_number":2137,"context_line":""},{"line_number":2138,"context_line":"    # If \u0027hw:cpu_dedicated_mask\u0027 is not found in flavor extra specs, the"},{"line_number":2139,"context_line":"    # \u0027dedicated_cpus\u0027 variable is None, while we hope it being an empty set."}],"source_content_type":"text/x-python","patch_set":12,"id":"68fc7fc0_cb4c1239","line":2136,"updated":"2022-07-19 09:54:00.000000000","message":"OK, so this does not use the return value you forces the validation. But then where do we use the return value?","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"b266ec5d69d2774d00c9e344673ef693d71ea489","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"    pagesize \u003d _get_numa_pagesize_constraint(flavor, image_meta)"},{"line_number":2134,"context_line":"    vpmems \u003d get_vpmems(flavor)"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"    _get_locked_memory_constraint(flavor, image_meta)"},{"line_number":2137,"context_line":""},{"line_number":2138,"context_line":"    # If \u0027hw:cpu_dedicated_mask\u0027 is not found in flavor extra specs, the"},{"line_number":2139,"context_line":"    # \u0027dedicated_cpus\u0027 variable is None, while we hope it being an empty set."}],"source_content_type":"text/x-python","patch_set":12,"id":"a6d2fb6f_09bc2b95","line":2136,"in_reply_to":"63b9e397_221fe826","updated":"2022-07-20 21:09:25.000000000","message":"so the return value was using in no where out side of tests which is to check that value.\nIn the new patch set, it will be use in nova/virt/libvirt/driver.py too as commented in https://review.opendev.org/c/openstack/nova/+/778347/comment/225c98ea_bbf44f81/","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":true,"context_lines":[{"line_number":2133,"context_line":"    pagesize \u003d _get_numa_pagesize_constraint(flavor, image_meta)"},{"line_number":2134,"context_line":"    vpmems \u003d get_vpmems(flavor)"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"    _get_locked_memory_constraint(flavor, image_meta)"},{"line_number":2137,"context_line":""},{"line_number":2138,"context_line":"    # If \u0027hw:cpu_dedicated_mask\u0027 is not found in flavor extra specs, the"},{"line_number":2139,"context_line":"    # \u0027dedicated_cpus\u0027 variable is None, while we hope it being an empty set."}],"source_content_type":"text/x-python","patch_set":12,"id":"63b9e397_221fe826","line":2136,"in_reply_to":"68fc7fc0_cb4c1239","updated":"2022-07-19 10:33:05.000000000","message":"it is used in the unit tests","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6a654c56680c4d377fd5b746fabc68de343098e3","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    locked_memory_bool \u003d strutils.bool_from_string(locked_memory)"},{"line_number":1361,"context_line":"    if locked_memory_bool and not ("}],"source_content_type":"text/x-python","patch_set":14,"id":"6cdabff2_8ebf1045","line":1358,"updated":"2022-07-25 09:07:53.000000000","message":"The \u0027locked_memory_image\u0027 is a bool now. But locked_memory_flavor is still a string or None here. So you are potentially ORing a string to a bool. \n\nDo we have an intention to only user the value of \u0027locked_memory_image\u0027 if the corresponding flavor extra spec is not defined (ie. None here)? If yes, then the code is correct but pretty hard to read. So if this is the case then please add a comment here explaining the intention.","commit_id":"3d2f16731ce71aa95d781b8c8702c61ea95292cc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4eeddb6cd5abdea8c20a879af69e52c215079700","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    locked_memory_bool \u003d strutils.bool_from_string(locked_memory)"},{"line_number":1361,"context_line":"    if locked_memory_bool and not ("}],"source_content_type":"text/x-python","patch_set":14,"id":"8fc2bdad_65f0d8cc","line":1358,"in_reply_to":"57919acd_99e8456c","updated":"2022-08-17 07:28:31.000000000","message":"I see the locked_memory_flavor is now converted to bool in PS16 but I don\u0027t see the raising an error if the image requests a different value than the flavor.","commit_id":"3d2f16731ce71aa95d781b8c8702c61ea95292cc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"687ad6cb21becf477a08f8f956acfb5e7cd87573","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    locked_memory_bool \u003d strutils.bool_from_string(locked_memory)"},{"line_number":1361,"context_line":"    if locked_memory_bool and not ("}],"source_content_type":"text/x-python","patch_set":14,"id":"92a483f4_47ee7c27","line":1358,"in_reply_to":"6cdabff2_8ebf1045","updated":"2022-07-25 09:58:58.000000000","message":"so the locked memory image value need to be converted.\n\nthe way this should work is if the property is set in both the flavor and image and they are not the same value then it should be an error.\n\n\nthe image property shoudl be settable whenever it is not set in the flavor or the flavor has the same value as the image.\n\nlocked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta(\n    \u0027locked_memory\u0027, flavor, image_meta)\nlocked_memory_image \u003d strutils.bool_from_string(locked_memory_image)\nif (locked_memory_flavor is not None and locked_memory_image is not None \n    and locked_memory_flavor !\u003d locked_memory_image\n):\n  raise exception.FlavorImageLockedMemoryConflict(...)\n\nlocked_memory \u003d locked_memory_flavor or locked_memory_image\nif locked_memory and not (\n    mem_page_size_flavor or mem_page_size_image\n):\n    raise exception.LockMemoryForbidden()\nreturn locked_memory\n\nso something like that","commit_id":"3d2f16731ce71aa95d781b8c8702c61ea95292cc"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"8a3a7efe6ad9d1c21d34b1c9cdd9960007fd1f47","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    locked_memory_bool \u003d strutils.bool_from_string(locked_memory)"},{"line_number":1361,"context_line":"    if locked_memory_bool and not ("}],"source_content_type":"text/x-python","patch_set":14,"id":"0854e3c6_a4208842","line":1358,"in_reply_to":"8fc2bdad_65f0d8cc","updated":"2022-08-20 21:24:47.000000000","message":"Done","commit_id":"3d2f16731ce71aa95d781b8c8702c61ea95292cc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"baff5ddd32215b7742bd13f35914982c2fd593c8","unresolved":true,"context_lines":[{"line_number":1355,"context_line":"    locked_memory_flavor, locked_memory_image \u003d _get_flavor_image_meta("},{"line_number":1356,"context_line":"        \u0027locked_memory\u0027, flavor, image_meta)"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"    locked_memory \u003d locked_memory_flavor or locked_memory_image"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"    locked_memory_bool \u003d strutils.bool_from_string(locked_memory)"},{"line_number":1361,"context_line":"    if locked_memory_bool and not ("}],"source_content_type":"text/x-python","patch_set":14,"id":"57919acd_99e8456c","line":1358,"in_reply_to":"92a483f4_47ee7c27","updated":"2022-07-25 10:44:48.000000000","message":"OK, then this needs a fix. Dropping my +1","commit_id":"3d2f16731ce71aa95d781b8c8702c61ea95292cc"},{"author":{"_account_id":14084,"name":"Einst Crazy","email":"yu.changcai@99cloud.net","username":"Einst"},"change_message_id":"48b9e8b314c10b99d1f87b5f174a4a055d04b82a","unresolved":true,"context_lines":[{"line_number":1360,"context_line":"        locked_memory_flavor \u003d strutils.bool_from_string(locked_memory_flavor)"},{"line_number":1361,"context_line":""},{"line_number":1362,"context_line":"        if locked_memory_image is not None and ("},{"line_number":1363,"context_line":"                locked_memory_flavor !\u003d locked_memory_image"},{"line_number":1364,"context_line":"        ):"},{"line_number":1365,"context_line":"            # We don\u0027t allow provide different value to flavor and image"},{"line_number":1366,"context_line":"            raise exception.FlavorImageLockedMemoryConflict("}],"source_content_type":"text/x-python","patch_set":18,"id":"51239b06_a50a1f6f","line":1363,"range":{"start_line":1363,"start_character":40,"end_line":1363,"end_character":59},"updated":"2022-08-22 02:59:22.000000000","message":"You have transfer locked_memory_flavor to boolean type. but locked_memory_image is not. transfer both or not is needed","commit_id":"a3611fd3a4411cdb291804c2328d0afa89dabdc9"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4f83520681ef2cee48c2a78bd3e11b635738e67c","unresolved":false,"context_lines":[{"line_number":1360,"context_line":"        locked_memory_flavor \u003d strutils.bool_from_string(locked_memory_flavor)"},{"line_number":1361,"context_line":""},{"line_number":1362,"context_line":"        if locked_memory_image is not None and ("},{"line_number":1363,"context_line":"                locked_memory_flavor !\u003d locked_memory_image"},{"line_number":1364,"context_line":"        ):"},{"line_number":1365,"context_line":"            # We don\u0027t allow provide different value to flavor and image"},{"line_number":1366,"context_line":"            raise exception.FlavorImageLockedMemoryConflict("}],"source_content_type":"text/x-python","patch_set":18,"id":"d5702ca4_93bcc518","line":1363,"range":{"start_line":1363,"start_character":40,"end_line":1363,"end_character":59},"in_reply_to":"51239b06_a50a1f6f","updated":"2022-08-22 20:35:45.000000000","message":"locked_memory_image already is boolean. See comments https://review.opendev.org/c/openstack/nova/+/778347/14..18/nova/virt/hardware.py#b1358","commit_id":"a3611fd3a4411cdb291804c2328d0afa89dabdc9"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"20996151721b2def792b2eca7429cd47d2b8abb5","unresolved":true,"context_lines":[{"line_number":6334,"context_line":"                membacking \u003d vconfig.LibvirtConfigGuestMemoryBacking()"},{"line_number":6335,"context_line":"            membacking.locked \u003d True"},{"line_number":6336,"context_line":""},{"line_number":6337,"context_line":"        # Only allow locked_memory when mem_page_size is also set"},{"line_number":6338,"context_line":"        if flavor.extra_specs.get("},{"line_number":6339,"context_line":"            \u0027hw:mem_page_size\u0027, None) or image_meta.properties.get("},{"line_number":6340,"context_line":"                \u0027hw_mem_page_size\u0027, None):"}],"source_content_type":"text/x-python","patch_set":12,"id":"225c98ea_bbf44f81","line":6337,"updated":"2022-07-19 09:54:00.000000000","message":"Can we reuse _get_locked_memory_constraint somehow here?","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46436a1893fc9df7f03b0a9c02be86c61cdd2fb2","unresolved":true,"context_lines":[{"line_number":6334,"context_line":"                membacking \u003d vconfig.LibvirtConfigGuestMemoryBacking()"},{"line_number":6335,"context_line":"            membacking.locked \u003d True"},{"line_number":6336,"context_line":""},{"line_number":6337,"context_line":"        # Only allow locked_memory when mem_page_size is also set"},{"line_number":6338,"context_line":"        if flavor.extra_specs.get("},{"line_number":6339,"context_line":"            \u0027hw:mem_page_size\u0027, None) or image_meta.properties.get("},{"line_number":6340,"context_line":"                \u0027hw_mem_page_size\u0027, None):"}],"source_content_type":"text/x-python","patch_set":12,"id":"d30c5a5b_0d32d2bd","line":6337,"in_reply_to":"225c98ea_bbf44f81","updated":"2022-07-19 10:33:05.000000000","message":"sure we could  replace this with\n            locked_memory \u003d _get_locked_memory_constraint(flavor,image_meta)\n            if locked_memory:\n                if not membacking:\n                    membacking \u003d vconfig.LibvirtConfigGuestMemoryBacking()\n                membacking.locked \u003d strutils.bool_from_string(locked_memory)\n                \nor a little more compact \n\n            if _get_locked_memory_constraint(flavor,image_meta):\n                if not membacking:\n                    membacking \u003d vconfig.LibvirtConfigGuestMemoryBacking()\n                membacking.locked \u003d True","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"b266ec5d69d2774d00c9e344673ef693d71ea489","unresolved":false,"context_lines":[{"line_number":6334,"context_line":"                membacking \u003d vconfig.LibvirtConfigGuestMemoryBacking()"},{"line_number":6335,"context_line":"            membacking.locked \u003d True"},{"line_number":6336,"context_line":""},{"line_number":6337,"context_line":"        # Only allow locked_memory when mem_page_size is also set"},{"line_number":6338,"context_line":"        if flavor.extra_specs.get("},{"line_number":6339,"context_line":"            \u0027hw:mem_page_size\u0027, None) or image_meta.properties.get("},{"line_number":6340,"context_line":"                \u0027hw_mem_page_size\u0027, None):"}],"source_content_type":"text/x-python","patch_set":12,"id":"c9d8e99f_f415baa7","line":6337,"in_reply_to":"d30c5a5b_0d32d2bd","updated":"2022-07-20 21:09:25.000000000","message":"Done","commit_id":"7c8547a3d2aa37441b7600b38e1213121bd66ca2"}],"releasenotes/notes/new_locked_memory_option-b68a031779366828.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e57f50703916a05492055686e548b6f10ddeb3e8","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    memory allocations as unmovable and unswappable."},{"line_number":7,"context_line":"    ``hw:locked_memory`` extra spec and ``hw_locked_memory`` image property"},{"line_number":8,"context_line":"    accept boolean values like true or false value."},{"line_number":9,"context_line":"    This will only be allowed if you have also set ``hw:mem_page_size``,"},{"line_number":10,"context_line":"    so we can ensure that the scheduler can actually account for this correctly"},{"line_number":11,"context_line":"    and prevent out of memory events."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"dc16f7ab_20531e38","line":11,"range":{"start_line":9,"start_character":3,"end_line":11,"end_character":37},"updated":"2022-06-03 07:46:47.000000000","message":"Where this is enforced? The libvirt virt driver only ignore the memory_lock request but not disallow it if no page size set.","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"4c83bd15ff9f7c2e426bd4d141f57f07a7848944","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    memory allocations as unmovable and unswappable."},{"line_number":7,"context_line":"    ``hw:locked_memory`` extra spec and ``hw_locked_memory`` image property"},{"line_number":8,"context_line":"    accept boolean values like true or false value."},{"line_number":9,"context_line":"    This will only be allowed if you have also set ``hw:mem_page_size``,"},{"line_number":10,"context_line":"    so we can ensure that the scheduler can actually account for this correctly"},{"line_number":11,"context_line":"    and prevent out of memory events."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"cdb64861_a00ca3fa","line":11,"range":{"start_line":9,"start_character":3,"end_line":11,"end_character":37},"in_reply_to":"dc16f7ab_20531e38","updated":"2022-06-15 19:23:56.000000000","message":"change this to take/ignore instead of allow/disallow, currently I don\u0027t raise if hw_locked_memory provided with no mem_page_size flag","commit_id":"be8c81d6e74810f755c77daa3b3a67553b875071"}]}
