)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a9b5967bf4768128f4e894539f56f6ac505ecec5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"15ed1a1c_48ade99a","updated":"2024-08-15 09:35:30.000000000","message":"recheck nova-ceph-multistore was fixed","commit_id":"d72985caac8abf570591938ed7f04a4dd5e46e62"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f729eae9499664483353fb4bca048f7a4417b529","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e19719b0_16b864f8","updated":"2024-08-13 09:33:15.000000000","message":"recheck the change does not affect CI which doesn\u0027t have SEV capability.","commit_id":"d72985caac8abf570591938ed7f04a4dd5e46e62"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b645134b637a5e342910bb7b7e8a3a90304863","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"eda0d9d3_3e51ccf2","updated":"2024-10-29 15:39:06.000000000","message":"recheck","commit_id":"5e55c5f67cb0953a07934a1e582557be6ad37892"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"783523ea18f5eef17237f942e2f3feb31574e8eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"37d25d6e_558618ac","updated":"2024-12-11 15:38:01.000000000","message":"recheck to get a fresh CI result","commit_id":"ab1c1ec2c78dbbce45b0ff173cc98b7bcf57287c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ff7dee6bd181ef5ced46ccf67dbbe83ac0426087","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"1f7ac89f_316c80f8","updated":"2025-06-11 02:50:57.000000000","message":"recheck to see if the issue appears consistently","commit_id":"c96ceeace20f802ef8c84598cc765a371ab758d8"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f79e11bf38736815cd57f7f5ccabd32ca14d604f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"ba9a5ac0_1b82b5ec","updated":"2025-06-18 07:46:21.000000000","message":"recheck the only change made since the last successful run was the deprecated version.","commit_id":"27893817827932335fcdad19a967eefa4211b94d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e689efd6a7881dd3e85815d3ab0602a72c075260","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"6da8eb39_8e0a3aec","updated":"2025-07-28 14:38:52.000000000","message":"recheck failure is not consistent. looks like a random one","commit_id":"22c5ee3d641a7d42ab506223232cda86db53a01e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"106e79cbf227e4f320f088df8a2fadb119b559b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"39ecfc3d_b0808531","updated":"2025-08-07 13:24:46.000000000","message":"recheck is the failure random ?","commit_id":"96da58c14a89eed394dfd68f8d5d55e6128e29c5"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e2b00dc0e40c8e33a43930c512e3567b17696731","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"d50e8652_4b0ac2a6","updated":"2025-08-12 05:45:04.000000000","message":"recheck","commit_id":"a2618683c3b6a38ad70627756050b22ad0d5fcb9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"32c4ab211105571f0de498861fd6d0f8e2dd1749","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"7ed1ccd3_1baeb02d","updated":"2025-08-11 14:00:20.000000000","message":"recheck irrelevant post failure","commit_id":"a2618683c3b6a38ad70627756050b22ad0d5fcb9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1bbcfab2976bafe00f21a33a7f9ebbb782c2f94d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"c5beba7a_06b735d3","updated":"2025-08-14 03:56:31.000000000","message":"recheck node failure","commit_id":"834f2922816340287cbb3aa182db3a71f409a207"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"dd5b3f1e2970cb417f58cfa373762133e68f6b34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"823f713f_5621ab99","updated":"2025-08-27 01:17:41.000000000","message":"Detected a few problems with mock coverage (due to new access to sev_es kernel file), so I addressed these. These are not reproduced in my local, though.","commit_id":"d4eccac4d366331d88b6adb48c482df23af8bf56"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2935d0fc6ff1bb7843f53460226841eba2bad4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"0850d0a0_c37bd7e7","updated":"2025-08-27 08:30:18.000000000","message":"-1 mostly because of the upgrade impact. I checked the spec and nothing mentions some upgrade impact but I\u0027m a bit afraid of the rolling upgrade scenario which would lead to suboptimal placement.","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1338616a9fe98fdd8fc356aa86cddcd85a7792d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"fe1f84e3_2cf9ca5c","updated":"2025-08-27 13:49:11.000000000","message":"recheck timeout during instance boot in grenade check","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bec7d8d6290471fc09d336052a12af9e412b81c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"833c2d29_df1853c8","updated":"2025-08-27 14:24:14.000000000","message":"soft -1 to signal 2 type in return_value.\nThat patch makes sens. It is also backed by solid testing.\nSo it looks good to me except the \"minor\" typo spotted below.","commit_id":"456c9df5ff204e58963a8177a23a1064ca97d0ea"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5ee089172b73c2ee5e6e8231ccb1847c9efb700d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"650cd660_6e615831","in_reply_to":"833c2d29_df1853c8","updated":"2025-08-27 23:51:31.000000000","message":"Thanks. I fixed these and also same typos in the subsequent changes.","commit_id":"456c9df5ff204e58963a8177a23a1064ca97d0ea"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a0123bfed290eeae97b6ed2d07ea793f1762af8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"58ab2635_ee81a665","updated":"2025-08-28 04:06:49.000000000","message":"recheck","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ee3a06b3a6259edb9463edfb5746533c0ea213b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"cc45b6ee_b366e0f2","updated":"2025-08-28 06:25:26.000000000","message":"recheck POST_FAILURE","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"354662f3_be6b7464","updated":"2025-08-28 17:41:02.000000000","message":"some comments inline on things that can be improved","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d66b7583fd0a4a2037b453d5296d515ec71d7eea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"98f5df7c_6778230d","updated":"2025-08-28 08:15:51.000000000","message":"thanks for fixing the nits","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}],"nova/conf/libvirt.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2935d0fc6ff1bb7843f53460226841eba2bad4","unresolved":false,"context_lines":[{"line_number":841,"context_line":"               default\u003dNone,"},{"line_number":842,"context_line":"               min\u003d0,"},{"line_number":843,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":844,"context_line":"               deprecated_since\u003d\u002732.0.0\u0027,"},{"line_number":845,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":846,"context_line":"This option is effective for only SEV and has no effect for SEV-ES. Libvirt"},{"line_number":847,"context_line":"is capable to present maximum number of SEV guests and one of SEV-ES guests"}],"source_content_type":"text/x-python","patch_set":36,"id":"2412fd6c_13bed2eb","line":844,"updated":"2025-08-27 08:30:18.000000000","message":"correct nova version","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2935d0fc6ff1bb7843f53460226841eba2bad4","unresolved":true,"context_lines":[{"line_number":1295,"context_line":"    cfg.StrOpt(\u0027quobyte_mount_point_base\u0027,"},{"line_number":1296,"context_line":"               default\u003dpaths.state_path_def(\u0027mnt\u0027),"},{"line_number":1297,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":1298,"context_line":"               deprecated_since\u003d\"32.0.0\","},{"line_number":1299,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":1300,"context_line":"Quobyte volume driver in cinder was marked unsupported. Quobyte volume support"},{"line_number":1301,"context_line":"will be removed from nova when the volume driver is removed from cinder."}],"source_content_type":"text/x-python","patch_set":36,"id":"9ab25050_66549f0d","line":1298,"updated":"2025-08-27 08:30:18.000000000","message":"hmmm, why do you change this ?","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c51a3587a0fbc1cfb7b22068ca6dab1e71a9a514","unresolved":true,"context_lines":[{"line_number":1295,"context_line":"    cfg.StrOpt(\u0027quobyte_mount_point_base\u0027,"},{"line_number":1296,"context_line":"               default\u003dpaths.state_path_def(\u0027mnt\u0027),"},{"line_number":1297,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":1298,"context_line":"               deprecated_since\u003d\"32.0.0\","},{"line_number":1299,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":1300,"context_line":"Quobyte volume driver in cinder was marked unsupported. Quobyte volume support"},{"line_number":1301,"context_line":"will be removed from nova when the volume driver is removed from cinder."}],"source_content_type":"text/x-python","patch_set":36,"id":"a023a77d_3894775c","line":1298,"in_reply_to":"9ab25050_66549f0d","updated":"2025-08-27 09:02:28.000000000","message":"This is unintentional. Will fix it.","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"86d64f94f2d0995fb4396d0b1c0a89f2208d78d7","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"    cfg.StrOpt(\u0027quobyte_mount_point_base\u0027,"},{"line_number":1296,"context_line":"               default\u003dpaths.state_path_def(\u0027mnt\u0027),"},{"line_number":1297,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":1298,"context_line":"               deprecated_since\u003d\"32.0.0\","},{"line_number":1299,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":1300,"context_line":"Quobyte volume driver in cinder was marked unsupported. Quobyte volume support"},{"line_number":1301,"context_line":"will be removed from nova when the volume driver is removed from cinder."}],"source_content_type":"text/x-python","patch_set":36,"id":"c151b251_06e52cd6","line":1298,"in_reply_to":"a023a77d_3894775c","updated":"2025-08-27 09:09:57.000000000","message":"Done","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3c7d5d976a9df264fc8f995cb4a3603243c5700a","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"    cfg.StrOpt(\u0027quobyte_mount_point_base\u0027,"},{"line_number":1296,"context_line":"               default\u003dpaths.state_path_def(\u0027mnt\u0027),"},{"line_number":1297,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":1298,"context_line":"               deprecated_since\u003d\"31.0.0\","},{"line_number":1299,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":1300,"context_line":"Quobyte volume driver in cinder was marked unsupported. Quobyte volume support"},{"line_number":1301,"context_line":"will be removed from nova when the volume driver is removed from cinder."}],"source_content_type":"text/x-python","patch_set":37,"id":"32c61e1e_ba1ac71e","line":1298,"updated":"2025-08-27 09:23:24.000000000","message":"thanks","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":false,"context_lines":[{"line_number":846,"context_line":"This option is effective for only SEV and has no effect for SEV-ES. Libvirt"},{"line_number":847,"context_line":"is capable to present maximum number of SEV guests and one of SEV-ES guests"},{"line_number":848,"context_line":"since 8.0.0 and this option is no longer necessary."},{"line_number":849,"context_line":"\"\"\","},{"line_number":850,"context_line":"               help\u003d\"\"\""},{"line_number":851,"context_line":"Maximum number of guests with encrypted memory which can run"},{"line_number":852,"context_line":"concurrently on this compute host."}],"source_content_type":"text/x-python","patch_set":38,"id":"78c0749d_d8d49a83","line":849,"updated":"2025-08-28 17:41:02.000000000","message":"+1\nwe dont need to remove this but we done need it either\nso it good to deprecaate this now and  we can remove it in 2026.2 or whewn we get time","commit_id":"456c9df5ff204e58963a8177a23a1064ca97d0ea"}],"nova/scheduler/utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cf1d8df806942a5c6eedc07b9eaf057a93efd43c","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"61098790_79a512ad","line":334,"updated":"2025-02-27 02:20:25.000000000","message":"-1  resources:MEM_ENCRYPTION_CONTEXT\u003d1 does not imply SEV\n\nit could be sev-es or the intel or arm equvalents.","commit_id":"100239c4146e466876016b752bf73bc3a02350ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e82699b457ad6b9f7325075b1929fc28d57be792","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"6c653b03_1e32aaff","line":334,"in_reply_to":"31b7ac88_75848585","updated":"2025-02-27 02:43:15.000000000","message":"checking the spec this is consitnet with it but im wondering if we should add “any” to the image property/extra spec so that you can explictl opt out of the required trait for new isntances if you dont care which you get those that sound reasonabel or do you see any problems with that?","commit_id":"100239c4146e466876016b752bf73bc3a02350ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9eb183c4c0df377db802c40311190235f59439","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"31b7ac88_75848585","line":334,"in_reply_to":"61098790_79a512ad","updated":"2025-02-27 02:30:09.000000000","message":"you should move this into the next patch and make it condtional on \n\nhw_mem_encryption_model\n\nim undecided if its ok to imply sev if hw_mem_encryption_model is not specified\n\ni think long term that would not be the correct approch as we want to be able to ask form memory encyption and get either sev or sev es if you have not specifed but i could be convinced that hw_mem_encryption_model unset means sev implcitly since that is all that is supproted today.\n\nstriking a blance between current and future behavior, we may want to consier recording the current memory encyption type when the compute agent starts up by back populating hw_mem_encryption_model for existing instance only when upgrading.\n\ni.e. if we have a compute service verion bump for this in the next patch you could have teh agent set hw_mem_encryption_model in the image properties only when it is starting for the first time on that new comptue service verison.\n\nthen this code could exlisvily look at hw_mem_encryption_model to decied which trait to add if its set on the instance.\n\nin any case i think this is better decied in the next patch not this one.","commit_id":"100239c4146e466876016b752bf73bc3a02350ba"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0ba5773a1c790ef33de244f888ded5571c4b2f7e","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"b757adde_b6c432f5","line":334,"in_reply_to":"6c653b03_1e32aaff","updated":"2025-02-27 12:13:19.000000000","message":"I can\u0027t split the new trait part because after this change there are additional MEM_ENCRYPTION_CONTEXT resources for SEV-ES, and we should not allocate these for SEV instances.\nI partially agree with \"any\" which may be an ideal default but I proposed \"sev\" as the default because\n * These features require appropriate but different kernel versions and tools installed in guest\n * Changing the default according to internal configuration value is confusing for users from cross-operatibility\u0027s PoV","commit_id":"100239c4146e466876016b752bf73bc3a02350ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6e4750f28d9b7a1fddb099821bf6fc0ac9ae47d9","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"6deed873_6cf440a5","line":334,"in_reply_to":"b757adde_b6c432f5","updated":"2025-02-27 13:14:23.000000000","message":"ack ok we can add any as a way to opt in going forword but default to sev\n\nif we decied to chagne the defautl in the future we can recorerd th currnt value for any isntance without the image propperty set and then change teh defautl in the slurp after.\n\nill drop my -1 to relfect that.","commit_id":"100239c4146e466876016b752bf73bc3a02350ba"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"453f7b17148369ea053c1f33f9fca8b9bacdd60e","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"7b285cef_51e845c7","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":65},"updated":"2025-03-01 15:15:24.000000000","message":"Hmm. I noticed that this may no longer allow users to schedule SEV instances if their deployments have controller nodes with \u003e\u003d 2025.2 and compute nodes with \u003c\u003d 2025.1 . I wonder if that is an acceptable upgrade impact or we should consider a better way to handle this.\n\nHowever honestly I don\u0027t have very good ideas. Maybe we can add an option to enable specific feature, and prohibit enabling SEV-ES if there is any rp with MEM_ENCRYPTION_CONTEXT without any SEV traits ?","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ea353ac9edc92d571b3a43a0f2a9cd1286837d03","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"81fbed3f_f8e923f1","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":65},"in_reply_to":"2253b63b_bde0be0c","updated":"2025-06-18 02:51:47.000000000","message":"You are correct. The trait was added when SEV support was initially introduced. So I think this concern is just my misunderstanding. Thanks for your information.","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"22f96f9a70b56776f2e3d66dfccb958f9488606d","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"f29c16fd_9144fac3","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":65},"in_reply_to":"7b285cef_51e845c7","updated":"2025-06-17 02:16:37.000000000","message":"Could you please provide more details about the issue?\nI\u0027m investigating a solution, but after reviewing the code, I can\u0027t figure out why SEV instances fail to deploy on older compute nodes. \nIt appears that the HW_X86_CPU_AMD_SEV trait is being set on the Root RP in this part of the code[1], \nso it seems like the Scheduler should work fine when requesting MEM_ENCRYPTION_CONTEXT and that trait. \n\n[1] https://github.com/openstack/nova/blob/d75507e679f64a7760e3344a257ed6f096ddae3c/nova/virt/libvirt/driver.py#L13241","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"487d20df7ac7080cffb94f0ddcd94277166b72cf","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"2253b63b_bde0be0c","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":65},"in_reply_to":"c0302ab8_79c7ddac","updated":"2025-06-18 02:42:38.000000000","message":"It seems likely that older (\u003c\u003d 2025.1) compute nodes already have the HW_X86_CPU_AMD_SEV trait in the existing RP\u0027s traits before reshaping. Looking at the 2025.1 code, it appears that HW_X86_CPU_AMD_SEV is detected by LibvirtDriver\u0027s _get_cpu_traits() [1] and added to the root RP\u0027s traits [2]. Therefore, it seems that once the controller is updated and a schedule request requires HW_X86_CPU_AMD_SEV, older compute nodes would be detected by scheduler. Please let me know if I\u0027ve misunderstood anything.\n[1] https://github.com/openstack/nova/blob/6943e035182c0664d81d4fea6ce85596f119ecd7/nova/virt/libvirt/driver.py#L13235\n[2] https://github.com/openstack/nova/blob/6943e035182c0664d81d4fea6ce85596f119ecd7/nova/virt/libvirt/driver.py#L9549","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5bae37f20797f222b132a95619c5a5b304e19ad3","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"c0302ab8_79c7ddac","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":65},"in_reply_to":"f29c16fd_9144fac3","updated":"2025-06-17 05:26:19.000000000","message":"When a deployment with SEV support is upgraded, we expect controller nodes(including scheduler) are upgraded BEFORE compute nodes (where nova-compute runs). In this situation, the existing RPs haven\u0027t been reshape, so the existing MEM_ENCRYPTION_CONTEXT has no HW_X86_CPU_AMD_SEV trait. So until a compute nodes are upgraded, instance with SEV enabled can\u0027t be scheduled to the compute nodes.","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2935d0fc6ff1bb7843f53460226841eba2bad4","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"19d17f11_541f0ffa","line":334,"updated":"2025-08-27 08:30:18.000000000","message":"this will require the cloud to be fully upgraded, right? \n\nIn case of a rolling-upgrade, old computes won\u0027t expose that trait, am I right? \nIf so, shall we somehow not break our current behaviour for existing flavors ?","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c51a3587a0fbc1cfb7b22068ca6dab1e71a9a514","unresolved":true,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"d19446d3_a625e9cd","line":334,"in_reply_to":"19d17f11_541f0ffa","updated":"2025-08-27 09:02:28.000000000","message":"No. Old compute nodes expose ot.HW_CPU_X86_AMD_SEV trait (but at the compute RP layer), so this does not break scheduling to old compute nodes.\n\nThe only use case it breaks is the case where operators manually add MEM_ENCRYPTION_CONTEXT resource provider without using the libvirt driver feature, but I believe we don\u0027t have to care that case.","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5b6a2b6b496b3885a3afcde30aabfd774505224c","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        self._add_resource(orc.MEM_ENCRYPTION_CONTEXT, 1)"},{"line_number":334,"context_line":"        self._add_trait(os_traits.HW_CPU_X86_AMD_SEV, \u0027required\u0027)"},{"line_number":335,"context_line":"        LOG.debug(\"Added %s\u003d1 to requested resources\","},{"line_number":336,"context_line":"                  orc.MEM_ENCRYPTION_CONTEXT)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"13cea0aa_10f523a8","line":334,"in_reply_to":"d19446d3_a625e9cd","updated":"2025-08-27 09:09:22.000000000","message":"oh right, I feel stupid here, I *knew* that computes were having a trait given I reviewed the reshape patch where you moved the trait down to the nested RP...","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"}],"nova/tests/functional/libvirt/test_report_cpu_traits.py":[{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"c56c809f20f579a89e58af9f6def11589246bac1","unresolved":true,"context_lines":[{"line_number":182,"context_line":"        self.assertFalse(self.compute.driver._host.supports_amd_sev)"},{"line_number":183,"context_line":"        self.assertFalse(self.compute.driver._host.supports_amd_sev_es)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        ost.HW_CPU_X86_AMD_SEV"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        global_traits \u003d self._get_all_traits()"},{"line_number":188,"context_line":"        self.assertIn(ost.HW_CPU_X86_AMD_SEV, global_traits)"}],"source_content_type":"text/x-python","patch_set":24,"id":"99a8ca93_51b8bb0f","line":185,"updated":"2025-06-11 10:59:51.000000000","message":"Should this line be removed?","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"acce2bbae4ab91d0ad86bf19bbe27260b42da522","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        self.assertFalse(self.compute.driver._host.supports_amd_sev)"},{"line_number":183,"context_line":"        self.assertFalse(self.compute.driver._host.supports_amd_sev_es)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        ost.HW_CPU_X86_AMD_SEV"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        global_traits \u003d self._get_all_traits()"},{"line_number":188,"context_line":"        self.assertIn(ost.HW_CPU_X86_AMD_SEV, global_traits)"}],"source_content_type":"text/x-python","patch_set":24,"id":"47b0d6d6_eeb9c1ea","line":185,"in_reply_to":"99a8ca93_51b8bb0f","updated":"2025-06-11 11:51:21.000000000","message":"Done","commit_id":"12a6b191327caaa881418616dd9e1d7fd1ec6b6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        with mock.patch(\u0027builtins.open\u0027) as mock_open:"},{"line_number":94,"context_line":"            mock_open.side_effect \u003d fake_open"},{"line_number":95,"context_line":"            yield mock_open"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class LibvirtReportTraitsTests(LibvirtReportTraitsTestBase):"}],"source_content_type":"text/x-python","patch_set":39,"id":"0b55eddb_57f4f3e9","line":95,"updated":"2025-08-28 17:41:02.000000000","message":"this will work but we shoudl prefer using patch_open in new code.\n\nhttps://github.com/openstack/nova/blob/master/nova/test.py#L418-L427\nhttps://opendev.org/openstack/nova/src/branch/master/nova/test.py#L973-L1019\n\nthis can be cleaned up in a follow up change.\n\nwe pulled this out into its own resuabel helper a number of years ago\n\nhttps://github.com/openstack/nova/commit/ca8f4be2a84d37319183cf9511d1791068a2e2fd\n\nbecause doing it by hand can be error prone.\n\nwe have a patch_exists helper too\n\nhttps://opendev.org/openstack/nova/src/branch/master/nova/test.py#L924","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5f6a04f0eb27340e976b2c3144fece3415affa2a","unresolved":true,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        with mock.patch(\u0027builtins.open\u0027) as mock_open:"},{"line_number":94,"context_line":"            mock_open.side_effect \u003d fake_open"},{"line_number":95,"context_line":"            yield mock_open"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class LibvirtReportTraitsTests(LibvirtReportTraitsTestBase):"}],"source_content_type":"text/x-python","patch_set":39,"id":"339d50fd_f2e253c5","line":95,"in_reply_to":"0b55eddb_57f4f3e9","updated":"2025-08-28 18:05:23.000000000","message":"The reason I created this specific helper was that nesting patch_open or patch_exists does not work due to autospec trying to inspect MagicMock but I can try fixing it.","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f94eaafa854d8b77f2d421cc4b2b20043f0fc160","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        with mock.patch(\u0027builtins.open\u0027) as mock_open:"},{"line_number":94,"context_line":"            mock_open.side_effect \u003d fake_open"},{"line_number":95,"context_line":"            yield mock_open"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class LibvirtReportTraitsTests(LibvirtReportTraitsTestBase):"}],"source_content_type":"text/x-python","patch_set":39,"id":"07b21f5d_8abcbb47","line":95,"in_reply_to":"339d50fd_f2e253c5","updated":"2025-08-28 18:20:52.000000000","message":"ah. ya that would be nice but not critical\n\nthanks for explainign why you did not use them","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":258,"context_line":"        # Now simulate the host gaining SEV-ES functionality.  Here we"},{"line_number":259,"context_line":"        # simulate a kernel update or reconfiguration which causes the"},{"line_number":260,"context_line":"        # kvm-amd kernel module\u0027s \"sev-es\" parameter to become available"},{"line_number":261,"context_line":"        # and set to 1"},{"line_number":262,"context_line":"        sev_features \u003d (fakelibvirt.virConnect."},{"line_number":263,"context_line":"                        _domain_capability_features_with_SEV_max_guests)"},{"line_number":264,"context_line":"        with test.nested("}],"source_content_type":"text/x-python","patch_set":39,"id":"40fd8042_8cb6f869","line":261,"updated":"2025-08-28 17:41:02.000000000","message":"this shoudl really be 2 tests\n\nyou are adding good coverate here but this is starting to get excessively long enven for a functional tests.\n\nthis does not raise to the level of a -1 but it would be good to refactor this in a follow up.\n\ni woudl prefer if this test just tset sev\na second test for just sev_es if that is reflective of real hardware\nand finally a third test for a host with both sev and sev_es contexts aviable.","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"29920cf2a96a97d71a18e469f6b6f632f67bd1c3","unresolved":true,"context_lines":[{"line_number":258,"context_line":"        # Now simulate the host gaining SEV-ES functionality.  Here we"},{"line_number":259,"context_line":"        # simulate a kernel update or reconfiguration which causes the"},{"line_number":260,"context_line":"        # kvm-amd kernel module\u0027s \"sev-es\" parameter to become available"},{"line_number":261,"context_line":"        # and set to 1"},{"line_number":262,"context_line":"        sev_features \u003d (fakelibvirt.virConnect."},{"line_number":263,"context_line":"                        _domain_capability_features_with_SEV_max_guests)"},{"line_number":264,"context_line":"        with test.nested("}],"source_content_type":"text/x-python","patch_set":39,"id":"25c0045b_233e360e","line":261,"in_reply_to":"40fd8042_8cb6f869","updated":"2025-08-29 04:05:10.000000000","message":"Addressed in https://review.opendev.org/c/openstack/nova/+/958822 .\n\nI created the following three scenarios, because SEV-ES can\u0027t be enabled when SEV is not enabled.\n - Host has both SEV and SEV-ES enabled and then both are disabled\n - Host has both SEV and SEV-ES enabled and then only SEV-ES is disabled\n - Host has only SEV enabled and then SEV is disabled\n \nThe first scenario was not implemented in this change but it revealed a bug .... Thanks for pointing this !","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            # Retrigger the detection code.  In the real world this"},{"line_number":276,"context_line":"            # would be a restart of the compute service."},{"line_number":277,"context_line":"            # As we are changing the domain caps we need to clear the"},{"line_number":278,"context_line":"            # cache in the host object."},{"line_number":279,"context_line":"            self.compute.driver._host._domain_caps \u003d None"},{"line_number":280,"context_line":"            self.compute.driver._host._supports_amd_sev \u003d None"},{"line_number":281,"context_line":"            self.compute.driver._host._supports_amd_sev_es \u003d None"}],"source_content_type":"text/x-python","patch_set":39,"id":"6f584646_39e25ef1","line":278,"updated":"2025-08-28 17:41:02.000000000","message":"ack.\nwe can retart a compute in the funtional tests but this is also ok.\nthanks for documenting this in a comment\neven with a restat we would need to clear this cached state.\n\nin the future it might make sense to add a reset function to the host class to rest teh internal state\n\nwe have a coulpe of examples of this in other places but that not striclty requried.\n\nwe tend ot do that more when its module level state rather then object level.\n\nim just callign this out since it duplciated in this test.","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}],"nova/tests/functional/libvirt/test_reshape.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2935d0fc6ff1bb7843f53460226841eba2bad4","unresolved":true,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":36,"id":"c375cd07_1179ac82","line":302,"updated":"2025-08-27 08:30:18.000000000","message":"nit: apart from this, all the other changes in this file could be provided in the previous patch, right? (note,I don\u0027t particularly want to squash those modifications in the same patch, I\u0027m just saying it adds more modifications to the reviewers to look at)","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"29920cf2a96a97d71a18e469f6b6f632f67bd1c3","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":36,"id":"3948eaf2_0bf508ec","line":302,"in_reply_to":"6bf7b28e_37d06790","updated":"2025-08-29 04:05:10.000000000","message":"Done","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c51a3587a0fbc1cfb7b22068ca6dab1e71a9a514","unresolved":true,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":36,"id":"fdb554ee_2e548437","line":302,"in_reply_to":"c375cd07_1179ac82","updated":"2025-08-27 09:02:28.000000000","message":"You are correct. I could move this to the parent change, indeed.","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3c7d5d976a9df264fc8f995cb4a3603243c5700a","unresolved":true,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":36,"id":"6bf7b28e_37d06790","line":302,"in_reply_to":"fdb554ee_2e548437","updated":"2025-08-27 09:23:24.000000000","message":"don\u0027t do that now, or it would run again the CI for the parent and all my comments explaining how reshape works for other reviewers would be gone.\n\nUnless we need to respin the reshape patch, then let\u0027s not touch it.","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bec7d8d6290471fc09d336052a12af9e412b81c4","unresolved":true,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":37,"id":"f32aba85_1342a3b1","line":302,"range":{"start_line":302,"start_character":27,"end_line":302,"end_character":39},"updated":"2025-08-27 14:24:14.000000000","message":"typo: return_value","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5ee089172b73c2ee5e6e8231ccb1847c9efb700d","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":37,"id":"67a7ae7c_af130749","line":302,"range":{"start_line":302,"start_character":27,"end_line":302,"end_character":39},"in_reply_to":"f32aba85_1342a3b1","updated":"2025-08-27 23:51:31.000000000","message":"Done","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d66b7583fd0a4a2037b453d5296d515ec71d7eea","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":300,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":301,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":302,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":303,"context_line":"            self.compute \u003d self.restart_compute_service(self.hostname)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # verify that the inventory, usages and allocation are correct after"}],"source_content_type":"text/x-python","patch_set":37,"id":"507aee33_e9f7f23c","line":302,"range":{"start_line":302,"start_character":27,"end_line":302,"end_character":39},"in_reply_to":"f32aba85_1342a3b1","updated":"2025-08-28 08:15:51.000000000","message":"good point","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":278,"context_line":"            inventories)"},{"line_number":279,"context_line":"        traits \u003d self._get_provider_traits(compute_rp_uuid)"},{"line_number":280,"context_line":"        traits.append(os_traits.HW_CPU_X86_AMD_SEV)"},{"line_number":281,"context_line":"        self._set_provider_traits(compute_rp_uuid, traits)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # create a server before reshape"},{"line_number":284,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver.\u0027"}],"source_content_type":"text/x-python","patch_set":39,"id":"5ae3d741_904584f5","line":281,"updated":"2025-08-28 17:41:02.000000000","message":"nit: you are doing this to make this functional test behave as if it is running pre\nupgrade where the trait and inventory is on the root RP.\n\nit would be good to call that out in a comment\n\nyou have grouped it with the inventory creation so its not terrible but \nthe comment on line 264 is a bit far away.\n\nit took me a second to see why you were doing this but it was obvious in retrospec when i read the next comment on line 283 and went back to the start of the block on line 264","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"29920cf2a96a97d71a18e469f6b6f632f67bd1c3","unresolved":true,"context_lines":[{"line_number":278,"context_line":"            inventories)"},{"line_number":279,"context_line":"        traits \u003d self._get_provider_traits(compute_rp_uuid)"},{"line_number":280,"context_line":"        traits.append(os_traits.HW_CPU_X86_AMD_SEV)"},{"line_number":281,"context_line":"        self._set_provider_traits(compute_rp_uuid, traits)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # create a server before reshape"},{"line_number":284,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver.\u0027"}],"source_content_type":"text/x-python","patch_set":39,"id":"8b625c54_2952a9a3","line":281,"in_reply_to":"5ae3d741_904584f5","updated":"2025-08-29 04:05:10.000000000","message":"will be addressed by https://review.opendev.org/c/openstack/nova/+/958822","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}],"nova/tests/functional/regressions/test_bug_1928063.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bec7d8d6290471fc09d336052a12af9e412b81c4","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":38,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":39,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":40,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":41,"context_line":"            self.start_compute()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Create a SEV enabled image for the test"}],"source_content_type":"text/x-python","patch_set":37,"id":"acb1119c_e445c054","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":39},"updated":"2025-08-27 14:24:14.000000000","message":"type: return_value","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5ee089172b73c2ee5e6e8231ccb1847c9efb700d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev\u0027,"},{"line_number":38,"context_line":"                        return_value\u003dTrue), \\"},{"line_number":39,"context_line":"                mock.patch(\u0027nova.virt.libvirt.host.Host.supports_amd_sev_es\u0027,"},{"line_number":40,"context_line":"                           retrun_value\u003dFalse):"},{"line_number":41,"context_line":"            self.start_compute()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Create a SEV enabled image for the test"}],"source_content_type":"text/x-python","patch_set":37,"id":"cea419db_2ff892eb","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":39},"in_reply_to":"acb1119c_e445c054","updated":"2025-08-27 23:51:31.000000000","message":"Done","commit_id":"14f97fb94703202b9c3a0326a50756651960d5cb"}],"nova/tests/unit/scheduler/test_utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":2333,"context_line":"            \u0027MEMORY_MB\u0027: 1024,"},{"line_number":2334,"context_line":"            \u0027DISK_GB\u0027: 15,"},{"line_number":2335,"context_line":"        }"},{"line_number":2336,"context_line":"        required_traits \u003d []"},{"line_number":2337,"context_line":"        if mem_encryption_context:"},{"line_number":2338,"context_line":"            expected_resources[orc.MEM_ENCRYPTION_CONTEXT] \u003d 1"},{"line_number":2339,"context_line":"            required_traits \u003d [\u0027HW_CPU_X86_AMD_SEV\u0027]"}],"source_content_type":"text/x-python","patch_set":39,"id":"2390cf40_6d03776e","line":2336,"range":{"start_line":2336,"start_character":7,"end_line":2336,"end_character":28},"updated":"2025-08-28 17:41:02.000000000","message":"```suggestion\n        required_traits \u003d set()\n```","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"29920cf2a96a97d71a18e469f6b6f632f67bd1c3","unresolved":true,"context_lines":[{"line_number":2333,"context_line":"            \u0027MEMORY_MB\u0027: 1024,"},{"line_number":2334,"context_line":"            \u0027DISK_GB\u0027: 15,"},{"line_number":2335,"context_line":"        }"},{"line_number":2336,"context_line":"        required_traits \u003d []"},{"line_number":2337,"context_line":"        if mem_encryption_context:"},{"line_number":2338,"context_line":"            expected_resources[orc.MEM_ENCRYPTION_CONTEXT] \u003d 1"},{"line_number":2339,"context_line":"            required_traits \u003d [\u0027HW_CPU_X86_AMD_SEV\u0027]"}],"source_content_type":"text/x-python","patch_set":39,"id":"c5cc0f80_fbcc9079","line":2336,"range":{"start_line":2336,"start_character":7,"end_line":2336,"end_character":28},"in_reply_to":"2390cf40_6d03776e","updated":"2025-08-29 04:05:10.000000000","message":"will be addressed by https://review.opendev.org/c/openstack/nova/+/958822","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":2336,"context_line":"        required_traits \u003d []"},{"line_number":2337,"context_line":"        if mem_encryption_context:"},{"line_number":2338,"context_line":"            expected_resources[orc.MEM_ENCRYPTION_CONTEXT] \u003d 1"},{"line_number":2339,"context_line":"            required_traits \u003d [\u0027HW_CPU_X86_AMD_SEV\u0027]"},{"line_number":2340,"context_line":""},{"line_number":2341,"context_line":"        expected \u003d FakeResourceRequest()"},{"line_number":2342,"context_line":"        expected._rg_by_id[None] \u003d objects.RequestGroup("}],"source_content_type":"text/x-python","patch_set":39,"id":"66bbb177_6ef5bd40","line":2339,"updated":"2025-08-28 17:41:02.000000000","message":"```suggestion\n            required_traits |\u003d {\u0027HW_CPU_X86_AMD_SEV\u0027,}\n```","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"29920cf2a96a97d71a18e469f6b6f632f67bd1c3","unresolved":true,"context_lines":[{"line_number":2336,"context_line":"        required_traits \u003d []"},{"line_number":2337,"context_line":"        if mem_encryption_context:"},{"line_number":2338,"context_line":"            expected_resources[orc.MEM_ENCRYPTION_CONTEXT] \u003d 1"},{"line_number":2339,"context_line":"            required_traits \u003d [\u0027HW_CPU_X86_AMD_SEV\u0027]"},{"line_number":2340,"context_line":""},{"line_number":2341,"context_line":"        expected \u003d FakeResourceRequest()"},{"line_number":2342,"context_line":"        expected._rg_by_id[None] \u003d objects.RequestGroup("}],"source_content_type":"text/x-python","patch_set":39,"id":"f5b3c082_d673f429","line":2339,"in_reply_to":"66bbb177_6ef5bd40","updated":"2025-08-29 04:05:10.000000000","message":"will be addressed by https://review.opendev.org/c/openstack/nova/+/958822","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":2342,"context_line":"        expected._rg_by_id[None] \u003d objects.RequestGroup("},{"line_number":2343,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":2344,"context_line":"            resources\u003dexpected_resources,"},{"line_number":2345,"context_line":"            required_traits\u003dset(required_traits)"},{"line_number":2346,"context_line":"        )"},{"line_number":2347,"context_line":"        return expected"},{"line_number":2348,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"8a308649_e23f5521","line":2345,"updated":"2025-08-28 17:41:02.000000000","message":"```suggestion\n            required_traits\u003drequired_traits\n```\n\nthis is test code so its fine but there is no need to use a list and then convert to a set\n\nif you care a followup for my other comment it would be nice to clean this up an use a set form the start as well.","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"29920cf2a96a97d71a18e469f6b6f632f67bd1c3","unresolved":true,"context_lines":[{"line_number":2342,"context_line":"        expected._rg_by_id[None] \u003d objects.RequestGroup("},{"line_number":2343,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":2344,"context_line":"            resources\u003dexpected_resources,"},{"line_number":2345,"context_line":"            required_traits\u003dset(required_traits)"},{"line_number":2346,"context_line":"        )"},{"line_number":2347,"context_line":"        return expected"},{"line_number":2348,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"75d5f699_4512346e","line":2345,"in_reply_to":"8a308649_e23f5521","updated":"2025-08-29 04:05:10.000000000","message":"will be addressed by https://review.opendev.org/c/openstack/nova/+/958822","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}],"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":false,"context_lines":[{"line_number":2204,"context_line":"            \u0027/sys/module/kvm_amd/parameters/sev_es\u0027)"},{"line_number":2205,"context_line":""},{"line_number":2206,"context_line":"    @ddt.data("},{"line_number":2207,"context_line":"        (\u00270\\n\u0027, False),"},{"line_number":2208,"context_line":"        (\u0027N\\n\u0027, False),"},{"line_number":2209,"context_line":"        (\u00271\\n\u0027, True),"},{"line_number":2210,"context_line":"        (\u0027Y\\n\u0027, True),"}],"source_content_type":"text/x-python","patch_set":39,"id":"60b71dfd_e71ea26e","line":2207,"range":{"start_line":2207,"start_character":9,"end_line":2207,"end_character":14},"updated":"2025-08-28 17:41:02.000000000","message":"oh you simulating this with an implcit linux newline.\n\ni guess that is fine since the libivrt driver only support linux","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2935d0fc6ff1bb7843f53460226841eba2bad4","unresolved":false,"context_lines":[{"line_number":9849,"context_line":""},{"line_number":9850,"context_line":"        LOG.debug(\"Available memory encrypted slots: \""},{"line_number":9851,"context_line":"                  \"AMD SEV\u003d%d SEV-ES\u003d%d\", sev_slots, sev_es_slots)"},{"line_number":9852,"context_line":"        return inventories"},{"line_number":9853,"context_line":""},{"line_number":9854,"context_line":"    @property"},{"line_number":9855,"context_line":"    def static_traits(self) -\u003e ty.Dict[str, bool]:"}],"source_content_type":"text/x-python","patch_set":36,"id":"35736519_e6434788","line":9852,"updated":"2025-08-27 08:30:18.000000000","message":"note to reviewers : here, we\u0027re starting to report SEV-ES inventories.","commit_id":"1f8849a3f945568b213e5d5f9c220bfaaaa0ee1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a9efcf4dbbdaa36957bcd6fc56542f78812ac85d","unresolved":true,"context_lines":[{"line_number":9831,"context_line":"                \u0027reserved\u0027: 0,"},{"line_number":9832,"context_line":"                \u0027traits\u0027: [ot.HW_CPU_X86_AMD_SEV]"},{"line_number":9833,"context_line":"            }"},{"line_number":9834,"context_line":"        }"},{"line_number":9835,"context_line":""},{"line_number":9836,"context_line":"        sev_es_slots \u003d 0"},{"line_number":9837,"context_line":"        if self._host.supports_amd_sev_es:"}],"source_content_type":"text/x-python","patch_set":39,"id":"6a462652_db266f95","line":9834,"updated":"2025-08-28 17:41:02.000000000","message":"note that this imples that every host that supprpot sev_es will alwways have sev support.\n\nthat is proably ok for now but we may need to refactor this in the future.\n\nwe also dont want to report invetoes with 0 capastiy\nor an rp with inventies with no capsity.\n\nso we may want to start with\n\ninventories \u003d {}\nand then add the sev adn sev_es invetories to the map instead based on the capasity","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"249757bb2713a98404a95087e27d33e692e26dd6","unresolved":true,"context_lines":[{"line_number":9831,"context_line":"                \u0027reserved\u0027: 0,"},{"line_number":9832,"context_line":"                \u0027traits\u0027: [ot.HW_CPU_X86_AMD_SEV]"},{"line_number":9833,"context_line":"            }"},{"line_number":9834,"context_line":"        }"},{"line_number":9835,"context_line":""},{"line_number":9836,"context_line":"        sev_es_slots \u003d 0"},{"line_number":9837,"context_line":"        if self._host.supports_amd_sev_es:"}],"source_content_type":"text/x-python","patch_set":39,"id":"baa7727e_225dd0d9","line":9834,"in_reply_to":"6a462652_db266f95","updated":"2025-08-28 17:56:13.000000000","message":"My very initial plan was to handle sev and sev_es separately, but I later learned that  kernel requires sev is enabled to enable sev_es.\n\nhttps://github.com/torvalds/linux/blob/07d9df80082b8d1f37e05658371b087cb6738770/arch/x86/kvm/svm/sev.c#L2955-L2956\n\nSO /sys/module/kvm_amd/parameters/sev is false then we can safely assume sev_es is disabled.\nThis can change in the future though I tend to be stick with the current implementation to simplify the whole logic.\n\nReporting 0 capacity will be addressed by https://review.opendev.org/c/openstack/nova/+/958626","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f94eaafa854d8b77f2d421cc4b2b20043f0fc160","unresolved":false,"context_lines":[{"line_number":9831,"context_line":"                \u0027reserved\u0027: 0,"},{"line_number":9832,"context_line":"                \u0027traits\u0027: [ot.HW_CPU_X86_AMD_SEV]"},{"line_number":9833,"context_line":"            }"},{"line_number":9834,"context_line":"        }"},{"line_number":9835,"context_line":""},{"line_number":9836,"context_line":"        sev_es_slots \u003d 0"},{"line_number":9837,"context_line":"        if self._host.supports_amd_sev_es:"}],"source_content_type":"text/x-python","patch_set":39,"id":"f53e1d22_a0f686ae","line":9834,"in_reply_to":"baa7727e_225dd0d9","updated":"2025-08-28 18:20:52.000000000","message":"Acknowledged","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":37490,"name":"Sida Chen","display_name":"Sida Chen","email":"chensidaa@gmail.com","username":"sidachen","status":"Googler"},"change_message_id":"c8c15cdcc2d6a5ff22401477c669d6e760a8a846","unresolved":true,"context_lines":[{"line_number":1973,"context_line":"        if not self.supports_amd_sev:"},{"line_number":1974,"context_line":"            return self._supports_amd_sev_es"},{"line_number":1975,"context_line":""},{"line_number":1976,"context_line":"        if not self._kernel_supports_amd_sev(model\u003d\u0027sev-es\u0027):"},{"line_number":1977,"context_line":"            LOG.info(\"kernel doesn\u0027t support AMD SEV-ES\")"},{"line_number":1978,"context_line":"            return self._supports_amd_sev_es"},{"line_number":1979,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ada9cb1a_b07dbb59","line":1976,"range":{"start_line":1976,"start_character":52,"end_line":1976,"end_character":58},"updated":"2024-11-19 02:17:44.000000000","message":"In my case, the kernel device can be found in `/sys/module/kvm_amd/parameters/sev_es` and not `sev-es`. Should we rely on the libvirt domcapabilities? I think if the maxESGuests \u003d\u003d 0, it\u0027s equivalent to the hardware not supporting such type of VM encryption.\n\n  \u003cfeatures\u003e\n    \u003csev supported\u003d\u0027yes\u0027\u003e\n      \u003ccbitpos\u003e51\u003c/cbitpos\u003e\n      \u003creducedPhysBits\u003e1\u003c/reducedPhysBits\u003e\n      \u003cmaxGuests\u003e0\u003c/maxGuests\u003e\n      \u003cmaxESGuests\u003e509\u003c/maxESGuests\u003e\n      \u003ccpu0Id\u003e...\u003c/cpu0Id\u003e\n    \u003c/sev\u003e","commit_id":"e99e3ab0adfd7cebf970edb367438fb9c0a126af"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a540e8cbeb827cc9a0c82d6354024cc4f1fc73a0","unresolved":false,"context_lines":[{"line_number":1973,"context_line":"        if not self.supports_amd_sev:"},{"line_number":1974,"context_line":"            return self._supports_amd_sev_es"},{"line_number":1975,"context_line":""},{"line_number":1976,"context_line":"        if not self._kernel_supports_amd_sev(model\u003d\u0027sev-es\u0027):"},{"line_number":1977,"context_line":"            LOG.info(\"kernel doesn\u0027t support AMD SEV-ES\")"},{"line_number":1978,"context_line":"            return self._supports_amd_sev_es"},{"line_number":1979,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"216222a3_fd0f1fa9","line":1976,"range":{"start_line":1976,"start_character":52,"end_line":1976,"end_character":58},"in_reply_to":"719a251b_a28c8847","updated":"2024-12-11 16:40:30.000000000","message":"Done","commit_id":"e99e3ab0adfd7cebf970edb367438fb9c0a126af"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"cc2bb89820ae5a4c4d08f64706b30421235c296c","unresolved":true,"context_lines":[{"line_number":1973,"context_line":"        if not self.supports_amd_sev:"},{"line_number":1974,"context_line":"            return self._supports_amd_sev_es"},{"line_number":1975,"context_line":""},{"line_number":1976,"context_line":"        if not self._kernel_supports_amd_sev(model\u003d\u0027sev-es\u0027):"},{"line_number":1977,"context_line":"            LOG.info(\"kernel doesn\u0027t support AMD SEV-ES\")"},{"line_number":1978,"context_line":"            return self._supports_amd_sev_es"},{"line_number":1979,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"719a251b_a28c8847","line":1976,"range":{"start_line":1976,"start_character":52,"end_line":1976,"end_character":58},"in_reply_to":"ada9cb1a_b07dbb59","updated":"2024-11-19 02:42:17.000000000","message":"I double-checked my env and confirmed that sev_es is the correct name. Thanks for catching it.\n\nWe can\u0027t rely on libvirt\u0027s API because max values are exposed even if the SEV-ES is not enabled in the kvm_amd module.","commit_id":"e99e3ab0adfd7cebf970edb367438fb9c0a126af"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"206f5dfcedaff48ed3d985ba6fa76324c264b214","unresolved":true,"context_lines":[{"line_number":96,"context_line":"    # we intentionally ignore \u0027$XDG_CONFIG_HOME/qemu/firmware\u0027"},{"line_number":97,"context_line":"]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"MIN_QEMU_SEV_ES_VERSION \u003d (8, 0, 0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def _get_loaders():"}],"source_content_type":"text/x-python","patch_set":39,"id":"a184b5d3_9098a7f2","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":35},"updated":"2025-08-28 18:07:17.000000000","message":"This can be removed because now nova requires libvirt \u003e 8.0.0 . I\u0027ll propose a follow-up for this.","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"fca5bd6a5c7708a0f6977546bfe751898aa16257","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    # we intentionally ignore \u0027$XDG_CONFIG_HOME/qemu/firmware\u0027"},{"line_number":97,"context_line":"]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"MIN_QEMU_SEV_ES_VERSION \u003d (8, 0, 0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def _get_loaders():"}],"source_content_type":"text/x-python","patch_set":39,"id":"49a6b72a_89e5ca95","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":35},"in_reply_to":"a184b5d3_9098a7f2","updated":"2025-08-28 18:08:50.000000000","message":"Ignore this. MIN_QEMU_VERSION is still 6.2.0 . I was confused by MIN_LIBVIRT_VERSION which is 8.0.0","commit_id":"6c0a689d80d780683d98a63d71dd2c1e0061fc2d"}]}
