)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"363dc19a1df97061fdb1e442c3dbdca064d8357f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fe0d907f_47699327","updated":"2025-09-25 16:41:52.000000000","message":"recheck CI did not run","commit_id":"b0490f219a74be41cb74856403ec8af5fb1d63ba"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3c7f8cc63d34c49894105194146e619febc90b9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"fe5202c2_8d2c3e5c","updated":"2025-10-01 21:02:56.000000000","message":"recheck dep updated","commit_id":"a9e7c5dc73904b0f60d145d10edcb9d20dfc2b74"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3a5a72dd54714d3490dbb4486d499fce55076ef1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"921c887c_6f94940d","updated":"2025-11-18 17:16:54.000000000","message":"recheck https://review.opendev.org/c/openstack/tempest/+/966101 has merged","commit_id":"547ccaa7d8f4a9ae99271f9e0c241c40a73517df"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"1f8acbf3_509159ba","updated":"2026-02-27 21:18:39.000000000","message":"overall test lgtm but a few comments online. Also, can you point me the job where the vtpm is enabled?","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"cc594cdd70b9b903b8b7dcb6b31b9f7736e3daf9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"73241076_9984c5a0","updated":"2026-02-25 15:47:43.000000000","message":"recheck","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"686138c78e6ec4222fedb2b9391d764efcf376de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"cb290e16_61fe2e48","updated":"2026-02-27 00:51:46.000000000","message":"recheck --2026-02-25 23:13:50--  (try: 3)  https://github.com/etcd-io/etcd/releases/download/v3.5.21/etcd-v3.5.21-linux-amd64.tar.gz\nConnecting to github.com (github.com)|140.82.112.3|:443... connected.\nHTTP request sent, awaiting response... 500 Internal Server Error\nGiving up.","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"100b54d1451d9664c5bd255edb7b77ac85ba92d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"ad2fe3cc_a8e1b186","updated":"2026-02-25 22:51:22.000000000","message":"recheck tempest-tox-plugin-sanity-check AttributeError: module \u0027testtools\u0027 has no attribute \u0027try_import\u0027","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"f8bd736a1596e3362253a234bd7170d696a600ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"2b3e1cfc_6ae28448","updated":"2026-03-06 13:04:41.000000000","message":"Code is well written and commented. LGTM","commit_id":"dc4cd2494375cb6dd97137eddab99cdbc632bc41"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb4a7f8e194971ce3d92834a453bb8cde56e9077","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"b81ff277_ed6665fd","updated":"2026-03-04 02:36:11.000000000","message":"Testing this here: https://review.opendev.org/c/openstack/nova/+/978841","commit_id":"dc4cd2494375cb6dd97137eddab99cdbc632bc41"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e9ee1ff371a088d4e45a28292d4abe01983758ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ea929378_b89541c2","updated":"2026-03-04 19:08:18.000000000","message":"thanks for updates, lgtm, test passing in nova job \n\nhttps://zuul.opendev.org/t/openstack/build/1f2b0093ed4c43f59af55dfd0cf347f9/log/job-output.txt#34899-34906\n\nWaiting for devstack change to merge before +w so that we have all things ready for the new job running these testgs https://review.opendev.org/c/openstack/devstack/+/958254","commit_id":"dc4cd2494375cb6dd97137eddab99cdbc632bc41"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bfd4f0bafbd305b2160be66744524d2fd8a31315","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"6eb76466_18fe935a","updated":"2026-03-16 15:00:18.000000000","message":"Just a couple questions and a suggestion but looks good to me otherwise","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"61cb6684b39ed37fd166f894457b54e389883bba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"e05a9303_66b81968","updated":"2026-03-17 00:02:10.000000000","message":"I added asserts for secret payload expected access and the latest test results will be able to be seen here in the nova-vtpm job once Zuul posts the results:\n\nhttps://review.opendev.org/c/openstack/nova/+/978841","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"2ffbcdf887ad1ad625d0d8bb67c5c41596b3b17a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"1673110a_061adfb6","updated":"2026-03-17 14:24:09.000000000","message":"I used claude to help review this PR.  Some is copy paste and some is my own additions.  Please take these suggestions with a grain of salt.  I am getting used to performing these code reviews and this is a new feature/area to me.  Feel free to provide feedback in comments or in another fashion.  Thank you 😊","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"539762f21da84a11c3819d4a9d21e5e763f4937f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"44edf3f8_e15aa6a0","updated":"2026-03-17 19:07:15.000000000","message":"lgtm, test running fine https://zuul.opendev.org/t/openstack/build/6ee1ad4ed1a94827af938e0f19142e64/log/job-output.txt#34688\n\nHolding approval as Jason pointed out one incomplete comment https://review.opendev.org/c/openstack/tempest/+/957475/comment/d82e5e70_544a6118/","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7871f35451357094da2385c33c387d16ad9441ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"93e08bbd_1e70867f","in_reply_to":"1673110a_061adfb6","updated":"2026-03-17 19:14:08.000000000","message":"Hi, thanks for the transparency. I have replied to the comments inline.\n\nTBH most of the things the AI generated come across as nitpicking and low effort from the generator side meanwhile being higher effort for the author to respond to it on the receiving side.\n\nNormally, when human reviewers comment, they will preface the comment with \"Nit: $thing\" or similar to make it clear they noticed something that isn\u0027t wrong but might be nicer if written differently. In my experience it\u0027s usually best to focus on things that are actually wrong in a code review and keep it distinct from what is \"nice to have\". It\u0027s a much better UX, at least for me.\n\nSo, my suggestion would be to review what the AI generated a bit more carefully and try to be mindful of the cost to value ratio of each item.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"71bdc1c2d7acad99c8f244dad455094b657885bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"af6cb79b_c755cfdc","updated":"2026-03-18 12:49:49.000000000","message":"Thank you for your feedback and patience. fwiw going forward I will be more selective and word things differently in my use of AI code review tooling.","commit_id":"744da46519a1dd1a34bc4623811485cdab5d41fc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"121328d0e4e4dfd7ee28a561153a0275d0ebe7fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"7d3232c1_803de02b","updated":"2026-03-18 21:06:04.000000000","message":"thanks, all good here. test passing in vTPM job. let\u0027s merge it.\n\nhttps://ee4ee966b92d55ec0885-e7631c5842b30279943de651c580e67f.ssl.cf2.rackcdn.com/openstack/82adf7b225984621891eae9f930ba6ab/testr_results.html","commit_id":"744da46519a1dd1a34bc4623811485cdab5d41fc"}],"tempest/api/compute/admin/test_live_migration.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7dd5759891d01b7a08d8d32245b47e1484300677","unresolved":true,"context_lines":[{"line_number":770,"context_line":"        # that way unable to be changed by a resize flavor. Theoretically it"},{"line_number":771,"context_line":"        # could be changed by a rebuild to an image with the"},{"line_number":772,"context_line":"        # hw_tpm_secret_security image property set however."},{"line_number":773,"context_line":"        ex \u003d self.assertRaises("},{"line_number":774,"context_line":"            lib_exceptions.BadRequest,"},{"line_number":775,"context_line":"            self.resize_server, server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":776,"context_line":"        msg \u003d (\u0027Flavor %s has hw:tpm_secret_security explicitly set to host, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"5ff1df4c_73384f87","line":773,"range":{"start_line":773,"start_character":0,"end_line":773,"end_character":31},"updated":"2025-10-01 16:44:01.000000000","message":"These need to not be assertRaises() because the error will happen asynchronously in nova-compute, we won\u0027t see it from the API.","commit_id":"30b94c5bc65eca3ddb38d3a174cd8210b82e29d4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8b270d367b42060fdfe2e3e1e2758e7ce96811e5","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        # that way unable to be changed by a resize flavor. Theoretically it"},{"line_number":771,"context_line":"        # could be changed by a rebuild to an image with the"},{"line_number":772,"context_line":"        # hw_tpm_secret_security image property set however."},{"line_number":773,"context_line":"        ex \u003d self.assertRaises("},{"line_number":774,"context_line":"            lib_exceptions.BadRequest,"},{"line_number":775,"context_line":"            self.resize_server, server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":776,"context_line":"        msg \u003d (\u0027Flavor %s has hw:tpm_secret_security explicitly set to host, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"653b2ced_4983c085","line":773,"range":{"start_line":773,"start_character":0,"end_line":773,"end_character":31},"in_reply_to":"5ff1df4c_73384f87","updated":"2025-10-02 21:00:38.000000000","message":"Done","commit_id":"30b94c5bc65eca3ddb38d3a174cd8210b82e29d4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":false,"context_lines":[{"line_number":579,"context_line":"    def skip_checks(cls):"},{"line_number":580,"context_line":"        super().skip_checks()"},{"line_number":581,"context_line":"        skip_msgs \u003d []"},{"line_number":582,"context_line":"        if (\u0027barbican\u0027 in CONF.service_available and"},{"line_number":583,"context_line":"                not CONF.service_available.barbican):"},{"line_number":584,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":585,"context_line":"        if not CONF.compute_feature_enabled.vtpm:"},{"line_number":586,"context_line":"            skip_msgs.append(\u0027vTPM is not enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1b12cc47_ad869b9f","line":583,"range":{"start_line":582,"start_character":0,"end_line":583,"end_character":53},"updated":"2026-02-27 21:18:39.000000000","message":"++, in their devstack plugin set this so we are good in upstream CI https://github.com/openstack/barbican/blob/bbc7d50b3640d13d0ae34d04135066703d4fb62f/devstack/lib/tempest#L3","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        service_clients \u003d clients.ServiceClients(cls.os_primary.credentials,"},{"line_number":600,"context_line":"                                                 cls.auth_uri)"},{"line_number":601,"context_line":"        # The barbican-tempest-plugin contains the client for the secrets API."},{"line_number":602,"context_line":"        if not hasattr(service_clients, \u0027secret_v1\u0027):"},{"line_number":603,"context_line":"            raise cls.skipException("},{"line_number":604,"context_line":"                \u0027%s skipped as barbican-tempest-plugin is not installed\u0027 %"},{"line_number":605,"context_line":"                cls.__name__)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        cls.os_primary.secrets_client \u003d service_clients.secret_v1.SecretClient("},{"line_number":608,"context_line":"            service\u003d\u0027key-manager\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"077e5479_7fb8e869","line":605,"range":{"start_line":602,"start_character":0,"end_line":605,"end_character":29},"updated":"2026-02-27 21:18:39.000000000","message":"++, barbican tempest plugin register this client so if that is installed then client should be available https://github.com/openstack/barbican-tempest-plugin/blob/82a83c0c759e0cc168022bc03ca3461fe3417358/barbican_tempest_plugin/plugin.py#L70\n\nI will add a interface to detect the registered client but for now this will work.","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":true,"context_lines":[{"line_number":616,"context_line":"        nova_user_creds \u003d auth_provider.fill_credentials()"},{"line_number":617,"context_line":"        service_clients \u003d clients.ServiceClients(nova_user_creds,"},{"line_number":618,"context_line":"                                                 cls.auth_uri)"},{"line_number":619,"context_line":"        cls.nova_user_secrets_client \u003d service_clients.secret_v1.SecretClient("},{"line_number":620,"context_line":"            service\u003d\u0027key-manager\u0027)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    @classmethod"},{"line_number":623,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":26,"id":"2dc26970_0d7ab76a","line":620,"range":{"start_line":619,"start_character":0,"end_line":620,"end_character":34},"updated":"2026-02-27 21:18:39.000000000","message":"where this is used? I think we should not create the nova service user here which is more of nova internals and users (Tempest) should not access things via that?","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb6468c4b792b3f57bcbc7fabc07e3432a06f6a0","unresolved":true,"context_lines":[{"line_number":616,"context_line":"        nova_user_creds \u003d auth_provider.fill_credentials()"},{"line_number":617,"context_line":"        service_clients \u003d clients.ServiceClients(nova_user_creds,"},{"line_number":618,"context_line":"                                                 cls.auth_uri)"},{"line_number":619,"context_line":"        cls.nova_user_secrets_client \u003d service_clients.secret_v1.SecretClient("},{"line_number":620,"context_line":"            service\u003d\u0027key-manager\u0027)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    @classmethod"},{"line_number":623,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":26,"id":"b0ab7e93_e2acfabc","line":620,"range":{"start_line":619,"start_character":0,"end_line":620,"end_character":34},"in_reply_to":"2dc26970_0d7ab76a","updated":"2026-03-04 01:07:45.000000000","message":"Sorry, I messed up while splitting this into two patches because we did not merge \u0027deployment\u0027 mode. This needs to move to the patch above. I\u0027ll fix it.","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb4a7f8e194971ce3d92834a453bb8cde56e9077","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        nova_user_creds \u003d auth_provider.fill_credentials()"},{"line_number":617,"context_line":"        service_clients \u003d clients.ServiceClients(nova_user_creds,"},{"line_number":618,"context_line":"                                                 cls.auth_uri)"},{"line_number":619,"context_line":"        cls.nova_user_secrets_client \u003d service_clients.secret_v1.SecretClient("},{"line_number":620,"context_line":"            service\u003d\u0027key-manager\u0027)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    @classmethod"},{"line_number":623,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":26,"id":"969d9653_ef69f210","line":620,"range":{"start_line":619,"start_character":0,"end_line":620,"end_character":34},"in_reply_to":"b0ab7e93_e2acfabc","updated":"2026-03-04 02:36:11.000000000","message":"Done","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":true,"context_lines":[{"line_number":630,"context_line":"        # Refer to the user_id of the non-admin user."},{"line_number":631,"context_line":"        cls.non_admin_user_id \u003d cls.os_primary.credentials.user_id"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def _assert_secret_found(self, secrets_client, secret_uuid):"},{"line_number":634,"context_line":"        # This will raise if the secret is not found."},{"line_number":635,"context_line":"        secrets_client.get_secret_metadata(secret_uuid)"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def _assert_secret_not_found(self, secrets_client, secret_uuid):"},{"line_number":638,"context_line":"        self.assertRaises(lib_exceptions.NotFound,"},{"line_number":639,"context_line":"                          secrets_client.get_secret_metadata, secret_uuid)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_check(self, server, secrets_client, expected_creator_id):"},{"line_number":642,"context_line":"        \"\"\"Check that the secret status and ownership match what we expect\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"c2a1da52_eb1b442d","line":639,"range":{"start_line":633,"start_character":0,"end_line":639,"end_character":74},"updated":"2026-02-27 21:18:39.000000000","message":"these are not used anywhere","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb6468c4b792b3f57bcbc7fabc07e3432a06f6a0","unresolved":true,"context_lines":[{"line_number":630,"context_line":"        # Refer to the user_id of the non-admin user."},{"line_number":631,"context_line":"        cls.non_admin_user_id \u003d cls.os_primary.credentials.user_id"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def _assert_secret_found(self, secrets_client, secret_uuid):"},{"line_number":634,"context_line":"        # This will raise if the secret is not found."},{"line_number":635,"context_line":"        secrets_client.get_secret_metadata(secret_uuid)"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def _assert_secret_not_found(self, secrets_client, secret_uuid):"},{"line_number":638,"context_line":"        self.assertRaises(lib_exceptions.NotFound,"},{"line_number":639,"context_line":"                          secrets_client.get_secret_metadata, secret_uuid)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_check(self, server, secrets_client, expected_creator_id):"},{"line_number":642,"context_line":"        \"\"\"Check that the secret status and ownership match what we expect\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"d2a32828_9f2cde98","line":639,"range":{"start_line":633,"start_character":0,"end_line":639,"end_character":74},"in_reply_to":"c2a1da52_eb1b442d","updated":"2026-03-04 01:07:45.000000000","message":"Thanks, I\u0027ll fix.","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb4a7f8e194971ce3d92834a453bb8cde56e9077","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        # Refer to the user_id of the non-admin user."},{"line_number":631,"context_line":"        cls.non_admin_user_id \u003d cls.os_primary.credentials.user_id"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def _assert_secret_found(self, secrets_client, secret_uuid):"},{"line_number":634,"context_line":"        # This will raise if the secret is not found."},{"line_number":635,"context_line":"        secrets_client.get_secret_metadata(secret_uuid)"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def _assert_secret_not_found(self, secrets_client, secret_uuid):"},{"line_number":638,"context_line":"        self.assertRaises(lib_exceptions.NotFound,"},{"line_number":639,"context_line":"                          secrets_client.get_secret_metadata, secret_uuid)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_check(self, server, secrets_client, expected_creator_id):"},{"line_number":642,"context_line":"        \"\"\"Check that the secret status and ownership match what we expect\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"98145959_99d17938","line":639,"range":{"start_line":633,"start_character":0,"end_line":639,"end_character":74},"in_reply_to":"d2a32828_9f2cde98","updated":"2026-03-04 02:36:11.000000000","message":"Done","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":true,"context_lines":[{"line_number":654,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":655,"context_line":"        # it from the \u0027secret_ref\u0027. Format example:"},{"line_number":656,"context_line":"        # http://192.168.56.11/key-manager/v1/secrets/3016223a-b41f-4769-b044-71ba2de1f2b6"},{"line_number":657,"context_line":"        return secrets[0][\u0027secret_ref\u0027][-36:]"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    def _create_flavor(self, ram\u003d64, vcpus\u003d2, disk\u003d1, extra_specs\u003dNone):"},{"line_number":660,"context_line":"        flavor \u003d self.create_flavor(ram, vcpus, disk)"}],"source_content_type":"text/x-python","patch_set":26,"id":"315acc82_469f1006","line":657,"range":{"start_line":657,"start_character":39,"end_line":657,"end_character":45},"updated":"2026-02-27 21:18:39.000000000","message":"it still include the \u0027secrets\u0027 secrets/3016223a-b41f-4769-b044-71ba2de1f2b6 you want to cut that also and just return uuid?","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb6468c4b792b3f57bcbc7fabc07e3432a06f6a0","unresolved":true,"context_lines":[{"line_number":654,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":655,"context_line":"        # it from the \u0027secret_ref\u0027. Format example:"},{"line_number":656,"context_line":"        # http://192.168.56.11/key-manager/v1/secrets/3016223a-b41f-4769-b044-71ba2de1f2b6"},{"line_number":657,"context_line":"        return secrets[0][\u0027secret_ref\u0027][-36:]"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    def _create_flavor(self, ram\u003d64, vcpus\u003d2, disk\u003d1, extra_specs\u003dNone):"},{"line_number":660,"context_line":"        flavor \u003d self.create_flavor(ram, vcpus, disk)"}],"source_content_type":"text/x-python","patch_set":26,"id":"ad9e31f1_77e9b06f","line":657,"range":{"start_line":657,"start_character":39,"end_line":657,"end_character":45},"in_reply_to":"315acc82_469f1006","updated":"2026-03-04 01:07:45.000000000","message":"It should be cutting only the UUID i.e. last 36 chars (at least that is what it shows in my testing) for example:\n\n```\n(.venv) ubuntu@noble:~/nova$ python\nPython 3.12.3 (main, Jan 22 2026, 20:57:42) [GCC 13.3.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e s \u003d \u0027http://192.168.56.11/key-manager/v1/secrets/3016223a-b41f-4769-b044-71ba2de1f2b6\u0027\n\u003e\u003e\u003e s[-36:]\n\u00273016223a-b41f-4769-b044-71ba2de1f2b6\u0027\n```\n\nAre you seeing a different behavior?","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3c9bb02f6890fb24ac46a3a7c5ee44df729d0027","unresolved":false,"context_lines":[{"line_number":654,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":655,"context_line":"        # it from the \u0027secret_ref\u0027. Format example:"},{"line_number":656,"context_line":"        # http://192.168.56.11/key-manager/v1/secrets/3016223a-b41f-4769-b044-71ba2de1f2b6"},{"line_number":657,"context_line":"        return secrets[0][\u0027secret_ref\u0027][-36:]"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    def _create_flavor(self, ram\u003d64, vcpus\u003d2, disk\u003d1, extra_specs\u003dNone):"},{"line_number":660,"context_line":"        flavor \u003d self.create_flavor(ram, vcpus, disk)"}],"source_content_type":"text/x-python","patch_set":26,"id":"479e34d2_a52549da","line":657,"range":{"start_line":657,"start_character":39,"end_line":657,"end_character":45},"in_reply_to":"ad9e31f1_77e9b06f","updated":"2026-03-04 01:39:44.000000000","message":"ah my bad, I missed \u0027-\u0027. all good here.","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":true,"context_lines":[{"line_number":664,"context_line":"        return flavor"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    @decorators.idempotent_id(\u002751a5271d-7c35-47c3-9304-c58f28c35351\u0027)"},{"line_number":667,"context_line":"    def test_vtpm_live_migration_secret_security_user(self):"},{"line_number":668,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: \u00271.2\u0027,"},{"line_number":669,"context_line":"                        \u0027hw:tpm_model\u0027: \u0027tpm-tis\u0027}"},{"line_number":670,"context_line":"        vtpm_flavor \u003d self._create_flavor(extra_specs\u003dflavor_specs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"212d11eb_ce04e494","line":667,"range":{"start_line":667,"start_character":33,"end_line":667,"end_character":53},"updated":"2026-02-27 21:18:39.000000000","message":"default is user right? can you add that in comment above L668 so that it is easy to know how it is user secret security\n\n//later like you had comment in L715\n\n//later I think this is checked in the last two tests right? do we need it as a separate test?","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb6468c4b792b3f57bcbc7fabc07e3432a06f6a0","unresolved":true,"context_lines":[{"line_number":664,"context_line":"        return flavor"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    @decorators.idempotent_id(\u002751a5271d-7c35-47c3-9304-c58f28c35351\u0027)"},{"line_number":667,"context_line":"    def test_vtpm_live_migration_secret_security_user(self):"},{"line_number":668,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: \u00271.2\u0027,"},{"line_number":669,"context_line":"                        \u0027hw:tpm_model\u0027: \u0027tpm-tis\u0027}"},{"line_number":670,"context_line":"        vtpm_flavor \u003d self._create_flavor(extra_specs\u003dflavor_specs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"31191442_90f0a123","line":667,"range":{"start_line":667,"start_character":33,"end_line":667,"end_character":53},"in_reply_to":"212d11eb_ce04e494","updated":"2026-03-04 01:07:45.000000000","message":"You are right, this is covered by the last two tests, so we don\u0027t really need it separate.","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bb4a7f8e194971ce3d92834a453bb8cde56e9077","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        return flavor"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    @decorators.idempotent_id(\u002751a5271d-7c35-47c3-9304-c58f28c35351\u0027)"},{"line_number":667,"context_line":"    def test_vtpm_live_migration_secret_security_user(self):"},{"line_number":668,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: \u00271.2\u0027,"},{"line_number":669,"context_line":"                        \u0027hw:tpm_model\u0027: \u0027tpm-tis\u0027}"},{"line_number":670,"context_line":"        vtpm_flavor \u003d self._create_flavor(extra_specs\u003dflavor_specs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"13019546_f235d019","line":667,"range":{"start_line":667,"start_character":33,"end_line":667,"end_character":53},"in_reply_to":"31191442_90f0a123","updated":"2026-03-04 02:36:11.000000000","message":"Done","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7401f4a81c07cbbc0616174fcd4d6a9a948781cc","unresolved":false,"context_lines":[{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    @decorators.idempotent_id(\u0027d2108f87-a8d7-4cc6-9b05-40258a28c8b4\u0027)"},{"line_number":714,"context_line":"    def test_vtpm_live_migration_opt_in_via_resize_host(self):"},{"line_number":715,"context_line":"        # Create a flavor with TPM (secret security should default to \u0027user\u0027)"},{"line_number":716,"context_line":"        vtpm_model \u003d \u0027tpm-tis\u0027"},{"line_number":717,"context_line":"        vtpm_version \u003d \u00271.2\u0027"},{"line_number":718,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: vtpm_version,"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fda9e6f_73b34475","line":715,"range":{"start_line":715,"start_character":0,"end_line":715,"end_character":77},"updated":"2026-02-27 21:18:39.000000000","message":"++","commit_id":"b741c6e388dc129250af1760e6c39bf1ba3bd0ca"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bfd4f0bafbd305b2160be66744524d2fd8a31315","unresolved":true,"context_lines":[{"line_number":646,"context_line":"        vtpm_flavor \u003d self._create_flavor(extra_specs\u003dflavor_specs)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        # Create server with vtpm device and secret security \u0027host\u0027"},{"line_number":649,"context_line":"        server \u003d self.create_test_server(flavor\u003dvtpm_flavor[\u0027id\u0027],"},{"line_number":650,"context_line":"                                         wait_until\u003d\"ACTIVE\")"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Check the vtpm secret before live migration"}],"source_content_type":"text/x-python","patch_set":28,"id":"b8465e5c_14cb06e1","line":649,"updated":"2026-03-16 15:00:18.000000000","message":"Just checking, but this will create a server in the non-admin tenant, right? So when we migrate below we\u0027ll be confirming that a user-owned instance and secret can be migrated by an admin that can\u0027t see the secret, but it works because of host mode, yeah? I guess the secret check with `self.non_admin_user_id` is the proof there.\n\nI wonder if it\u0027s a good idea to run `self._secrets_check()` with the admin creds and ensure that it fails to sort of reinforce that we\u0027re not passing because someone has just given the admin ACLs for everything?","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"61cb6684b39ed37fd166f894457b54e389883bba","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        vtpm_flavor \u003d self._create_flavor(extra_specs\u003dflavor_specs)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        # Create server with vtpm device and secret security \u0027host\u0027"},{"line_number":649,"context_line":"        server \u003d self.create_test_server(flavor\u003dvtpm_flavor[\u0027id\u0027],"},{"line_number":650,"context_line":"                                         wait_until\u003d\"ACTIVE\")"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Check the vtpm secret before live migration"}],"source_content_type":"text/x-python","patch_set":28,"id":"adcbe393_4f172f10","line":649,"in_reply_to":"81a01858_70c5c76c","updated":"2026-03-17 00:02:10.000000000","message":"Done","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9669a6cfc1be5ed682820eb6a2e226e0f4241757","unresolved":true,"context_lines":[{"line_number":646,"context_line":"        vtpm_flavor \u003d self._create_flavor(extra_specs\u003dflavor_specs)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        # Create server with vtpm device and secret security \u0027host\u0027"},{"line_number":649,"context_line":"        server \u003d self.create_test_server(flavor\u003dvtpm_flavor[\u0027id\u0027],"},{"line_number":650,"context_line":"                                         wait_until\u003d\"ACTIVE\")"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Check the vtpm secret before live migration"}],"source_content_type":"text/x-python","patch_set":28,"id":"81a01858_70c5c76c","line":649,"in_reply_to":"b8465e5c_14cb06e1","updated":"2026-03-16 18:24:55.000000000","message":"Right it will create a server in the non-admin tenant and also right we are confirming that admin user can live migrate the non-admin user\u0027s instance.\n\nSure, I think that makes sense to have another assertion to do `self._secrets_check()` with admin creds to ensure it fails. I can add that.","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bfd4f0bafbd305b2160be66744524d2fd8a31315","unresolved":true,"context_lines":[{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        # Check the vtpm secret again after live migration"},{"line_number":709,"context_line":"        after_secret_uuid \u003d self._secret_check("},{"line_number":710,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        # The secret UUID should not have changed."},{"line_number":713,"context_line":"        self.assertEqual(before_secret_uuid, after_secret_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"cef60301_2bd5dc9d","line":710,"updated":"2026-03-16 15:00:18.000000000","message":"Per above, we could also confirm that we didn\u0027t magically give the admin ACLs to the secret and that\u0027s why the migration worked.","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"61cb6684b39ed37fd166f894457b54e389883bba","unresolved":false,"context_lines":[{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        # Check the vtpm secret again after live migration"},{"line_number":709,"context_line":"        after_secret_uuid \u003d self._secret_check("},{"line_number":710,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        # The secret UUID should not have changed."},{"line_number":713,"context_line":"        self.assertEqual(before_secret_uuid, after_secret_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"da1177cc_1a185f89","line":710,"in_reply_to":"964e7888_58e32a10","updated":"2026-03-17 00:02:10.000000000","message":"Done","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9669a6cfc1be5ed682820eb6a2e226e0f4241757","unresolved":true,"context_lines":[{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        # Check the vtpm secret again after live migration"},{"line_number":709,"context_line":"        after_secret_uuid \u003d self._secret_check("},{"line_number":710,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        # The secret UUID should not have changed."},{"line_number":713,"context_line":"        self.assertEqual(before_secret_uuid, after_secret_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"964e7888_58e32a10","line":710,"in_reply_to":"cef60301_2bd5dc9d","updated":"2026-03-16 18:24:55.000000000","message":"++","commit_id":"a9e66f22f7b2a33dfd46c5d3dd63cec5551e3b75"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"2ffbcdf887ad1ad625d0d8bb67c5c41596b3b17a","unresolved":true,"context_lines":[{"line_number":577,"context_line":"    def skip_checks(cls):"},{"line_number":578,"context_line":"        super().skip_checks()"},{"line_number":579,"context_line":"        skip_msgs \u003d []"},{"line_number":580,"context_line":"        if (\u0027barbican\u0027 in CONF.service_available and"},{"line_number":581,"context_line":"                not CONF.service_available.barbican):"},{"line_number":582,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":583,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"}],"source_content_type":"text/x-python","patch_set":29,"id":"b592e797_4f715886","line":580,"updated":"2026-03-17 14:24:09.000000000","message":"This check will fail to skip if barbican is not defined in service_available (i.e., when barbican-tempest-plugin is not installed). The \u0027barbican\u0027 in CONF.service_available check will be False, so it won\u0027t add\n   the skip message.\n\n  Should be:\n  if not getattr(CONF.service_available, \u0027barbican\u0027, False):\n      skip_msgs.append(\u0027Barbican is not available\u0027)","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"71bdc1c2d7acad99c8f244dad455094b657885bb","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    def skip_checks(cls):"},{"line_number":578,"context_line":"        super().skip_checks()"},{"line_number":579,"context_line":"        skip_msgs \u003d []"},{"line_number":580,"context_line":"        if (\u0027barbican\u0027 in CONF.service_available and"},{"line_number":581,"context_line":"                not CONF.service_available.barbican):"},{"line_number":582,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":583,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"}],"source_content_type":"text/x-python","patch_set":29,"id":"6fa55b6f_47f79f03","line":580,"in_reply_to":"14acd158_f409625d","updated":"2026-03-18 12:49:49.000000000","message":"Acknowledged","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7871f35451357094da2385c33c387d16ad9441ba","unresolved":true,"context_lines":[{"line_number":577,"context_line":"    def skip_checks(cls):"},{"line_number":578,"context_line":"        super().skip_checks()"},{"line_number":579,"context_line":"        skip_msgs \u003d []"},{"line_number":580,"context_line":"        if (\u0027barbican\u0027 in CONF.service_available and"},{"line_number":581,"context_line":"                not CONF.service_available.barbican):"},{"line_number":582,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":583,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"}],"source_content_type":"text/x-python","patch_set":29,"id":"14acd158_f409625d","line":580,"in_reply_to":"3ef274e0_c0618d6f","updated":"2026-03-17 19:14:08.000000000","message":"+1 what Dan said in that this will not result in incorrect lack of test skipping. While in the scenario described, the \"Barbican is not available\" message will not be added, the \"LiveMigrationWithVTPMTest skipped as barbican-tempest-plugin is not installed\" message will be added and the tests properly skipped.\n\nThat said, some code could be consolidated. At the time I wrote this I did not realize the CONF.service_available.barbican option comes from the barbican-tempest-plugin. Which is why I have the unusual check at L600.\n\nSo, your suggested code could simplify this to remove the check at L600 and achieve the same result. So I will go ahead and do that.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"539762f21da84a11c3819d4a9d21e5e763f4937f","unresolved":true,"context_lines":[{"line_number":577,"context_line":"    def skip_checks(cls):"},{"line_number":578,"context_line":"        super().skip_checks()"},{"line_number":579,"context_line":"        skip_msgs \u003d []"},{"line_number":580,"context_line":"        if (\u0027barbican\u0027 in CONF.service_available and"},{"line_number":581,"context_line":"                not CONF.service_available.barbican):"},{"line_number":582,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":583,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"}],"source_content_type":"text/x-python","patch_set":29,"id":"d653794e_68512752","line":580,"in_reply_to":"3ef274e0_c0618d6f","updated":"2026-03-17 19:07:15.000000000","message":"If we do not check the condition \"\u0027barbican\u0027 in CONF.service_available\", then the skp msg will be confusing. Consider the case where, barbican service is available, but Barbican-tempest-plugin is not, then we should not skip with message \u0027Barbican is not available\u0027 and that is what \"\u0027barbican\u0027 in CONF.service_available\" condition handles.\n\nAs dan mentioned, L600 take care if plugin not installed and skip with correct skip msg.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e9bb370bf0980de1a937d18fdb28ab0bbee83d6","unresolved":true,"context_lines":[{"line_number":577,"context_line":"    def skip_checks(cls):"},{"line_number":578,"context_line":"        super().skip_checks()"},{"line_number":579,"context_line":"        skip_msgs \u003d []"},{"line_number":580,"context_line":"        if (\u0027barbican\u0027 in CONF.service_available and"},{"line_number":581,"context_line":"                not CONF.service_available.barbican):"},{"line_number":582,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":583,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"}],"source_content_type":"text/x-python","patch_set":29,"id":"3ef274e0_c0618d6f","line":580,"in_reply_to":"b592e797_4f715886","updated":"2026-03-17 15:10:34.000000000","message":"I don\u0027t think this is right. We\u0027re only skipping _if_ the plugin is registered _and_ the service is _disabled_ in our config for some reason. Below on L600 is where we check for the service client and skip if it\u0027s not available, which will happen if the plugin is not installed.\n\nI think this gives us the desired behavior of usually reporting that we\u0027re skipping because vtpm live migration is not requested.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"2ffbcdf887ad1ad625d0d8bb67c5c41596b3b17a","unresolved":true,"context_lines":[{"line_number":635,"context_line":"        # The decrypted secret payload is expected to be accessible."},{"line_number":636,"context_line":"        payload \u003d self._secret_get_payload(secret_uuid, secrets_client)"},{"line_number":637,"context_line":"        self.assertIsNotNone(payload)"},{"line_number":638,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":639,"context_line":"        return secret_uuid"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_get_payload(self, secret_uuid, secrets_client):"}],"source_content_type":"text/x-python","patch_set":29,"id":"d82e5e70_544a6118","line":638,"updated":"2026-03-17 14:24:09.000000000","message":"incomplete comment","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2a5d92bb4b132dbc2f1e94d4cb18df524ea0dcbf","unresolved":false,"context_lines":[{"line_number":635,"context_line":"        # The decrypted secret payload is expected to be accessible."},{"line_number":636,"context_line":"        payload \u003d self._secret_get_payload(secret_uuid, secrets_client)"},{"line_number":637,"context_line":"        self.assertIsNotNone(payload)"},{"line_number":638,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":639,"context_line":"        return secret_uuid"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_get_payload(self, secret_uuid, secrets_client):"}],"source_content_type":"text/x-python","patch_set":29,"id":"9cf6374b_5cd7a2dc","line":638,"in_reply_to":"a6d6d3d3_131b44dd","updated":"2026-03-17 20:24:22.000000000","message":"Done","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"539762f21da84a11c3819d4a9d21e5e763f4937f","unresolved":true,"context_lines":[{"line_number":635,"context_line":"        # The decrypted secret payload is expected to be accessible."},{"line_number":636,"context_line":"        payload \u003d self._secret_get_payload(secret_uuid, secrets_client)"},{"line_number":637,"context_line":"        self.assertIsNotNone(payload)"},{"line_number":638,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":639,"context_line":"        return secret_uuid"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_get_payload(self, secret_uuid, secrets_client):"}],"source_content_type":"text/x-python","patch_set":29,"id":"c7d31c98_d11b9d86","line":638,"in_reply_to":"d82e5e70_544a6118","updated":"2026-03-17 19:07:15.000000000","message":"++, I think this was mixed up in the comment above.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7871f35451357094da2385c33c387d16ad9441ba","unresolved":true,"context_lines":[{"line_number":635,"context_line":"        # The decrypted secret payload is expected to be accessible."},{"line_number":636,"context_line":"        payload \u003d self._secret_get_payload(secret_uuid, secrets_client)"},{"line_number":637,"context_line":"        self.assertIsNotNone(payload)"},{"line_number":638,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":639,"context_line":"        return secret_uuid"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_get_payload(self, secret_uuid, secrets_client):"}],"source_content_type":"text/x-python","patch_set":29,"id":"a6d6d3d3_131b44dd","line":638,"in_reply_to":"d82e5e70_544a6118","updated":"2026-03-17 19:14:08.000000000","message":"Ack, will fix.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"adb93cfb392e68035fa86d483254f2b6475fe97a","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        payload \u003d self._secret_get_payload(secret_uuid, secrets_client)"},{"line_number":637,"context_line":"        self.assertIsNotNone(payload)"},{"line_number":638,"context_line":"        # Return the secret UUID in case we want to use it. We have to extract"},{"line_number":639,"context_line":"        return secret_uuid"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _secret_get_payload(self, secret_uuid, secrets_client):"},{"line_number":642,"context_line":"        \"\"\"Get the secret decrypted payload for a given secret UUID."}],"source_content_type":"text/x-python","patch_set":29,"id":"c41286ac_918904fb","line":639,"updated":"2026-03-17 13:39:58.000000000","message":"Nice, looks like some extra validation for the user as well.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"2ffbcdf887ad1ad625d0d8bb67c5c41596b3b17a","unresolved":true,"context_lines":[{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    @decorators.idempotent_id(\u0027f26e8307-d865-4382-85f9-0b1c0a0ad80c\u0027)"},{"line_number":664,"context_line":"    def test_vtpm_live_migration_secret_security_host(self):"},{"line_number":665,"context_line":"        vtpm_model \u003d \u0027tpm-tis\u0027"},{"line_number":666,"context_line":"        vtpm_version \u003d \u00271.2\u0027"},{"line_number":667,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: vtpm_version,"},{"line_number":668,"context_line":"                        \u0027hw:tpm_model\u0027: vtpm_model,"}],"source_content_type":"text/x-python","patch_set":29,"id":"c6be0e43_a9a8dfe4","line":665,"updated":"2026-03-17 14:24:09.000000000","message":"Lines 665-666, 701-702, 758-759 have hardcoded values:\n  vtpm_model \u003d \u0027tpm-tis\u0027\n  vtpm_version \u003d \u00271.2\u0027\n\n  These are repeated across three tests. Consider making them class-level constants:\n  TPM_MODEL \u003d \u0027tpm-tis\u0027\n  TPM_VERSION \u003d \u00271.2\u0027","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"e67e4b0a28012b9c63d0238aff39ad7abd560803","unresolved":false,"context_lines":[{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    @decorators.idempotent_id(\u0027f26e8307-d865-4382-85f9-0b1c0a0ad80c\u0027)"},{"line_number":664,"context_line":"    def test_vtpm_live_migration_secret_security_host(self):"},{"line_number":665,"context_line":"        vtpm_model \u003d \u0027tpm-tis\u0027"},{"line_number":666,"context_line":"        vtpm_version \u003d \u00271.2\u0027"},{"line_number":667,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: vtpm_version,"},{"line_number":668,"context_line":"                        \u0027hw:tpm_model\u0027: vtpm_model,"}],"source_content_type":"text/x-python","patch_set":29,"id":"b7d941f7_4b8f0e5e","line":665,"in_reply_to":"5a5c2da1_c17aaec7","updated":"2026-03-17 20:37:40.000000000","message":"sounds good","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7871f35451357094da2385c33c387d16ad9441ba","unresolved":true,"context_lines":[{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    @decorators.idempotent_id(\u0027f26e8307-d865-4382-85f9-0b1c0a0ad80c\u0027)"},{"line_number":664,"context_line":"    def test_vtpm_live_migration_secret_security_host(self):"},{"line_number":665,"context_line":"        vtpm_model \u003d \u0027tpm-tis\u0027"},{"line_number":666,"context_line":"        vtpm_version \u003d \u00271.2\u0027"},{"line_number":667,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: vtpm_version,"},{"line_number":668,"context_line":"                        \u0027hw:tpm_model\u0027: vtpm_model,"}],"source_content_type":"text/x-python","patch_set":29,"id":"5a5c2da1_c17aaec7","line":665,"in_reply_to":"6f8d52c9_5e26aa7c","updated":"2026-03-17 19:14:08.000000000","message":"Yeah, I think it\u0027s a tradeoff. Hiding repetition vs making it easy to see what\u0027s being used per test. I don\u0027t remember why I used variables for this though, probably thought I would need to test different combinations or something but didn\u0027t end up doing it.\n\nAnd I agree, for test code hard-coding stuff like this often keeps individual tests more stable over time as more tests are added and people change surrounding code.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"90883803c4237339f7bec7eeb8d86a9765c30ff1","unresolved":true,"context_lines":[{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    @decorators.idempotent_id(\u0027f26e8307-d865-4382-85f9-0b1c0a0ad80c\u0027)"},{"line_number":664,"context_line":"    def test_vtpm_live_migration_secret_security_host(self):"},{"line_number":665,"context_line":"        vtpm_model \u003d \u0027tpm-tis\u0027"},{"line_number":666,"context_line":"        vtpm_version \u003d \u00271.2\u0027"},{"line_number":667,"context_line":"        flavor_specs \u003d {\u0027hw:tpm_version\u0027: vtpm_version,"},{"line_number":668,"context_line":"                        \u0027hw:tpm_model\u0027: vtpm_model,"}],"source_content_type":"text/x-python","patch_set":29,"id":"6f8d52c9_5e26aa7c","line":665,"in_reply_to":"c6be0e43_a9a8dfe4","updated":"2026-03-17 14:44:03.000000000","message":"Other tests in this file may use other values later, and it\u0027s also best (IMHO) to not make these constants because changing them will affect a bunch of tests that we want to be consistent and deterministic forever. This is test code, not runtime code, so some hard-coding of values is actually a feature.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"2ffbcdf887ad1ad625d0d8bb67c5c41596b3b17a","unresolved":true,"context_lines":[{"line_number":724,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        # Resize to the new flavor and confirm it."},{"line_number":727,"context_line":"        self.resize_server(server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Check the vtpm secret again after resize."},{"line_number":730,"context_line":"        after_secret_uuid \u003d self._secret_check("}],"source_content_type":"text/x-python","patch_set":29,"id":"75da3595_27bc99d5","line":727,"updated":"2026-03-17 14:24:09.000000000","message":"- Line 727: Uses self.resize_server(server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027]) which automatically confirms the resize\n\n  In test_vtpm_live_migration_opt_in_via_resize_host_and_revert:\n  - Lines 784-788: Manually calls resize_server and waits for VERIFY_RESIZE without confirming\n\n  This is inconsistent. why are we doing it differently in these two places?  Is that on purpose?\n  \n  suggestion: The second test needs the manual approach because it\u0027s testing revert, but the first test should also use the manual approach for consistency, OR add a comment explaining why it\n  auto-confirms?","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7871f35451357094da2385c33c387d16ad9441ba","unresolved":true,"context_lines":[{"line_number":724,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        # Resize to the new flavor and confirm it."},{"line_number":727,"context_line":"        self.resize_server(server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Check the vtpm secret again after resize."},{"line_number":730,"context_line":"        after_secret_uuid \u003d self._secret_check("}],"source_content_type":"text/x-python","patch_set":29,"id":"f54db22f_fcba0cd0","line":727,"in_reply_to":"3fb39f74_6ae4dc2a","updated":"2026-03-17 19:14:08.000000000","message":"Yeah I mean ... self.resize_server is the canonical Tempest helper function for some majority % of tests that want to resize a server. The only reason I did it manually for revert is because I had to do it manually for revert.\n\nI guess this is another demonstration of the tradeoff of avoiding repetition vs making things more explicit/obvious.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"539762f21da84a11c3819d4a9d21e5e763f4937f","unresolved":true,"context_lines":[{"line_number":724,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        # Resize to the new flavor and confirm it."},{"line_number":727,"context_line":"        self.resize_server(server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Check the vtpm secret again after resize."},{"line_number":730,"context_line":"        after_secret_uuid \u003d self._secret_check("}],"source_content_type":"text/x-python","patch_set":29,"id":"3ebe5b57_1172a847","line":727,"in_reply_to":"3fb39f74_6ae4dc2a","updated":"2026-03-17 19:07:15.000000000","message":"Yeah, I am not sure the consistency suggestion is good here, since the test scopes are different and at different stages of the resize operation.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"90883803c4237339f7bec7eeb8d86a9765c30ff1","unresolved":true,"context_lines":[{"line_number":724,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        # Resize to the new flavor and confirm it."},{"line_number":727,"context_line":"        self.resize_server(server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Check the vtpm secret again after resize."},{"line_number":730,"context_line":"        after_secret_uuid \u003d self._secret_check("}],"source_content_type":"text/x-python","patch_set":29,"id":"3fb39f74_6ae4dc2a","line":727,"in_reply_to":"75da3595_27bc99d5","updated":"2026-03-17 14:44:03.000000000","message":"\"Why it\u0027s autoconfirmed\" is implied in the test and the intent to auto-confirm is present in the comment above. A human should be able to see that this is testing the case where resize is performed (i.e. confirmed). There\u0027s no need to make it manual \"for consistency\" because the test infrastructure has auto-confirm built in for a reason. If you look at other tests that involve resize where we\u0027re testing that something works after a successful/completed resize, you\u0027ll find a similar pattern.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"e67e4b0a28012b9c63d0238aff39ad7abd560803","unresolved":false,"context_lines":[{"line_number":724,"context_line":"            server, self.os_primary.secrets_client, self.non_admin_user_id)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        # Resize to the new flavor and confirm it."},{"line_number":727,"context_line":"        self.resize_server(server[\u0027id\u0027], vtpm_flavor_host[\u0027id\u0027])"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Check the vtpm secret again after resize."},{"line_number":730,"context_line":"        after_secret_uuid \u003d self._secret_check("}],"source_content_type":"text/x-python","patch_set":29,"id":"9305235c_2b40ca9d","line":727,"in_reply_to":"f54db22f_fcba0cd0","updated":"2026-03-17 20:37:40.000000000","message":"Acknowledged","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2a5d92bb4b132dbc2f1e94d4cb18df524ea0dcbf","unresolved":true,"context_lines":[{"line_number":583,"context_line":"        if \u0027barbican\u0027 not in CONF.service_available:"},{"line_number":584,"context_line":"            skip_msgs.append(\u0027barbican-tempest-plugin is not installed\u0027)"},{"line_number":585,"context_line":"        elif not CONF.service_available.barbican:"},{"line_number":586,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":587,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"},{"line_number":588,"context_line":"            skip_msgs.append(\u0027vTPM live migration is not enabled\u0027)"},{"line_number":589,"context_line":"        if skip_msgs:"}],"source_content_type":"text/x-python","patch_set":30,"id":"332cb3a7_d2612336","line":586,"updated":"2026-03-17 20:24:22.000000000","message":"I have updated this part but decided to distinguish the missing attribute case vs the set to false case (as opposed to `getattr(CONF.service_available, \u0027barbican\u0027, False)`) in order to make the skip messages more helpful.","commit_id":"e06848c334ade43ab84683963d5fcf5253c23630"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"9b535951c928e5ecc234dd86773d104b9a244d0e","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        if \u0027barbican\u0027 not in CONF.service_available:"},{"line_number":584,"context_line":"            skip_msgs.append(\u0027barbican-tempest-plugin is not installed\u0027)"},{"line_number":585,"context_line":"        elif not CONF.service_available.barbican:"},{"line_number":586,"context_line":"            skip_msgs.append(\u0027Barbican is not available\u0027)"},{"line_number":587,"context_line":"        if not CONF.compute_feature_enabled.vtpm_live_migration:"},{"line_number":588,"context_line":"            skip_msgs.append(\u0027vTPM live migration is not enabled\u0027)"},{"line_number":589,"context_line":"        if skip_msgs:"}],"source_content_type":"text/x-python","patch_set":30,"id":"b9ad2cab_e4584111","line":586,"in_reply_to":"332cb3a7_d2612336","updated":"2026-03-17 20:39:09.000000000","message":"Acknowledged","commit_id":"e06848c334ade43ab84683963d5fcf5253c23630"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"121328d0e4e4dfd7ee28a561153a0275d0ebe7fa","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    def skip_checks(cls):"},{"line_number":578,"context_line":"        super().skip_checks()"},{"line_number":579,"context_line":"        skip_msgs \u003d []"},{"line_number":580,"context_line":"        # The CONF.service_available.barbican config option comes from the"},{"line_number":581,"context_line":"        # barbican-tempest-plugin, so if it is present we can assume the"},{"line_number":582,"context_line":"        # secret_v1.SecretClient is also available."},{"line_number":583,"context_line":"        if \u0027barbican\u0027 not in CONF.service_available:"},{"line_number":584,"context_line":"            skip_msgs.append(\u0027barbican-tempest-plugin is not installed\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"0ef4b893_e422e625","line":581,"range":{"start_line":580,"start_character":9,"end_line":581,"end_character":72},"updated":"2026-03-18 21:06:04.000000000","message":"++, it worked fine, test skipped for plugin not available in non vtpm live migration job\n\n{1} setUpClass (tempest.api.compute.admin.test_live_migration.LiveMigrationWithVTPMTest) ... SKIPPED: LiveMigrationWithVTPMTest skipped as barbican-tempest-plugin is not installed and vTPM live migration is not enabled","commit_id":"744da46519a1dd1a34bc4623811485cdab5d41fc"}],"tempest/config.py":[{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"2ffbcdf887ad1ad625d0d8bb67c5c41596b3b17a","unresolved":true,"context_lines":[{"line_number":641,"context_line":"                     \u0027the available roles in Nova. For example, if manager \u0027"},{"line_number":642,"context_line":"                     \u0027role is not present in the nova release then tempest \u0027"},{"line_number":643,"context_line":"                     \u0027will use old defaults role token to call nova APIs\u0027),"},{"line_number":644,"context_line":"    cfg.BoolOpt(\u0027vtpm_live_migration\u0027,"},{"line_number":645,"context_line":"                default\u003dFalse,"},{"line_number":646,"context_line":"                help\u003d\u0027Does the test environment support vTPM live migration?\u0027),"},{"line_number":647,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"d24170ec_370ef35f","line":644,"updated":"2026-03-17 14:24:09.000000000","message":"This just asks a yes/no question but doesn\u0027t explain what a user needs to have in their environment for this to be true. A more helpful description would include:\n\n  - What OpenStack services are required (e.g., \"Requires Barbican key manager service\")\n  - What Nova features/configuration are needed (e.g., \"Requires Nova configured with vTPM support\")\n  - Any compute driver requirements\n  - Possibly a minimum Nova version\n\n  For example, something like:\n  help\u003d\u0027Does the test environment support vTPM live migration? \u0027\n       \u0027Requires Nova with vTPM support, Barbican key manager service, \u0027\n       \u0027and compute nodes configured to support live migration of \u0027\n       \u0027vTPM-enabled instances.\u0027\n\n  This helps operators/testers understand what they need to configure in their cloud to enable these tests, rather than just being a simple yes/no flag.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7871f35451357094da2385c33c387d16ad9441ba","unresolved":true,"context_lines":[{"line_number":641,"context_line":"                     \u0027the available roles in Nova. For example, if manager \u0027"},{"line_number":642,"context_line":"                     \u0027role is not present in the nova release then tempest \u0027"},{"line_number":643,"context_line":"                     \u0027will use old defaults role token to call nova APIs\u0027),"},{"line_number":644,"context_line":"    cfg.BoolOpt(\u0027vtpm_live_migration\u0027,"},{"line_number":645,"context_line":"                default\u003dFalse,"},{"line_number":646,"context_line":"                help\u003d\u0027Does the test environment support vTPM live migration?\u0027),"},{"line_number":647,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"e303266e_b4b80e9c","line":644,"in_reply_to":"0346bd55_1e402221","updated":"2026-03-17 19:14:08.000000000","message":"+1 what Dan said.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"539762f21da84a11c3819d4a9d21e5e763f4937f","unresolved":true,"context_lines":[{"line_number":641,"context_line":"                     \u0027the available roles in Nova. For example, if manager \u0027"},{"line_number":642,"context_line":"                     \u0027role is not present in the nova release then tempest \u0027"},{"line_number":643,"context_line":"                     \u0027will use old defaults role token to call nova APIs\u0027),"},{"line_number":644,"context_line":"    cfg.BoolOpt(\u0027vtpm_live_migration\u0027,"},{"line_number":645,"context_line":"                default\u003dFalse,"},{"line_number":646,"context_line":"                help\u003d\u0027Does the test environment support vTPM live migration?\u0027),"},{"line_number":647,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"0400ba54_368368c9","line":644,"in_reply_to":"0346bd55_1e402221","updated":"2026-03-17 19:07:15.000000000","message":"It is difficult for Tempest to list all the required services settings in its config. That is why we keep it simple about the \u0027features flags\u0027 to tell Tempest what to run. How that feature will be configured/setup/deployed is all service-side thing, and user running Tempest should be aware of that.\n\nIf addition pointer we want to add then we can say somethign like \u0027This should be true only if Nova supports the vTPM live migration\u0027 or \u0027For more details, refer to the Nova vTPM live migration support/guide\u0027","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"90883803c4237339f7bec7eeb8d86a9765c30ff1","unresolved":true,"context_lines":[{"line_number":641,"context_line":"                     \u0027the available roles in Nova. For example, if manager \u0027"},{"line_number":642,"context_line":"                     \u0027role is not present in the nova release then tempest \u0027"},{"line_number":643,"context_line":"                     \u0027will use old defaults role token to call nova APIs\u0027),"},{"line_number":644,"context_line":"    cfg.BoolOpt(\u0027vtpm_live_migration\u0027,"},{"line_number":645,"context_line":"                default\u003dFalse,"},{"line_number":646,"context_line":"                help\u003d\u0027Does the test environment support vTPM live migration?\u0027),"},{"line_number":647,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"0346bd55_1e402221","line":644,"in_reply_to":"d24170ec_370ef35f","updated":"2026-03-17 14:44:03.000000000","message":"This follows the pattern in this file. \"The user\" in this case is an admin that enables these things if they want to test a specific thing. They know what that thing is, and they would have already had to have set that up before they would expect to run this anyway. See the many examples of this pattern in the existing options above it.","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"e67e4b0a28012b9c63d0238aff39ad7abd560803","unresolved":false,"context_lines":[{"line_number":641,"context_line":"                     \u0027the available roles in Nova. For example, if manager \u0027"},{"line_number":642,"context_line":"                     \u0027role is not present in the nova release then tempest \u0027"},{"line_number":643,"context_line":"                     \u0027will use old defaults role token to call nova APIs\u0027),"},{"line_number":644,"context_line":"    cfg.BoolOpt(\u0027vtpm_live_migration\u0027,"},{"line_number":645,"context_line":"                default\u003dFalse,"},{"line_number":646,"context_line":"                help\u003d\u0027Does the test environment support vTPM live migration?\u0027),"},{"line_number":647,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"e7909227_2b8bb1a4","line":644,"in_reply_to":"e303266e_b4b80e9c","updated":"2026-03-17 20:37:40.000000000","message":"Acknowledged","commit_id":"3615b7ab154488ac25b53f2c678da7dfbad38267"}]}
