)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cd7a6cbc34555ae83b1e8a1219dc30148aaaffd0","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Pass image to unified limits resize/restore checks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The previous change included the image in the unified limits quota"},{"line_number":10,"context_line":"check for server create. The quota checks for resize and for restoring"},{"line_number":11,"context_line":"a soft-deleted server still build a RequestSpec from the flavor alone,"},{"line_number":12,"context_line":"so extra spec translation still runs against an empty image there."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a62913d_87e64ed1","line":9,"updated":"2026-10-30 18:27:10.000000000","message":"This won\u0027t make any sense if the commits don\u0027t merge in exact order. It would be better to say:\n\n```suggestion\nChange Ic8aaac15b5c9515c4c03864d75d014eea72199d6\nincluded the image in the unified limits quota\n```","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"839fcd7508ab62b7132c17f520152c831d25d8e7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Pass image to unified limits resize/restore checks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The previous change included the image in the unified limits quota"},{"line_number":10,"context_line":"check for server create. The quota checks for resize and for restoring"},{"line_number":11,"context_line":"a soft-deleted server still build a RequestSpec from the flavor alone,"},{"line_number":12,"context_line":"so extra spec translation still runs against an empty image there."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"eb100b26_bad9d97d","line":9,"in_reply_to":"7a62913d_87e64ed1","updated":"2026-10-30 18:40:31.000000000","message":"Done","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cd7a6cbc34555ae83b1e8a1219dc30148aaaffd0","unresolved":true,"context_lines":[{"line_number":10,"context_line":"check for server create. The quota checks for resize and for restoring"},{"line_number":11,"context_line":"a soft-deleted server still build a RequestSpec from the flavor alone,"},{"line_number":12,"context_line":"so extra spec translation still runs against an empty image there."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"For a flavor with hw:mem_encryption this raises FlavorImageConflict"},{"line_number":15,"context_line":"because the image appears to lack hw_firmware_type\u003duefi, so resizing"},{"line_number":16,"context_line":"or restoring such a server fails with a 400 when unified limits are"},{"line_number":17,"context_line":"enabled, although the server was created with a suitable image."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Include the instance\u0027s image metadata in the RequestSpec for these"},{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"442ff90a_55d16c95","line":18,"range":{"start_line":13,"start_character":1,"end_line":18,"end_character":1},"updated":"2026-10-30 18:27:10.000000000","message":"nit: and this becomes redundant since you\u0027re restating what\u0027s in Ic8aaac15b5c9515c4c03864d75d014eea72199d6","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"839fcd7508ab62b7132c17f520152c831d25d8e7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"check for server create. The quota checks for resize and for restoring"},{"line_number":11,"context_line":"a soft-deleted server still build a RequestSpec from the flavor alone,"},{"line_number":12,"context_line":"so extra spec translation still runs against an empty image there."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"For a flavor with hw:mem_encryption this raises FlavorImageConflict"},{"line_number":15,"context_line":"because the image appears to lack hw_firmware_type\u003duefi, so resizing"},{"line_number":16,"context_line":"or restoring such a server fails with a 400 when unified limits are"},{"line_number":17,"context_line":"enabled, although the server was created with a suitable image."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Include the instance\u0027s image metadata in the RequestSpec for these"},{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"000d8d6c_0e2db18c","line":18,"range":{"start_line":13,"start_character":1,"end_line":18,"end_character":1},"in_reply_to":"442ff90a_55d16c95","updated":"2026-10-30 18:40:31.000000000","message":"Done, dropped the paragraph since Ic8aaac15 already covers it.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c1fa66ca3830278eaa44e1cab4b96948b0981adb","unresolved":true,"context_lines":[{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #2088831"},{"line_number":24,"context_line":"Generated-By: Claude Code claude-opus-5-5"},{"line_number":25,"context_line":"Change-Id: Ic1dbff8e4560d3752a3169cfb5925cf08e9b6551"},{"line_number":26,"context_line":"Signed-off-by: Mike Lowe \u003cjomlowe@iu.edu\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"12633eff_255959b0","line":23,"updated":"2026-10-30 16:06:15.000000000","message":"Hi, just to let you know, I proposed a patch for this bug that I opened a while back: https://review.opendev.org/c/openstack/nova/+/1002553\n\nIt\u0027s cool if reviewers prefer this one, but just a FYI that mine has been there.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"103266c02e9a53ecd5077ea1601b0b88741f2c81","unresolved":true,"context_lines":[{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #2088831"},{"line_number":24,"context_line":"Generated-By: Claude Code claude-opus-5-5"},{"line_number":25,"context_line":"Change-Id: Ic1dbff8e4560d3752a3169cfb5925cf08e9b6551"},{"line_number":26,"context_line":"Signed-off-by: Mike Lowe \u003cjomlowe@iu.edu\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fad2d228_b79e7b1a","line":23,"in_reply_to":"12633eff_255959b0","updated":"2026-10-30 16:11:31.000000000","message":"I just realized this is a follow up patch to ^ and not a replacement, my bad. Sorry for the noise.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"568594aac1a62c320e93f0ad6708d957b9c84bd7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #2088831"},{"line_number":24,"context_line":"Generated-By: Claude Code claude-opus-5-5"},{"line_number":25,"context_line":"Change-Id: Ic1dbff8e4560d3752a3169cfb5925cf08e9b6551"},{"line_number":26,"context_line":"Signed-off-by: Mike Lowe \u003cjomlowe@iu.edu\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"85654ef6_0894f036","line":23,"in_reply_to":"54c3ccd2_9c66e75a","updated":"2026-10-30 17:39:32.000000000","message":"we shoul proably go reviwe all three so since there is a renewed interst in this bug :)","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f29e252c8c966282f432abb63d5e87e76c8ba0b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #2088831"},{"line_number":24,"context_line":"Generated-By: Claude Code claude-opus-5-5"},{"line_number":25,"context_line":"Change-Id: Ic1dbff8e4560d3752a3169cfb5925cf08e9b6551"},{"line_number":26,"context_line":"Signed-off-by: Mike Lowe \u003cjomlowe@iu.edu\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e5d1dbbf_ecbadeed","line":23,"in_reply_to":"85654ef6_0894f036","updated":"2026-10-30 17:41:04.000000000","message":"this is not a firday evening problem but we can perfahsp loop back to it next week i need to load context on what the bug was and review the fix and i dont really feel up to that this evening. melaine i assume you stil would liek to see this fixed as well","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d985153d67c933ed532fa824cfd5c8f712a7a625","unresolved":false,"context_lines":[{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #2088831"},{"line_number":24,"context_line":"Generated-By: Claude Code claude-opus-5-5"},{"line_number":25,"context_line":"Change-Id: Ic1dbff8e4560d3752a3169cfb5925cf08e9b6551"},{"line_number":26,"context_line":"Signed-off-by: Mike Lowe \u003cjomlowe@iu.edu\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"71f87bdc_c113caaf","line":23,"in_reply_to":"e5d1dbbf_ecbadeed","updated":"2026-10-30 17:46:27.000000000","message":"Yes I would like to see this fixed ... it\u0027s one of the blockers IMHO for being able to make unified limits the default for quotas.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"addc2fba2368a88f43de393b8949714a2705ac89","unresolved":false,"context_lines":[{"line_number":20,"context_line":"quota checks. Unshelve and the conductor quota recheck already use the"},{"line_number":21,"context_line":"instance\u0027s real RequestSpec, which includes the image."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #2088831"},{"line_number":24,"context_line":"Generated-By: Claude Code claude-opus-5-5"},{"line_number":25,"context_line":"Change-Id: Ic1dbff8e4560d3752a3169cfb5925cf08e9b6551"},{"line_number":26,"context_line":"Signed-off-by: Mike Lowe \u003cjomlowe@iu.edu\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"54c3ccd2_9c66e75a","line":23,"in_reply_to":"fad2d228_b79e7b1a","updated":"2026-10-30 16:20:50.000000000","message":"No worries","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cd7a6cbc34555ae83b1e8a1219dc30148aaaffd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4e085fba_104a4ea7","updated":"2026-10-30 18:27:10.000000000","message":"I\u0027d personally like to see this split up and merged back into the previous two changes (with `Signed-off-by` authorship info retained of course) since it would ease the process of backporting. Not going to block on this though.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"17b7914be1e11050c4f0aac24e27e961265875a0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5463ba42_7b2065df","in_reply_to":"4e085fba_104a4ea7","updated":"2026-10-30 18:48:22.000000000","message":"Thanks for the review. I kept it separate for now since squashing would rewrite melanie\u0027s changes. melanie, sean: I\u0027m happy to squash this into I8d6de19f/Ic8aaac15 (keeping both Signed-off-by lines) if you\u0027d prefer that for backporting. Just let me know.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c60bed9b08708e8c2969d22124bcf7872be919a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cd9346a9_c7cb1a2a","in_reply_to":"5463ba42_7b2065df","updated":"2026-11-02 16:54:18.000000000","message":"Happy to keep it separate. They\u0027re all acked now.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a39a8517018a0109af0a731e52fb6c5241efba7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b20ad903_9bb9dde5","updated":"2026-11-02 16:12:09.000000000","message":"mind adding a new test for resize\n\notherwise i think this looks correct","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"4226a21c075f6d0461c29adf09bfba6cba046a42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6082ff79_4443557e","in_reply_to":"b20ad903_9bb9dde5","updated":"2026-11-02 16:40:16.000000000","message":"Done, split into separate create, resize and restore tests with a shared setup helper.","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"ed76b499e3d1329e657f838226705b435fb7529d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"322ed1b1_535750ca","updated":"2026-11-02 20:59:58.000000000","message":"recheck openstacksdk-functional-devstack tox PermissionError on package staging path (infra); nova-next test_rebuild_server_in_stop_state timeout in rebuild_spawning, unrelated to this change","commit_id":"d74de35b58cc9fa7d865123cf2077a4094046ec4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"875a3602ce662dba305b7c343489ad0054b2b7c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ed4a2a62_5b012e1b","updated":"2026-11-02 16:45:41.000000000","message":"thanks for the quick turnaorund\n\nlooks good to me","commit_id":"d74de35b58cc9fa7d865123cf2077a4094046ec4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"da4828039ec39a573e47c7a6b2767fbcff71e828","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d373457b_d9edb4d2","in_reply_to":"ed4a2a62_5b012e1b","updated":"2026-11-02 16:53:46.000000000","message":"What Sean said","commit_id":"d74de35b58cc9fa7d865123cf2077a4094046ec4"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a39a8517018a0109af0a731e52fb6c5241efba7e","unresolved":false,"context_lines":[{"line_number":2821,"context_line":""},{"line_number":2822,"context_line":"    @check_instance_lock"},{"line_number":2823,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.SOFT_DELETED])"},{"line_number":2824,"context_line":"    def restore(self, context, instance):"},{"line_number":2825,"context_line":"        \"\"\"Restore a previously deleted (but not reclaimed) instance.\"\"\""},{"line_number":2826,"context_line":"        # Check quotas"},{"line_number":2827,"context_line":"        flavor \u003d instance.get_flavor()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1cbb700b_975f77d9","line":2824,"range":{"start_line":2824,"start_character":8,"end_line":2824,"end_character":15},"updated":"2026-11-02 16:12:09.000000000","message":"this is often overlooked.\n\ni guess its techinialy possibel that this cna still fail for othe reason i.e\nwe nolonger have space but yes without this change if you were using mem encyption you would not be able to restore the vm so +1","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"}],"nova/tests/functional/test_unified_limits.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fca7e1da2d26ba30de000fc2cf7057957eac103b","unresolved":true,"context_lines":[{"line_number":251,"context_line":"            metadata\u003d{\u0027hw_firmware_type\u0027: \u0027uefi\u0027})[\u0027id\u0027]"},{"line_number":252,"context_line":"        self._create_server(flavor_id\u003dflavor_id, image_uuid\u003dimage_id)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_resource_request_resize_and_restore(self):"},{"line_number":255,"context_line":"        # Bug #2088831: the unified limits quota checks for resize and"},{"line_number":256,"context_line":"        # restore also translated the flavor against an empty image, so"},{"line_number":257,"context_line":"        # resizing or restoring a hw:mem_encryption server failed with a"}],"source_content_type":"text/x-python","patch_set":2,"id":"e5eb4e17_2e5f1afb","line":254,"updated":"2026-10-30 18:28:28.000000000","message":"This could probably be folded into the preceding test? These tests are slow so running one combined test probably makes sense?","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"839fcd7508ab62b7132c17f520152c831d25d8e7","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            metadata\u003d{\u0027hw_firmware_type\u0027: \u0027uefi\u0027})[\u0027id\u0027]"},{"line_number":252,"context_line":"        self._create_server(flavor_id\u003dflavor_id, image_uuid\u003dimage_id)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_resource_request_resize_and_restore(self):"},{"line_number":255,"context_line":"        # Bug #2088831: the unified limits quota checks for resize and"},{"line_number":256,"context_line":"        # restore also translated the flavor against an empty image, so"},{"line_number":257,"context_line":"        # resizing or restoring a hw:mem_encryption server failed with a"}],"source_content_type":"text/x-python","patch_set":2,"id":"bde7256c_66e6a0e0","line":254,"in_reply_to":"e5eb4e17_2e5f1afb","updated":"2026-10-30 18:40:31.000000000","message":"Done, folded resize and restore into test_resource_request so it\u0027s one server through create, resize and restore.","commit_id":"3b9d6dc3b5c23e949ad2a86a99d6c8596116021e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a39a8517018a0109af0a731e52fb6c5241efba7e","unresolved":true,"context_lines":[{"line_number":237,"context_line":"        # resize and restore translated the flavor against an empty image,"},{"line_number":238,"context_line":"        # raising a spurious flavor/image conflict (400). The image metadata is"},{"line_number":239,"context_line":"        # now included in the quota checks, so these operations succeed."},{"line_number":240,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"},{"line_number":241,"context_line":"        self.flags(reclaim_instance_interval\u003d3600)"},{"line_number":242,"context_line":"        self.limits.reglimits[\u0027class:MEM_ENCRYPTION_CONTEXT\u0027] \u003d 10"},{"line_number":243,"context_line":"        flavor_id \u003d self._create_flavor("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d946_e843bb88","line":240,"updated":"2026-11-02 16:12:09.000000000","message":"ah i guess this is only runing on one host https://review.opendev.org/c/openstack/nova/+/1012988/3/nova/tests/functional/test_unified_limits.py#60","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"4226a21c075f6d0461c29adf09bfba6cba046a42","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        # resize and restore translated the flavor against an empty image,"},{"line_number":238,"context_line":"        # raising a spurious flavor/image conflict (400). The image metadata is"},{"line_number":239,"context_line":"        # now included in the quota checks, so these operations succeed."},{"line_number":240,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"},{"line_number":241,"context_line":"        self.flags(reclaim_instance_interval\u003d3600)"},{"line_number":242,"context_line":"        self.limits.reglimits[\u0027class:MEM_ENCRYPTION_CONTEXT\u0027] \u003d 10"},{"line_number":243,"context_line":"        flavor_id \u003d self._create_flavor("}],"source_content_type":"text/x-python","patch_set":3,"id":"ad51ae51_9cd5b096","line":240,"in_reply_to":"3a50d946_e843bb88","updated":"2026-11-02 16:40:16.000000000","message":"Yes, single compute host, so the resize test sets allow_resize_to_same_host. I added a comment saying so.","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a39a8517018a0109af0a731e52fb6c5241efba7e","unresolved":true,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        self.admin_api.delete_server(server[\u0027id\u0027])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def test_resource_request(self):"},{"line_number":233,"context_line":"        # Create a server with a flavor extra spec (hw:mem_encryption) that"},{"line_number":234,"context_line":"        # translates into a resource class (MEM_ENCRYPTION_CONTEXT) and a"},{"line_number":235,"context_line":"        # required host trait (HW_CPU_X86_AMD_SEV) only in combination with"},{"line_number":236,"context_line":"        # the image. Bug #2088831: the unified limits quota checks for create,"},{"line_number":237,"context_line":"        # resize and restore translated the flavor against an empty image,"},{"line_number":238,"context_line":"        # raising a spurious flavor/image conflict (400). The image metadata is"},{"line_number":239,"context_line":"        # now included in the quota checks, so these operations succeed."},{"line_number":240,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"},{"line_number":241,"context_line":"        self.flags(reclaim_instance_interval\u003d3600)"},{"line_number":242,"context_line":"        self.limits.reglimits[\u0027class:MEM_ENCRYPTION_CONTEXT\u0027] \u003d 10"},{"line_number":243,"context_line":"        flavor_id \u003d self._create_flavor("},{"line_number":244,"context_line":"            vcpu\u003d1, memory_mb\u003d512, disk\u003d1, ephemeral\u003d0,"},{"line_number":245,"context_line":"            extra_spec\u003d{\u0027hw:mem_encryption\u0027: \u0027true\u0027})"},{"line_number":246,"context_line":"        new_flavor_id \u003d self._create_flavor("},{"line_number":247,"context_line":"            vcpu\u003d2, memory_mb\u003d1024, disk\u003d1, ephemeral\u003d0,"},{"line_number":248,"context_line":"            extra_spec\u003d{\u0027hw:mem_encryption\u0027: \u0027true\u0027})"},{"line_number":249,"context_line":"        for rp in self._get_all_providers():"},{"line_number":250,"context_line":"            self._set_inventory("},{"line_number":251,"context_line":"                rp[\u0027uuid\u0027],"},{"line_number":252,"context_line":"                {\u0027resource_class\u0027: \u0027MEM_ENCRYPTION_CONTEXT\u0027, \u0027total\u0027: 10})"},{"line_number":253,"context_line":"            self._set_provider_traits("},{"line_number":254,"context_line":"                rp[\u0027uuid\u0027], [os_traits.HW_CPU_X86_AMD_SEV])"},{"line_number":255,"context_line":"        image_id \u003d self._create_image("},{"line_number":256,"context_line":"            metadata\u003d{\u0027hw_firmware_type\u0027: \u0027uefi\u0027})[\u0027id\u0027]"},{"line_number":257,"context_line":"        server \u003d self._create_server("},{"line_number":258,"context_line":"            flavor_id\u003dflavor_id, image_uuid\u003dimage_id)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        server \u003d self._resize_server(server, new_flavor_id)"},{"line_number":261,"context_line":"        server \u003d self._confirm_resize(server)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        self.api.delete_server(server[\u0027id\u0027])"},{"line_number":264,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027SOFT_DELETED\u0027)"},{"line_number":265,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027restore\u0027: {}})"},{"line_number":266,"context_line":"        self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"class ResourceStrategyTest(integrated_helpers._IntegratedTestBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"01e0294f_14cc81b2","line":266,"range":{"start_line":232,"start_character":4,"end_line":266,"end_character":53},"updated":"2026-11-02 16:12:09.000000000","message":"this really shoudl be split into 2 tests\n\noenf or basic create and a second for resize\n\neach teast shoudl test 1 thing and this is now testign 3 things\n\nalso it woudl be good to put the delete and restore into its own test as well","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"},{"author":{"_account_id":22443,"name":"Mike Lowe","email":"jomlowe@iu.edu","username":"jomlowe"},"change_message_id":"4226a21c075f6d0461c29adf09bfba6cba046a42","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        self.admin_api.delete_server(server[\u0027id\u0027])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def test_resource_request(self):"},{"line_number":233,"context_line":"        # Create a server with a flavor extra spec (hw:mem_encryption) that"},{"line_number":234,"context_line":"        # translates into a resource class (MEM_ENCRYPTION_CONTEXT) and a"},{"line_number":235,"context_line":"        # required host trait (HW_CPU_X86_AMD_SEV) only in combination with"},{"line_number":236,"context_line":"        # the image. Bug #2088831: the unified limits quota checks for create,"},{"line_number":237,"context_line":"        # resize and restore translated the flavor against an empty image,"},{"line_number":238,"context_line":"        # raising a spurious flavor/image conflict (400). The image metadata is"},{"line_number":239,"context_line":"        # now included in the quota checks, so these operations succeed."},{"line_number":240,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"},{"line_number":241,"context_line":"        self.flags(reclaim_instance_interval\u003d3600)"},{"line_number":242,"context_line":"        self.limits.reglimits[\u0027class:MEM_ENCRYPTION_CONTEXT\u0027] \u003d 10"},{"line_number":243,"context_line":"        flavor_id \u003d self._create_flavor("},{"line_number":244,"context_line":"            vcpu\u003d1, memory_mb\u003d512, disk\u003d1, ephemeral\u003d0,"},{"line_number":245,"context_line":"            extra_spec\u003d{\u0027hw:mem_encryption\u0027: \u0027true\u0027})"},{"line_number":246,"context_line":"        new_flavor_id \u003d self._create_flavor("},{"line_number":247,"context_line":"            vcpu\u003d2, memory_mb\u003d1024, disk\u003d1, ephemeral\u003d0,"},{"line_number":248,"context_line":"            extra_spec\u003d{\u0027hw:mem_encryption\u0027: \u0027true\u0027})"},{"line_number":249,"context_line":"        for rp in self._get_all_providers():"},{"line_number":250,"context_line":"            self._set_inventory("},{"line_number":251,"context_line":"                rp[\u0027uuid\u0027],"},{"line_number":252,"context_line":"                {\u0027resource_class\u0027: \u0027MEM_ENCRYPTION_CONTEXT\u0027, \u0027total\u0027: 10})"},{"line_number":253,"context_line":"            self._set_provider_traits("},{"line_number":254,"context_line":"                rp[\u0027uuid\u0027], [os_traits.HW_CPU_X86_AMD_SEV])"},{"line_number":255,"context_line":"        image_id \u003d self._create_image("},{"line_number":256,"context_line":"            metadata\u003d{\u0027hw_firmware_type\u0027: \u0027uefi\u0027})[\u0027id\u0027]"},{"line_number":257,"context_line":"        server \u003d self._create_server("},{"line_number":258,"context_line":"            flavor_id\u003dflavor_id, image_uuid\u003dimage_id)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        server \u003d self._resize_server(server, new_flavor_id)"},{"line_number":261,"context_line":"        server \u003d self._confirm_resize(server)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        self.api.delete_server(server[\u0027id\u0027])"},{"line_number":264,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027SOFT_DELETED\u0027)"},{"line_number":265,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027restore\u0027: {}})"},{"line_number":266,"context_line":"        self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"class ResourceStrategyTest(integrated_helpers._IntegratedTestBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf32559a_10cb753f","line":266,"range":{"start_line":232,"start_character":4,"end_line":266,"end_character":53},"in_reply_to":"01e0294f_14cc81b2","updated":"2026-11-02 16:40:16.000000000","message":"Done. Stephen had asked to fold these together to save runtime, but I agree one behavior per test is clearer, so they\u0027re now three tests sharing a setup helper.","commit_id":"a7d6568d0f0f43410a8c1cdd7a74603dba93d0d4"}]}
