)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e478e6a8b80e847a26a576f2ed4dfa54c4b83e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"8bac664f_1d2deb41","updated":"2025-02-27 02:35:26.000000000","message":"i will need to look at the spec again but im still a little unsure about the automatic addtion of a required triat when the image property is unset.\n\nwe dicussed recentlly adding prefered traits as a weigher again.\n\nif that might be an option here as well but i dont think this feature should depend on that one to move forward.\n\nskiming the change it mostly looks reasonable to me","commit_id":"66c8327001241f29bce81e626fd63f837ea8a9dc"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ccf50ead66112e919a0b21c19ef15e4342269dae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"d825a574_b5f8d492","updated":"2025-02-25 07:07:50.000000000","message":"recheck","commit_id":"66c8327001241f29bce81e626fd63f837ea8a9dc"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a4168eff428a0ecf68a1df3862b443b1c2ce10f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"4c8306e4_69a2b7f1","updated":"2025-07-28 14:38:59.000000000","message":"recheck failure is not consistent. looks like a random one","commit_id":"93081239b76c4a05b3babbd6630d558fb6563ad7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"3917e16cc3a6c5475119154e5bdda58f47f8a428","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"a04913d3_80ba3a27","updated":"2025-08-09 15:26:53.000000000","message":"recheck kernel panic in guest","commit_id":"935a009e221ebeea86d004a8712078e61b5c45e9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9fde5267bd7130bfd3735e36fd21aa403344c8e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"12975826_ebd34172","updated":"2025-08-27 13:50:05.000000000","message":"recheck timeout during instance boot, in grenade check","commit_id":"cf9ea50bda8e7a15d1ce4ced998120ca9ae2e123"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"22470b18ecbd5cd757a94ae0f8f55cdb970d2078","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"35766e3e_9fb78f7e","updated":"2025-08-27 14:41:19.000000000","message":"I checked XML is properly configured and we have tests to validate it.\nI have not spotted anything wrong here.\n\nI\u0027m quite happy, now I know how to configure amd-sed-es with libvirt. 😊\n\nThanks Takashi.","commit_id":"efa5127c174f0a49b6279eb3d22c5e8684f9b4bd"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b0aa76ffaa0980b65ec97d4019719eb46c5047ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"b070ae25_992964e3","updated":"2025-08-28 05:42:39.000000000","message":"recheck","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"fe5708ecbd148b12d8ca9977a125d9d47142782e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"ee752b43_4cdf5c0c","updated":"2025-08-28 13:01:19.000000000","message":"recheck error indicates infra problem ...","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e6e64703ce99fa7420428746547e2250882ec1a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"511ceef6_d8ff0f0d","updated":"2025-08-28 18:04:32.000000000","message":"recheck openstacksdk-functional-devstack broke but that not your fault","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8efca676d87c305e39ea4d6ab582e2aabd865aa9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"d9eff63c_e7b1daf4","updated":"2025-08-28 18:56:50.000000000","message":"recheck unrelated test_boot_cloned_encrypted_volume failure in ceph multistore","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"}],"nova/api/validation/extra_specs/hw.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e6e64703ce99fa7420428746547e2250882ec1a7","unresolved":false,"context_lines":[{"line_number":420,"context_line":"            \u0027enum\u0027: ["},{"line_number":421,"context_line":"                \u0027amd-sev\u0027,"},{"line_number":422,"context_line":"                \u0027amd-sev-es\u0027,"},{"line_number":423,"context_line":"            ],"},{"line_number":424,"context_line":"        },"},{"line_number":425,"context_line":"    ),"},{"line_number":426,"context_line":"    base.ExtraSpecValidator("}],"source_content_type":"text/x-python","patch_set":42,"id":"35d84c2d_fbb4fb18","line":423,"updated":"2025-08-28 18:04:32.000000000","message":"https://specs.openstack.org/openstack/nova-specs/specs/2025.2/approved/amd-sev-es-libvirt-support.html#proposed-change\n\nthis matches the spec so no need to change it now.\n\ni dont recall why we want the amd- prefix but its fine either way.\n\ni woudl have dropped that personaly for less typeing because sev by itself shoud be unique\n\nim guessing we kept ti to make the trait translation simpler which is a perfectly valid desgin choice.","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"}],"nova/scheduler/utils.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3cc4ee5385ff600caf1562bc8798cd35d3372be5","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s and %s.\","},{"line_number":318,"context_line":"                  version_trait, model_trait)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _translate_mem_encryption_request(self, flavor, image):"},{"line_number":321,"context_line":"        \"\"\"When the hw:mem_encryption extra spec or the hw_mem_encryption"},{"line_number":322,"context_line":"        image property are requested, translate into a request for"},{"line_number":323,"context_line":"        resources:MEM_ENCRYPTION_CONTEXT\u003d1 which requires a slot on a"}],"source_content_type":"text/x-python","patch_set":39,"id":"f004821c_495acdbc","line":320,"updated":"2025-08-27 08:42:00.000000000","message":"unnecessary cosmetic change but fine.","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"}],"nova/tests/functional/libvirt/test_reshape.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3cc4ee5385ff600caf1562bc8798cd35d3372be5","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        self.glance.create(admin_context, hw_mem_enc_image)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver.\u0027"},{"line_number":257,"context_line":"                \u0027_guest_configure_mem_encryption\u0027)"},{"line_number":258,"context_line":"    def test_create_servers_with_amd_sev(self, mock_configure_me):"},{"line_number":259,"context_line":"        self.hostname \u003d self.start_compute("},{"line_number":260,"context_line":"            hostname\u003d\u0027compute1\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"e5d773c0_3e0b5db3","line":257,"updated":"2025-08-27 08:42:00.000000000","message":"see, you unnecessarly add more things to review while you could have ported such modifications back to your previous patches before uploading a new revision.\n(just a general rule of thumb in order to ease our reviews, not a formal ask again)","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"}],"nova/tests/unit/scheduler/test_utils.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3cc4ee5385ff600caf1562bc8798cd35d3372be5","unresolved":false,"context_lines":[{"line_number":2580,"context_line":"            self.assertRaises("},{"line_number":2581,"context_line":"                exception.FlavorImageConflict,"},{"line_number":2582,"context_line":"                utils.ResourceRequest.from_request_spec, reqspec"},{"line_number":2583,"context_line":"            )"},{"line_number":2584,"context_line":""},{"line_number":2585,"context_line":""},{"line_number":2586,"context_line":"class TestResourcesFromRequestGroupDefaultPolicy(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":39,"id":"2c0461e4_ce7987d0","line":2583,"updated":"2025-08-27 08:42:00.000000000","message":"thanks for the negative testing","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e6e64703ce99fa7420428746547e2250882ec1a7","unresolved":true,"context_lines":[{"line_number":2509,"context_line":"                            hw_mem_encryption\u003dimage_prop))"},{"line_number":2510,"context_line":"                )"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"    def test_encrypted_memory_model_extra_spec(self):"},{"line_number":2513,"context_line":"        for model in (\u0027amd-sev\u0027, \u0027amd-sev-es\u0027):"},{"line_number":2514,"context_line":"            self._test_encrypted_memory_support_required("},{"line_number":2515,"context_line":"                \u0027hw:mem_encryption extra spec\u0027,"}],"source_content_type":"text/x-python","patch_set":42,"id":"1027132f_11e3a746","line":2512,"updated":"2025-08-28 18:04:32.000000000","message":"nit this is a good usecase for ddt but this is also fine.","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"efe0e072849ddb0cc4a6ccb9c7c117f98746411f","unresolved":true,"context_lines":[{"line_number":2509,"context_line":"                            hw_mem_encryption\u003dimage_prop))"},{"line_number":2510,"context_line":"                )"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"    def test_encrypted_memory_model_extra_spec(self):"},{"line_number":2513,"context_line":"        for model in (\u0027amd-sev\u0027, \u0027amd-sev-es\u0027):"},{"line_number":2514,"context_line":"            self._test_encrypted_memory_support_required("},{"line_number":2515,"context_line":"                \u0027hw:mem_encryption extra spec\u0027,"}],"source_content_type":"text/x-python","patch_set":42,"id":"8196d3e9_28189bae","line":2512,"in_reply_to":"1027132f_11e3a746","updated":"2025-08-29 04:09:16.000000000","message":"It seems the bare for loop is used specifically in this class so I\u0027ve refactored these in https://review.opendev.org/c/openstack/nova/+/958822 using ddt.","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"}],"nova/virt/hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e6e64703ce99fa7420428746547e2250882ec1a7","unresolved":false,"context_lines":[{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"    flavor_mem_enc_model, image_mem_enc_model \u003d _get_flavor_image_meta("},{"line_number":1236,"context_line":"        \u0027mem_encryption_model\u0027, flavor, image_meta)"},{"line_number":1237,"context_line":"    _check_for_mem_encryption_model_conflicts("},{"line_number":1238,"context_line":"        flavor_mem_enc_model, image_mem_enc_model, flavor, image_meta)"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    mem_enc_model \u003d None"}],"source_content_type":"text/x-python","patch_set":42,"id":"baba08c3_5551e272","line":1237,"updated":"2025-08-28 18:04:32.000000000","message":"nit: again this is just personal prefnece but i think this nicere to declare the function before using it.\n\nbased on the naming convetion i more or less know what this will do without looking but it make it simpler to review if the defination comes before the usage.","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3cc4ee5385ff600caf1562bc8798cd35d3372be5","unresolved":true,"context_lines":[{"line_number":3023,"context_line":"        super(LibvirtConfigGuestSEVLaunchSecurity, self).__init__("},{"line_number":3024,"context_line":"            root_name\u003d\u0027launchSecurity\u0027, **kwargs)"},{"line_number":3025,"context_line":""},{"line_number":3026,"context_line":"        # hardcoded default for SEV according to the spec"},{"line_number":3027,"context_line":"        self.policy \u003d 0x0033"},{"line_number":3028,"context_line":"        self.cbitpos \u003d None"},{"line_number":3029,"context_line":"        self.reduced_phys_bits \u003d None"}],"source_content_type":"text/x-python","patch_set":39,"id":"8bb334fd_f9869975","line":3026,"updated":"2025-08-27 08:42:00.000000000","message":"nit: you could mention that SEV-ES has another policy but we default to the SEV one.","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e6e64703ce99fa7420428746547e2250882ec1a7","unresolved":true,"context_lines":[{"line_number":3023,"context_line":"        super(LibvirtConfigGuestSEVLaunchSecurity, self).__init__("},{"line_number":3024,"context_line":"            root_name\u003d\u0027launchSecurity\u0027, **kwargs)"},{"line_number":3025,"context_line":""},{"line_number":3026,"context_line":"        # hardcoded default for SEV according to the spec"},{"line_number":3027,"context_line":"        self.policy \u003d 0x0033"},{"line_number":3028,"context_line":"        self.cbitpos \u003d None"},{"line_number":3029,"context_line":"        self.reduced_phys_bits \u003d None"}],"source_content_type":"text/x-python","patch_set":39,"id":"f0d431ce_b7fefdbf","line":3026,"in_reply_to":"8bb334fd_f9869975","updated":"2025-08-28 18:04:32.000000000","message":"my prefence woudl be to define both as class level constant and use those instead\n\nbut that can be done in a follow","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"efe0e072849ddb0cc4a6ccb9c7c117f98746411f","unresolved":true,"context_lines":[{"line_number":3023,"context_line":"        super(LibvirtConfigGuestSEVLaunchSecurity, self).__init__("},{"line_number":3024,"context_line":"            root_name\u003d\u0027launchSecurity\u0027, **kwargs)"},{"line_number":3025,"context_line":""},{"line_number":3026,"context_line":"        # hardcoded default for SEV according to the spec"},{"line_number":3027,"context_line":"        self.policy \u003d 0x0033"},{"line_number":3028,"context_line":"        self.cbitpos \u003d None"},{"line_number":3029,"context_line":"        self.reduced_phys_bits \u003d None"}],"source_content_type":"text/x-python","patch_set":39,"id":"bd7a9d9c_2e945602","line":3026,"in_reply_to":"f0d431ce_b7fefdbf","updated":"2025-08-29 04:09:16.000000000","message":"I\u0027ve done this in https://review.opendev.org/c/openstack/nova/+/958822 .","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3cc4ee5385ff600caf1562bc8798cd35d3372be5","unresolved":false,"context_lines":[{"line_number":7754,"context_line":"        launch_security.cbitpos \u003d sev.cbitpos"},{"line_number":7755,"context_line":"        launch_security.reduced_phys_bits \u003d sev.reduced_phys_bits"},{"line_number":7756,"context_line":"        if model \u003d\u003d fields.MemEncryptionModel.AMD_SEV_ES:"},{"line_number":7757,"context_line":"            launch_security.policy \u003d 0x0035"},{"line_number":7758,"context_line":"        guest.launch_security \u003d launch_security"},{"line_number":7759,"context_line":""},{"line_number":7760,"context_line":"    def _find_sev_feature(self, arch, mach_type):"}],"source_content_type":"text/x-python","patch_set":39,"id":"7cbdfa27_9099f175","line":7757,"updated":"2025-08-27 08:42:00.000000000","message":"++","commit_id":"d0c351ab22e620b5e047ce5cde72d74e0cbe5d75"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e6e64703ce99fa7420428746547e2250882ec1a7","unresolved":true,"context_lines":[{"line_number":7754,"context_line":"        launch_security.cbitpos \u003d sev.cbitpos"},{"line_number":7755,"context_line":"        launch_security.reduced_phys_bits \u003d sev.reduced_phys_bits"},{"line_number":7756,"context_line":"        if model \u003d\u003d fields.MemEncryptionModel.AMD_SEV_ES:"},{"line_number":7757,"context_line":"            launch_security.policy \u003d 0x0035"},{"line_number":7758,"context_line":"        guest.launch_security \u003d launch_security"},{"line_number":7759,"context_line":""},{"line_number":7760,"context_line":"    def _find_sev_feature(self, arch, mach_type):"}],"source_content_type":"text/x-python","patch_set":42,"id":"ee074079_8a275913","line":7757,"updated":"2025-08-28 18:04:32.000000000","message":"if we add the constint in a followup we can use it here and that will be a little nicer then a random in.\n\nalso this is a bit flavo so if we really wanted we could\ncompute that when we define the constants to make it clear exactly what this is doing.","commit_id":"4f5a3f3c002d10e03d77dd379228aedc21a14d0b"}]}
