)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"8bca56e0c42f63723459c71e2aaea67d2c44f052","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f33f7716_8b5a5287","updated":"2025-01-27 15:04:41.000000000","message":"Hi gibi,\n\nI have updated the change as per your comments, I will update functional tests asap.","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950b5af04bace92ef6e93d26aab48d5f7da304fb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5e1494b3_e81b835a","updated":"2025-01-23 09:40:24.000000000","message":"There are relevant functional test failures.","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e058220f772635e3bfe34c9de815f6ae30464713","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1edca973_7e124d58","updated":"2025-01-28 14:45:28.000000000","message":"-1","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2342e8b570ec893c76b0f44e582b6013c7d8ea7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b38b89cd_abe5da0d","updated":"2025-01-28 14:44:56.000000000","message":"Code looks OK to me. We need to fix the tests and add a release note. Then I think this is good to go.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"0c04448b6d84a7518e2906db86a91d12a3f0e1c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"db582ee7_1f5d8568","updated":"2025-01-28 17:36:38.000000000","message":"For the API document sample comments.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"e4b36ff8414fcce00ee145abe68f380a7781a4f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d6f89b1a_135d537c","updated":"2025-01-28 17:35:56.000000000","message":"The code looks good to me. The comment is for the API document contents.\n\nbtw, I\u0027m not sure I should mention another bug-ish behavior in this commit, but the rebuild action doesn\u0027t update the request_spec even though the image information is updated. Is it intended not to update the API response body?\n\nhttps://bugs.launchpad.net/nova/+bug/2088949","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d57a602cdd025a52c15c2470091baa6f0ee0340","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fa78add0_bb77809b","updated":"2025-01-28 17:11:02.000000000","message":"The functional test failures actually shows that nova returns the whole server view in the API response not just in GET /servers/details and GET /servers/{server_id} but also in POST /servers/{server_id}/action when the body is \"rebuild\". \n\nThis was missed during the spec review.\n\nAs the code modifies the server view.show() the change applies to all 3 responses. The rebuild action already has a response schema defined that what catches the change. (The other two APIs does not have response schema validation yet as far as I see).\n\nSo if the other cores agree then we need to amend the spec to describe that we will include the image properties to the rebuild response as well. Then we need to amend the response schema of the rebuild for 2.98 to allow the properties in the response. Then we need some api sample tests for the rebuild 2.98 version as well.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc385ea52a34bdf1228846a74f1e7126172d47a3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5d371355_64346fab","in_reply_to":"1f5302a3_fa744702","updated":"2025-01-29 00:04:11.000000000","message":"its part of this reveiw from november https://review.opendev.org/c/openstack/nova/+/915743/8/nova/api/openstack/compute/schemas/servers.py\n\nthat has both rebild and show since they use the same schema\n\nthis also came up in the review for adding the sechduler hints.\ni agree it makes sense ot keep the reponce the same for all 3 apis too.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"10d84968cf7acc137c7becffad265d9da0710e7e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c3abcdcc_7ca3f99d","in_reply_to":"20bf4e84_f0fde79f","updated":"2025-01-29 09:56:02.000000000","message":"The schemas for the `/server` APIs are one of the last ones. While it\u0027s written, I haven\u0027t pushed it to Gerrit yet to avoid swamping CI/having to rebase even more patches than I already do if I miss something. I\u0027ve pushed it to GitHub though, and you can find the commit [here](https://github.com/stephenfin/nova/commit/16902f04be4385c829244bacffb2bce2dc53809b). Note that this will change when I force push again (GitHub--).\n\nSean\u0027s point about this affecting rebuild too is also valid. As you\u0027ll see in that commit, we\u0027re reusing much of the schema. I\u0027ll end up having to rework things in those later patches but that\u0027s fine","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"670b600c53ba843ef60b5c6595c27b3c668e0223","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1f5302a3_fa744702","in_reply_to":"440a2f0b_098bcbb0","updated":"2025-01-28 20:52:39.000000000","message":"+1 I agree we need to make all 3 responses consistent. Nice that the func tests caught this 🙂\n\nAs for response schemas, @stephenfin@redhat.com has been working on them but I don\u0027t see ones for GET /servers/details or GET /servers/{server_id} proposed [1].\n\n[1] https://review.opendev.org/q/topic:%22openapi%22+project:openstack/nova","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8eaf264acf36a7179c3c2d47e6808c8d6abaa124","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"20bf4e84_f0fde79f","in_reply_to":"5d371355_64346fab","updated":"2025-01-29 08:10:28.000000000","message":"Cool. Thanks for the quick response. I\u0027ve proposed the spec update: https://review.opendev.org/c/openstack/nova-specs/+/940360\n\n@ratailor@redhat.com go ahead and update this patch to cover the rebuild case as described above.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a7bc28ea46a93fc24b11dee7359a3ce93fffbf9c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"74d24a74_c45d11c4","in_reply_to":"b38b89cd_abe5da0d","updated":"2025-01-28 14:46:24.000000000","message":"I forget to keep this open, so -1 is due to failing functional tests and missing release notes.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5536b7060443a1c70bb1f1f05ff3697c97ba645a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"95bd4069_3cad5978","in_reply_to":"c3abcdcc_7ca3f99d","updated":"2025-01-29 09:57:51.000000000","message":"Also, I\u0027ve already been talking with @ratailor@redhat.com about how to modify those schemas. I think he\u0027s up-to-speed now. I\u0027ve also suggested he update the contributor docs once he has done as it seems like the API contributor docs could do with more work.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"669bbeef0e8c29e892361153663596000972a9f5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"440a2f0b_098bcbb0","in_reply_to":"fa78add0_bb77809b","updated":"2025-01-28 17:53:36.000000000","message":"Yeah, I mean, it needs to always be consistent, so anywhere we return the detail view needs to be updated. +1 from me.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a7494a6dcc02d47af5bba9e75726c18e03f7a63c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4a43ad85_25a75ea6","updated":"2025-01-29 15:47:18.000000000","message":"Thanks everyone for reviews and feedback.\nI have updated the patch as per your suggestions.","commit_id":"c28d7eb9cdfe821f1013e34bb8e144c3efbdc681"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67f92cb1d7a74471df5ce8da8bb514053f1e1427","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d437710d_0a2b4cd9","updated":"2025-01-30 11:14:36.000000000","message":"I think you\u0027re missing the api-ref changes?","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"62fa4c72629db31f3799241d465e8fa374f14064","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"55c5b55c_6914dc72","in_reply_to":"d437710d_0a2b4cd9","updated":"2025-02-10 06:46:17.000000000","message":"Done","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1a51ff3a54eaea458805d4c7e5fc06c5e7d98747","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"78254c7b_ec841d13","updated":"2025-02-08 14:18:43.000000000","message":"Two nits and a comment inline. I\u0027m not sure I want to -1 over it, I want to see what others think.","commit_id":"0117138032e96b44c779cdce56ef352472d48675"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ef2716650598ca7bac76a05dca929d1c934bb196","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"44fde11c_37e0916f","updated":"2025-02-10 14:04:56.000000000","message":"PS10 was pushed while I reviewed PS9. But my comments from PS9 are still applicable to PS10","commit_id":"1de4b7706065e205c4905ec70a5aa1773b207ed3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"37ad72e5159451bb76d541641087fa00389e41fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a5152b21_23f748d5","updated":"2025-02-17 18:07:47.000000000","message":"A couple comments but nothing critical for landing.","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"60b736d131e6e8e79052d494f1be9c66d87d9feb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f354d99c_05522b45","updated":"2025-02-13 15:40:00.000000000","message":"Looks good to me. I did some testing in a local devstack.\n\n```\n$ openstack image show cirros-0.6.3-x86_64-disk\n+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| Field            | Value                                                                                                                                                                                         |\n+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| checksum         | 87617e24a5e30cb3b87fda8c0764838f                                                                                                                                                              |\n| container_format | bare                                                                                                                                                                                          |\n| created_at       | 2025-02-10T14:31:23Z                                                                                                                                                                          |\n| disk_format      | qcow2                                                                                                                                                                                         |\n| file             | /v2/images/f6b95606-af0d-451c-9347-aeb249361fd9/file                                                                                                                                          |\n| id               | f6b95606-af0d-451c-9347-aeb249361fd9                                                                                                                                                          |\n| min_disk         | 0                                                                                                                                                                                             |\n| min_ram          | 0                                                                                                                                                                                             |\n| name             | cirros-0.6.3-x86_64-disk                                                                                                                                                                      |\n| owner            | cff27e1b5a814c28a633976ff32127e1                                                                                                                                                              |\n| properties       | hw_rng_model\u003d\u0027virtio\u0027, os_hash_algo\u003d\u0027sha512\u0027,                                                                                                                                                 |\n|                  | os_hash_value\u003d\u00279a9bce0083a00939ec17c11febbfc767aa211aaa54f51e75c5a8b271a9b5637c77205a518b7a2007cb391d23cceb01e0e4e8d64832317151bc85b734b92a7be0\u0027, os_hidden\u003d\u0027False\u0027,                          |\n|                  | owner_specified.openstack.md5\u003d\u0027\u0027, owner_specified.openstack.object\u003d\u0027images/cirros-0.6.3-x86_64-disk\u0027, owner_specified.openstack.sha256\u003d\u0027\u0027                                                     |\n| protected        | False                                                                                                                                                                                         |\n| schema           | /v2/schemas/image                                                                                                                                                                             |\n| size             | 21692416                                                                                                                                                                                      |\n| status           | active                                                                                                                                                                                        |\n| tags             |                                                                                                                                                                                               |\n| updated_at       | 2025-02-13T15:34:45Z                                                                                                                                                                          |\n| virtual_size     | 117440512                                                                                                                                                                                     |\n| visibility       | public                                                                                                                                                                                        |\n+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n$ openstack server create --image cirros-0.6.3-x86_64-disk --flavor c1 --nic none vm1 --wait\n\n$ curl -s -X GET \"http://192.168.121.91/compute/v2.1/servers/detail?name\u003dvm1\" -H \"Accept: application/json\" -H \"OpenStack-API-Version: compute 2.98\" -H \"User-Agent: openstacksdk/4.3.1 keystoneauth1/5.9.1 python-requests/2.32.3 CPython/3.12.3\" -H \"X-Auth-Token: $TOKEN\" -H \"X-OpenStack-Nova-API-Version: 2.98\"  | jq\n{\n  \"servers\": [\n    {\n      \"id\": \"3864b24c-3e75-4995-a0e8-8cfd96328e3d\",\n      \"name\": \"vm1\",\n      \"status\": \"ACTIVE\",\n      \"tenant_id\": \"cff27e1b5a814c28a633976ff32127e1\",\n      \"user_id\": \"f774151cab87458fb50e1228ff2fdc4b\",\n      \"metadata\": {},\n      \"hostId\": \"93c1b79c3e9ecab91639133c7943696a9b6a2035d369471d2d706b42\",\n      \"image\": {\n        \"id\": \"f6b95606-af0d-451c-9347-aeb249361fd9\",\n        \"links\": [\n          {\n            \"rel\": \"bookmark\",\n            \"href\": \"http://192.168.121.91/compute/images/f6b95606-af0d-451c-9347-aeb249361fd9\"\n          }\n        ],\n        \"properties\": {\n          \"hw_rng_model\": \"virtio\",\n          \"owner_specified.openstack.md5\": \"\",\n          \"owner_specified.openstack.object\": \"images/cirros-0.6.3-x86_64-disk\",\n          \"owner_specified.openstack.sha256\": \"\",\n          \"min_ram\": \"0\",\n          \"min_disk\": \"1\",\n          \"disk_format\": \"qcow2\",\n          \"container_format\": \"bare\",\n          \"base_image_ref\": \"f6b95606-af0d-451c-9347-aeb249361fd9\",\n          \"hw_machine_type\": \"pc\",\n          \"hw_cdrom_bus\": \"ide\",\n          \"hw_disk_bus\": \"virtio\",\n          \"hw_input_bus\": null,\n          \"hw_pointer_model\": null,\n          \"hw_video_model\": \"virtio\",\n          \"hw_vif_model\": \"virtio\"\n        }\n      },\n      \"flavor\": {\n        \"vcpus\": 1,\n        \"ram\": 256,\n        \"disk\": 1,\n        \"ephemeral\": 0,\n        \"swap\": 0,\n        \"original_name\": \"cirros256\",\n        \"extra_specs\": {\n          \"hw_rng:allowed\": \"True\"\n        }\n      },\n      \"created\": \"2025-02-13T15:34:59Z\",\n      \"updated\": \"2025-02-13T15:35:10Z\",\n      \"addresses\": {},\n      \"accessIPv4\": \"\",\n      \"accessIPv6\": \"\",\n      \"links\": [\n        {\n          \"rel\": \"self\",\n          \"href\": \"http://192.168.121.91/compute/v2.1/servers/3864b24c-3e75-4995-a0e8-8cfd96328e3d\"\n        },\n        {\n          \"rel\": \"bookmark\",\n          \"href\": \"http://192.168.121.91/compute/servers/3864b24c-3e75-4995-a0e8-8cfd96328e3d\"\n        }\n      ],\n      \"OS-DCF:diskConfig\": \"MANUAL\",\n      \"progress\": 0,\n      \"OS-EXT-AZ:availability_zone\": \"nova\",\n      \"pinned_availability_zone\": null,\n      \"config_drive\": \"\",\n      \"key_name\": null,\n      \"OS-SRV-USG:launched_at\": \"2025-02-13T15:35:09.000000\",\n      \"OS-SRV-USG:terminated_at\": null,\n      \"OS-EXT-SRV-ATTR:host\": \"aio-tmp\",\n      \"OS-EXT-SRV-ATTR:instance_name\": \"instance-00000004\",\n      \"OS-EXT-SRV-ATTR:hypervisor_hostname\": \"aio-tmp\",\n      \"OS-EXT-SRV-ATTR:reservation_id\": \"r-s3jwkteo\",\n      \"OS-EXT-SRV-ATTR:launch_index\": 0,\n      \"OS-EXT-SRV-ATTR:hostname\": \"vm1\",\n      \"OS-EXT-SRV-ATTR:kernel_id\": \"\",\n      \"OS-EXT-SRV-ATTR:ramdisk_id\": \"\",\n      \"OS-EXT-SRV-ATTR:root_device_name\": \"/dev/vda\",\n      \"OS-EXT-SRV-ATTR:user_data\": null,\n      \"OS-EXT-STS:task_state\": null,\n      \"OS-EXT-STS:vm_state\": \"active\",\n      \"OS-EXT-STS:power_state\": 1,\n      \"os-extended-volumes:volumes_attached\": [],\n      \"locked\": false,\n      \"locked_reason\": null,\n      \"description\": null,\n      \"tags\": [],\n      \"trusted_image_certificates\": null,\n      \"host_status\": \"UP\"\n    }\n  ]\n}\n\n$ curl -s -X GET \"http://192.168.121.91/compute/v2.1/servers/3864b24c-3e75-4995-a0e8-8cfd96328e3d\" -H \"Accept: application/json\" -H \"OpenStack-API-Version: compute 2.98\" -H \"User-Agent: openstacksdk/4.3.1 keystoneauth1/5.9.1 python-requests/2.32.3 CPython/3.12.3\" -H \"X-Auth-Token: $TOKEN\" -H \"X-OpenStack-Nova-API-Version: 2.98\"  | jq\n{\n  \"server\": {\n    \"id\": \"3864b24c-3e75-4995-a0e8-8cfd96328e3d\",\n    \"name\": \"vm1\",\n    \"status\": \"ACTIVE\",\n    \"tenant_id\": \"cff27e1b5a814c28a633976ff32127e1\",\n    \"user_id\": \"f774151cab87458fb50e1228ff2fdc4b\",\n    \"metadata\": {},\n    \"hostId\": \"93c1b79c3e9ecab91639133c7943696a9b6a2035d369471d2d706b42\",\n    \"image\": {\n      \"id\": \"f6b95606-af0d-451c-9347-aeb249361fd9\",\n      \"links\": [\n        {\n          \"rel\": \"bookmark\",\n          \"href\": \"http://192.168.121.91/compute/images/f6b95606-af0d-451c-9347-aeb249361fd9\"\n        }\n      ],\n      \"properties\": {\n        \"hw_rng_model\": \"virtio\",\n        \"owner_specified.openstack.md5\": \"\",\n        \"owner_specified.openstack.object\": \"images/cirros-0.6.3-x86_64-disk\",\n        \"owner_specified.openstack.sha256\": \"\",\n        \"min_ram\": \"0\",\n        \"min_disk\": \"1\",\n        \"disk_format\": \"qcow2\",\n        \"container_format\": \"bare\",\n        \"base_image_ref\": \"f6b95606-af0d-451c-9347-aeb249361fd9\",\n        \"hw_machine_type\": \"pc\",\n        \"hw_cdrom_bus\": \"ide\",\n        \"hw_disk_bus\": \"virtio\",\n        \"hw_input_bus\": null,\n        \"hw_pointer_model\": null,\n        \"hw_video_model\": \"virtio\",\n        \"hw_vif_model\": \"virtio\"\n      }\n    },\n    \"flavor\": {\n      \"vcpus\": 1,\n      \"ram\": 256,\n      \"disk\": 1,\n      \"ephemeral\": 0,\n      \"swap\": 0,\n      \"original_name\": \"cirros256\",\n      \"extra_specs\": {\n        \"hw_rng:allowed\": \"True\"\n      }\n    },\n    \"created\": \"2025-02-13T15:34:59Z\",\n    \"updated\": \"2025-02-13T15:35:10Z\",\n    \"addresses\": {},\n    \"accessIPv4\": \"\",\n    \"accessIPv6\": \"\",\n    \"links\": [\n      {\n        \"rel\": \"self\",\n        \"href\": \"http://192.168.121.91/compute/v2.1/servers/3864b24c-3e75-4995-a0e8-8cfd96328e3d\"\n      },\n      {\n        \"rel\": \"bookmark\",\n        \"href\": \"http://192.168.121.91/compute/servers/3864b24c-3e75-4995-a0e8-8cfd96328e3d\"\n      }\n    ],\n    \"OS-DCF:diskConfig\": \"MANUAL\",\n    \"progress\": 0,\n    \"OS-EXT-AZ:availability_zone\": \"nova\",\n    \"pinned_availability_zone\": null,\n    \"config_drive\": \"\",\n    \"key_name\": null,\n    \"OS-SRV-USG:launched_at\": \"2025-02-13T15:35:09.000000\",\n    \"OS-SRV-USG:terminated_at\": null,\n    \"OS-EXT-SRV-ATTR:host\": \"aio-tmp\",\n    \"OS-EXT-SRV-ATTR:instance_name\": \"instance-00000004\",\n    \"OS-EXT-SRV-ATTR:hypervisor_hostname\": \"aio-tmp\",\n    \"OS-EXT-SRV-ATTR:reservation_id\": \"r-s3jwkteo\",\n    \"OS-EXT-SRV-ATTR:launch_index\": 0,\n    \"OS-EXT-SRV-ATTR:hostname\": \"vm1\",\n    \"OS-EXT-SRV-ATTR:kernel_id\": \"\",\n    \"OS-EXT-SRV-ATTR:ramdisk_id\": \"\",\n    \"OS-EXT-SRV-ATTR:root_device_name\": \"/dev/vda\",\n    \"OS-EXT-SRV-ATTR:user_data\": null,\n    \"OS-EXT-STS:task_state\": null,\n    \"OS-EXT-STS:vm_state\": \"active\",\n    \"OS-EXT-STS:power_state\": 1,\n    \"os-extended-volumes:volumes_attached\": [],\n    \"host_status\": \"UP\",\n    \"locked\": false,\n    \"locked_reason\": null,\n    \"description\": null,\n    \"tags\": [],\n    \"trusted_image_certificates\": null,\n    \"server_groups\": []\n  }\n}\n```","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"}],"doc/api_samples/servers/v2.98/server-get-resp.json":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"e4b36ff8414fcce00ee145abe68f380a7781a4f8","unresolved":true,"context_lines":[{"line_number":35,"context_line":"                    \"rel\": \"bookmark\""},{"line_number":36,"context_line":"                }"},{"line_number":37,"context_line":"            ],"},{"line_number":38,"context_line":"            \"properties\": {}"},{"line_number":39,"context_line":"        },"},{"line_number":40,"context_line":"        \"key_name\": null,"},{"line_number":41,"context_line":"        \"links\": ["}],"source_content_type":"application/json","patch_set":4,"id":"9bbffce3_82e86aac","line":38,"updated":"2025-01-28 17:35:56.000000000","message":"It\u0027s a sample API document published in the API reference page, so it\u0027s better to add at least one properties sample.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a7494a6dcc02d47af5bba9e75726c18e03f7a63c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                    \"rel\": \"bookmark\""},{"line_number":36,"context_line":"                }"},{"line_number":37,"context_line":"            ],"},{"line_number":38,"context_line":"            \"properties\": {}"},{"line_number":39,"context_line":"        },"},{"line_number":40,"context_line":"        \"key_name\": null,"},{"line_number":41,"context_line":"        \"links\": ["}],"source_content_type":"application/json","patch_set":4,"id":"66f78ee1_8a6518ea","line":38,"in_reply_to":"9bbffce3_82e86aac","updated":"2025-01-29 15:47:18.000000000","message":"Done","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"}],"doc/api_samples/servers/v2.98/servers-details-resp.json":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"e4b36ff8414fcce00ee145abe68f380a7781a4f8","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                        \"rel\": \"bookmark\""},{"line_number":35,"context_line":"                    }"},{"line_number":36,"context_line":"                ],"},{"line_number":37,"context_line":"                \"properties\": {}"},{"line_number":38,"context_line":"            },"},{"line_number":39,"context_line":"            \"key_name\": null,"},{"line_number":40,"context_line":"            \"links\": ["}],"source_content_type":"application/json","patch_set":4,"id":"43594cf5_c00ac7f5","line":37,"updated":"2025-01-28 17:35:56.000000000","message":"same as comment in the doc/api_samples/servers/v2.98/server-get-resp.json","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a7494a6dcc02d47af5bba9e75726c18e03f7a63c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                        \"rel\": \"bookmark\""},{"line_number":35,"context_line":"                    }"},{"line_number":36,"context_line":"                ],"},{"line_number":37,"context_line":"                \"properties\": {}"},{"line_number":38,"context_line":"            },"},{"line_number":39,"context_line":"            \"key_name\": null,"},{"line_number":40,"context_line":"            \"links\": ["}],"source_content_type":"application/json","patch_set":4,"id":"8ca8beb7_613962f8","line":37,"in_reply_to":"43594cf5_c00ac7f5","updated":"2025-01-29 15:47:18.000000000","message":"Done","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"}],"doc/api_samples/servers/v2.98/servers-list-resp.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950b5af04bace92ef6e93d26aab48d5f7da304fb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c4dd2be2_0b66dbdc","updated":"2025-01-23 09:40:24.000000000","message":"Do we need this sample file if the content is not changed?","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"8bca56e0c42f63723459c71e2aaea67d2c44f052","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0eae0e23_dd44f735","in_reply_to":"c4dd2be2_0b66dbdc","updated":"2025-01-27 15:04:41.000000000","message":"Done","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1a51ff3a54eaea458805d4c7e5fc06c5e7d98747","unresolved":true,"context_lines":[{"line_number":266,"context_line":"             ``DELETE /servers/{server_id}/shares/{share_id} which delete an"},{"line_number":267,"context_line":"             attachment."},{"line_number":268,"context_line":"    * 2.98 - Add support for returning embedded image properties in"},{"line_number":269,"context_line":"             ``server show`` and ``server list --long`` responses."},{"line_number":270,"context_line":"\"\"\""},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":8,"id":"7b40f9d1_6edc3217","line":269,"updated":"2025-02-08 14:18:43.000000000","message":"nit: and in the rebuild response","commit_id":"0117138032e96b44c779cdce56ef352472d48675"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"62fa4c72629db31f3799241d465e8fa374f14064","unresolved":false,"context_lines":[{"line_number":266,"context_line":"             ``DELETE /servers/{server_id}/shares/{share_id} which delete an"},{"line_number":267,"context_line":"             attachment."},{"line_number":268,"context_line":"    * 2.98 - Add support for returning embedded image properties in"},{"line_number":269,"context_line":"             ``server show`` and ``server list --long`` responses."},{"line_number":270,"context_line":"\"\"\""},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":8,"id":"b8954b5f_153ed2f0","line":269,"in_reply_to":"7b40f9d1_6edc3217","updated":"2025-02-10 06:46:17.000000000","message":"Done","commit_id":"0117138032e96b44c779cdce56ef352472d48675"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950b5af04bace92ef6e93d26aab48d5f7da304fb","unresolved":true,"context_lines":[{"line_number":1275,"context_line":"----"},{"line_number":1276,"context_line":""},{"line_number":1277,"context_line":"The ``server show`` and ``server list --long`` responses now include the"},{"line_number":1278,"context_line":"embedded image properties as well."}],"source_content_type":"text/x-rst","patch_set":1,"id":"de3df542_5c61d4e9","line":1278,"updated":"2025-01-23 09:40:24.000000000","message":"I would rather formulate the API history based on API resources not based on CLI output.","commit_id":"88ef3748b8caecb118f0284a39bb4958650cb904"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"8bca56e0c42f63723459c71e2aaea67d2c44f052","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"----"},{"line_number":1276,"context_line":""},{"line_number":1277,"context_line":"The ``server show`` and ``server list --long`` responses now include the"},{"line_number":1278,"context_line":"embedded image properties as well."}],"source_content_type":"text/x-rst","patch_set":1,"id":"2fa685b2_abae1a76","line":1278,"in_reply_to":"de3df542_5c61d4e9","updated":"2025-01-27 15:04:41.000000000","message":"Done","commit_id":"88ef3748b8caecb118f0284a39bb4958650cb904"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1a51ff3a54eaea458805d4c7e5fc06c5e7d98747","unresolved":true,"context_lines":[{"line_number":1278,"context_line":"under the struct at the existing ``image`` key in the response for"},{"line_number":1279,"context_line":"``GET /servers/{server_id}`` (server show) and ``GET /servers/detail``"},{"line_number":1280,"context_line":"(list server --long) APIs. Also the same is included in rebuild case of"},{"line_number":1281,"context_line":"``POST /server/{server_id}/action`` (server rebuild) API response."}],"source_content_type":"text/x-rst","patch_set":8,"id":"8accaa4a_9168a07d","line":1281,"updated":"2025-02-08 14:18:43.000000000","message":"nit: you can just continue listing the rebuild response, no need for a new sentence:\n\n  in the response for server show, list server --long,\n  and server rebuild responses","commit_id":"0117138032e96b44c779cdce56ef352472d48675"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"62fa4c72629db31f3799241d465e8fa374f14064","unresolved":false,"context_lines":[{"line_number":1278,"context_line":"under the struct at the existing ``image`` key in the response for"},{"line_number":1279,"context_line":"``GET /servers/{server_id}`` (server show) and ``GET /servers/detail``"},{"line_number":1280,"context_line":"(list server --long) APIs. Also the same is included in rebuild case of"},{"line_number":1281,"context_line":"``POST /server/{server_id}/action`` (server rebuild) API response."}],"source_content_type":"text/x-rst","patch_set":8,"id":"f337e89b_f82d4038","line":1281,"in_reply_to":"8accaa4a_9168a07d","updated":"2025-02-10 06:46:17.000000000","message":"Done","commit_id":"0117138032e96b44c779cdce56ef352472d48675"}],"nova/api/openstack/compute/schemas/servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30f1564dc0f7b09a100d3de8c06f96a8f422c703","unresolved":true,"context_lines":[{"line_number":1232,"context_line":")"},{"line_number":1233,"context_line":"rebuild_response_v298 \u003d copy.deepcopy(rebuild_response_v296)"},{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"db796db6_21cb6fdb","line":1235,"updated":"2025-02-04 17:16:13.000000000","message":"you need to define the properties key. It might be confusing as jsonschema has its own keyword called properties. But still you can define a key named properties. Example https://paste.opendev.org/show/b8Vs43sf3PThcDuMbjIn/","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3a08a8279f27f34801deb13ab35cb9c2eea53faf","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"3d225cd7_de57fdb9","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"updated":"2025-02-04 16:34:39.000000000","message":"i think you ment this `\u0027^.+$\u0027:`\n\nthis si a read only validation of properties that are defiend as fields in a nova object. addtion fo filed ot a nova object does not result in a new api microverion so the responce scema shoudl not need ot be updated either.\n\n\nim not sure what the best way to express that image can have a key called properties that is a dict but we shoudl not validate the key value pairs within the dict.\n\nperhaps we shoudl just set additionalProperties True on the image schema instead of being overaly strict here?","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a3b03bcdc4529dcbcbf19e2a04cb05c5c2f7fe7b","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"7bf288ac_ae00264f","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"in_reply_to":"13d6de55_72ef6b3e","updated":"2025-02-04 18:36:35.000000000","message":"the lenght restrction id defiend by  nova.\n\nwe limit the lenght of the keys we create in the instance_system_metadata tabel adn we prfix them with \"img_\"? i think so its the column lenght -4?\n\n\nhttps://github.com/openstack/nova/blob/master/nova/db/main/models.py#L989-L990\n\nso 251?\n\nalthoguh traits might not follow that convetion.\nso proably 255?\n\nthe value is also limisted to 255.\n\nim a little hesitent to encode that in our reqeust body schema.\n\nglance is less strict then nova and allwos image properies to be defiend that nova will not accpet including vlaues that exceed 255 and get truncated so we cant rellly look to them for guidance here.","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"60b736d131e6e8e79052d494f1be9c66d87d9feb","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"24a121c6_e1df6ae7","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"in_reply_to":"26fbeaf8_b34bb75e","updated":"2025-02-13 15:40:00.000000000","message":"@ratailor@redhat.com I have filed https://bugs.launchpad.net/nova/+bug/2098384\n\nSolution would be to change nova\u0027s DB Schema to match with Glance\u0027s. I suggest to raise this on the next PTG for discussion. (Added it to the etherpad https://etherpad.opendev.org/p/nova-2025.2-ptg)","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"76c407338bba155a61b789cae7ce624075c60e3c","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"13d6de55_72ef6b3e","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"in_reply_to":"3d225cd7_de57fdb9","updated":"2025-02-04 17:18:11.000000000","message":"discussed over IRC with Sean. Lets be strict about having a properties key, and within that having string key and string values where the string has some length limit (based on glance if the have one), and some charset limit something like [azAZ_]+","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"62fa4c72629db31f3799241d465e8fa374f14064","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"98a46d7f_5bedb391","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"in_reply_to":"7bf288ac_ae00264f","updated":"2025-02-10 06:46:17.000000000","message":"If its defined by instance_system_metadata table, do we need to impose limit on key length here ?","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dc5247d10edffc8b9a47bca1b47d6f14532213c0","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"d2dad229_db8c0c84","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"in_reply_to":"98a46d7f_5bedb391","updated":"2025-02-10 14:02:30.000000000","message":"@ratailor@redhat.com: the DB limit is not visible to the outside world. The API response schema in the other hand is part of the API contract (or it will be as soon as we add it)\n\n@smooney@redhat.com: As far as I see glance also limits the image property name length by the DB schema to 255 chars[1]. So there is probably a bug regarding image properties where 249 \u003c len(name) \u003c\u003d 255 as nova will not be able to store them with the extra \"image_\" prefix in the nova DB. \n\nFor the value there is an even bigger gap. Glance only defines it in the DB as Text, while nova also limits it to String(255).\n\nDo we want an independent bug on this?\n\nThe API response schema here can be declared as the name is 255 long even though we know that it will never be longer than 249 after we cut off the \"image_\" prefix from the name. This way if / when the independent bug is fixed we can probably keep our schema intact.\n\nHowever I don\u0027t know what to do with the schema of the value. The glance Text DB column means there is no defined limit. The nova\u0027s current String(255) is a lot stricter than that. For API expressiveness 255 would be better, but if we ever want to fix the length discrepancy between glance and nova then such a schema will need a non backward compatible change. So for future-proofness perspective not declaring a length for the value is better. \n\n// later\n\nTo make progress I suggest to:\n* file a separate bug for the length discrepancy between glance and nova\n* define the schema for the name (see my comment below) with 255 length limit and a charset limit\n* do not define a limit on the length of the value for now as even if nova limits it to 255 glance does not and we might want to fix this later without an API microversion\n\n[1]https://github.com/openstack/glance/blob/a468ac01ffa2bc8c7ce73f6be1e8b4a108b4c2cd/glance/db/sqlalchemy/models.py#L163","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"77fa7636a492e98bbb61c03135acd7a0ea710088","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027].update({"},{"line_number":1235,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":1236,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":1237,"context_line":"        \u0027^,+$\u0027: {"},{"line_number":1238,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":1239,"context_line":"            },"},{"line_number":1240,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":6,"id":"26fbeaf8_b34bb75e","line":1237,"range":{"start_line":1237,"start_character":7,"end_line":1237,"end_character":14},"in_reply_to":"d2dad229_db8c0c84","updated":"2025-02-11 10:54:45.000000000","message":"@gibizer@gmail.com Could you please file the bug as I am not sure, how to describe the bug correctly and suggest possible solution for the same.","commit_id":"9ec54ff121e6eb7866dc194605488174a32fd52c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1a51ff3a54eaea458805d4c7e5fc06c5e7d98747","unresolved":true,"context_lines":[{"line_number":1231,"context_line":"    \u0027pinned_availability_zone\u0027"},{"line_number":1232,"context_line":")"},{"line_number":1233,"context_line":"rebuild_response_v298 \u003d copy.deepcopy(rebuild_response_v296)"},{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027] \u003d {"},{"line_number":1235,"context_line":"    \u0027oneOf\u0027: ["},{"line_number":1236,"context_line":"        {"},{"line_number":1237,"context_line":"            \u0027type\u0027: \u0027string\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9d705dbb_cdb97ae6","line":1234,"updated":"2025-02-08 14:18:43.000000000","message":"OK, you\u0027re just redefining the entire `image` object from L886, presumably because we made it a `oneOf` either an empty string or a dictionary. I understand why you\u0027ve done this, I just instinctively don\u0027t like redefining things because it introduces a risk of errors and divergence. I think the following would be safer, though admittedly it\u0027s harder to understand. I have tested it, and it passed `tox -e api-samples`:\n\n    rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027][\n            \u0027oneOf\u0027][1][\u0027properties\u0027].update({\n        \u0027properties\u0027: {\n            \u0027type\u0027: \u0027object\u0027,\n            \u0027patternProperties\u0027: {\n                \u0027^.+$\u0027: {\n                    \u0027type\u0027: \u0027string\u0027,\n                },\n            },\n            \u0027additionalProperties\u0027: False,\n        },\n    })","commit_id":"0117138032e96b44c779cdce56ef352472d48675"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"62fa4c72629db31f3799241d465e8fa374f14064","unresolved":false,"context_lines":[{"line_number":1231,"context_line":"    \u0027pinned_availability_zone\u0027"},{"line_number":1232,"context_line":")"},{"line_number":1233,"context_line":"rebuild_response_v298 \u003d copy.deepcopy(rebuild_response_v296)"},{"line_number":1234,"context_line":"rebuild_response_v298[\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027][\u0027image\u0027] \u003d {"},{"line_number":1235,"context_line":"    \u0027oneOf\u0027: ["},{"line_number":1236,"context_line":"        {"},{"line_number":1237,"context_line":"            \u0027type\u0027: \u0027string\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"0181948a_86ca3eb8","line":1234,"in_reply_to":"9d705dbb_cdb97ae6","updated":"2025-02-10 06:46:17.000000000","message":"Done","commit_id":"0117138032e96b44c779cdce56ef352472d48675"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dc5247d10edffc8b9a47bca1b47d6f14532213c0","unresolved":true,"context_lines":[{"line_number":1235,"context_line":"        \u0027oneOf\u0027][1][\u0027properties\u0027].update({"},{"line_number":1236,"context_line":"    \u0027properties\u0027: {"},{"line_number":1237,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":1238,"context_line":"        \u0027patternProperties\u0027: {"},{"line_number":1239,"context_line":"            \u0027^.+$\u0027: {"},{"line_number":1240,"context_line":"                \u0027type\u0027: \u0027string\u0027,"},{"line_number":1241,"context_line":"                },"},{"line_number":1242,"context_line":"            },"},{"line_number":1243,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":1244,"context_line":"    },"},{"line_number":1245,"context_line":"})"}],"source_content_type":"text/x-python","patch_set":9,"id":"32b7ed78_b4b8f907","line":1242,"range":{"start_line":1238,"start_character":0,"end_line":1242,"end_character":14},"updated":"2025-02-10 14:02:30.000000000","message":"so I suggest to have this changed to:\n```\n\u0027patternProperties\u0027: {\n        \u0027^[a-zA-Z0-9-_:. ]{1,255}$\u0027: {\n            \u0027type\u0027: \u0027string\u0027\n        }\n```\n\nand we are debating above if we want the even stricter schema:\n```\n\u0027patternProperties\u0027: {\n        \u0027^[a-zA-Z0-9-_:. ]{1,255}$\u0027: {\n            \u0027type\u0027: \u0027string\u0027, \u0027maxLength\u0027: 255\n        }\n```","commit_id":"43e6d5ee03196d6f89c7857b9f7bacf6389e0842"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"77fa7636a492e98bbb61c03135acd7a0ea710088","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"        \u0027oneOf\u0027][1][\u0027properties\u0027].update({"},{"line_number":1236,"context_line":"    \u0027properties\u0027: {"},{"line_number":1237,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":1238,"context_line":"        \u0027patternProperties\u0027: {"},{"line_number":1239,"context_line":"            \u0027^.+$\u0027: {"},{"line_number":1240,"context_line":"                \u0027type\u0027: \u0027string\u0027,"},{"line_number":1241,"context_line":"                },"},{"line_number":1242,"context_line":"            },"},{"line_number":1243,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":1244,"context_line":"    },"},{"line_number":1245,"context_line":"})"}],"source_content_type":"text/x-python","patch_set":9,"id":"1bac6a4c_7607d8a3","line":1242,"range":{"start_line":1238,"start_character":0,"end_line":1242,"end_character":14},"in_reply_to":"32b7ed78_b4b8f907","updated":"2025-02-11 10:54:45.000000000","message":"Done","commit_id":"43e6d5ee03196d6f89c7857b9f7bacf6389e0842"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"74eb950eb8b79a442960bc9dd0531e6e7ced5c18","unresolved":true,"context_lines":[{"line_number":1238,"context_line":"        \u0027patternProperties\u0027: {"},{"line_number":1239,"context_line":"            \u0027^[a-zA-Z0-9_:. ]{1,255}$\u0027: {"},{"line_number":1240,"context_line":"                \u0027type\u0027: \u0027string\u0027,"},{"line_number":1241,"context_line":"                \u0027max_Length\u0027: 255,"},{"line_number":1242,"context_line":"                },"},{"line_number":1243,"context_line":"            },"},{"line_number":1244,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":12,"id":"755a7b1c_79c23181","line":1241,"range":{"start_line":1241,"start_character":17,"end_line":1241,"end_character":27},"updated":"2025-02-21 20:30:05.000000000","message":"I think this is incorrect based on the other schemas in this file. It should be `maxLength`. I\u0027m not sure what effect the wrong attribute will have.","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"}],"nova/api/openstack/compute/views/servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950b5af04bace92ef6e93d26aab48d5f7da304fb","unresolved":true,"context_lines":[{"line_number":592,"context_line":"                }],"},{"line_number":593,"context_line":"            }"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            image_props \u003d instance.image_meta.properties"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"            def _get_image_properties(image_properties):"},{"line_number":598,"context_line":"                props \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"d863ca13_f52b7faa","line":595,"updated":"2025-01-23 09:40:24.000000000","message":"From the spec:\n\u003e The implementation needs to populate this part of the api response from our\ncache of the image details in ``instance.system_metadata``.\n\nDoes instance.image_meta hydrated from the embedded instance.system_metadata keys or is it populated from the image from glance? If the latter then that will not be good for us here.","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"8bca56e0c42f63723459c71e2aaea67d2c44f052","unresolved":false,"context_lines":[{"line_number":592,"context_line":"                }],"},{"line_number":593,"context_line":"            }"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            image_props \u003d instance.image_meta.properties"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"            def _get_image_properties(image_properties):"},{"line_number":598,"context_line":"                props \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aedf714_bbb8463e","line":595,"in_reply_to":"d863ca13_f52b7faa","updated":"2025-01-27 15:04:41.000000000","message":"Done","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950b5af04bace92ef6e93d26aab48d5f7da304fb","unresolved":true,"context_lines":[{"line_number":599,"context_line":"                image_prop_keys \u003d image_properties.obj_fields"},{"line_number":600,"context_line":"                for key in image_prop_keys:"},{"line_number":601,"context_line":"                    prop_value \u003d image_properties.get(key)"},{"line_number":602,"context_line":"                    if prop_value and key !\u003d \u0027links\u0027:"},{"line_number":603,"context_line":"                        props[key] \u003d prop_value"},{"line_number":604,"context_line":"                return props"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"721b0933_4e8ce021","line":602,"updated":"2025-01-23 09:40:24.000000000","message":"I don\u0027t see how the key can be \u0027links\u0027 as that is not a field defined in ImageMetaProps","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2342e8b570ec893c76b0f44e582b6013c7d8ea7d","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                image_prop_keys \u003d image_properties.obj_fields"},{"line_number":600,"context_line":"                for key in image_prop_keys:"},{"line_number":601,"context_line":"                    prop_value \u003d image_properties.get(key)"},{"line_number":602,"context_line":"                    if prop_value and key !\u003d \u0027links\u0027:"},{"line_number":603,"context_line":"                        props[key] \u003d prop_value"},{"line_number":604,"context_line":"                return props"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"a0186367_565dfc7b","line":602,"in_reply_to":"721b0933_4e8ce021","updated":"2025-01-28 14:44:56.000000000","message":"Done","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2342e8b570ec893c76b0f44e582b6013c7d8ea7d","unresolved":true,"context_lines":[{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            if api_version_request.is_supported(request, min_version\u003d\u00272.98\u0027):"},{"line_number":596,"context_line":"                image_props \u003d {}"},{"line_number":597,"context_line":"                for key, value in instance.system_metadata.items():"},{"line_number":598,"context_line":"                    if key.startswith(\u0027image_\u0027):"},{"line_number":599,"context_line":"                        # remove \u0027image_\u0027 at start of key so that for eg. key"},{"line_number":600,"context_line":"                        # \u0027image_hw_machine_type\u0027 becomes \u0027hw_machine_type\u0027"},{"line_number":601,"context_line":"                        k \u003d key.partition(\u0027_\u0027)[2]"},{"line_number":602,"context_line":"                        image_props[k] \u003d value"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"                image[\u0027properties\u0027] \u003d image_props"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"66f77be0_8c065cee","line":602,"range":{"start_line":597,"start_character":0,"end_line":602,"end_character":46},"updated":"2025-01-28 14:44:56.000000000","message":"nit: this can be simplified to:\n```\nimage_props \u003d {key.partition(\"_\")[2]: value for key, value in instance.system_metadata.items() if key.startswith(\u0027image_\u0027)}\n```\nbut your version is OK to me as well.","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a7494a6dcc02d47af5bba9e75726c18e03f7a63c","unresolved":false,"context_lines":[{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            if api_version_request.is_supported(request, min_version\u003d\u00272.98\u0027):"},{"line_number":596,"context_line":"                image_props \u003d {}"},{"line_number":597,"context_line":"                for key, value in instance.system_metadata.items():"},{"line_number":598,"context_line":"                    if key.startswith(\u0027image_\u0027):"},{"line_number":599,"context_line":"                        # remove \u0027image_\u0027 at start of key so that for eg. key"},{"line_number":600,"context_line":"                        # \u0027image_hw_machine_type\u0027 becomes \u0027hw_machine_type\u0027"},{"line_number":601,"context_line":"                        k \u003d key.partition(\u0027_\u0027)[2]"},{"line_number":602,"context_line":"                        image_props[k] \u003d value"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"                image[\u0027properties\u0027] \u003d image_props"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e79a1ce5_58650b44","line":602,"range":{"start_line":597,"start_character":0,"end_line":602,"end_character":46},"in_reply_to":"66f77be0_8c065cee","updated":"2025-01-29 15:47:18.000000000","message":"Acknowledged","commit_id":"2fbb27654a4140a29d66dadfcf8f4337148d58d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dc5247d10edffc8b9a47bca1b47d6f14532213c0","unresolved":true,"context_lines":[{"line_number":595,"context_line":"            if api_version_request.is_supported(request, min_version\u003d\u00272.98\u0027):"},{"line_number":596,"context_line":"                image_props \u003d {}"},{"line_number":597,"context_line":"                for key, value in instance.system_metadata.items():"},{"line_number":598,"context_line":"                    if key.startswith(\u0027image_\u0027):"},{"line_number":599,"context_line":"                        # remove \u0027image_\u0027 at start of key so that for eg. key"},{"line_number":600,"context_line":"                        # \u0027image_hw_machine_type\u0027 becomes \u0027hw_machine_type\u0027"},{"line_number":601,"context_line":"                        k \u003d key.partition(\u0027_\u0027)[2]"}],"source_content_type":"text/x-python","patch_set":9,"id":"22907870_cf88c68b","line":598,"updated":"2025-02-10 14:02:30.000000000","message":"There is a constant for it in nova.utils.SM_IMAGE_PROP_PREFIX . Please use that instead of the magic value here.","commit_id":"43e6d5ee03196d6f89c7857b9f7bacf6389e0842"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"77fa7636a492e98bbb61c03135acd7a0ea710088","unresolved":false,"context_lines":[{"line_number":595,"context_line":"            if api_version_request.is_supported(request, min_version\u003d\u00272.98\u0027):"},{"line_number":596,"context_line":"                image_props \u003d {}"},{"line_number":597,"context_line":"                for key, value in instance.system_metadata.items():"},{"line_number":598,"context_line":"                    if key.startswith(\u0027image_\u0027):"},{"line_number":599,"context_line":"                        # remove \u0027image_\u0027 at start of key so that for eg. key"},{"line_number":600,"context_line":"                        # \u0027image_hw_machine_type\u0027 becomes \u0027hw_machine_type\u0027"},{"line_number":601,"context_line":"                        k \u003d key.partition(\u0027_\u0027)[2]"}],"source_content_type":"text/x-python","patch_set":9,"id":"fe19aa39_4b16b39c","line":598,"in_reply_to":"22907870_cf88c68b","updated":"2025-02-11 10:54:45.000000000","message":"Done","commit_id":"43e6d5ee03196d6f89c7857b9f7bacf6389e0842"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7799f5412a503f85c52d437be883feed1cba37b","unresolved":true,"context_lines":[{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            if api_version_request.is_supported(request, min_version\u003d\u00272.98\u0027):"},{"line_number":596,"context_line":"                image_props \u003d {}"},{"line_number":597,"context_line":"                for key, value in instance.system_metadata.items():"},{"line_number":598,"context_line":"                    if key.startswith(utils.SM_IMAGE_PROP_PREFIX):"},{"line_number":599,"context_line":"                        # remove prefix \u0027image_\u0027 at start of key, so that"},{"line_number":600,"context_line":"                        # key \u0027image_\u003ckey-name\u003e\u0027 becomes \u0027\u003ckey-name\u003e\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"ab5b5248_3da9889b","line":597,"range":{"start_line":597,"start_character":14,"end_line":597,"end_character":67},"updated":"2025-02-21 05:11:05.000000000","message":"this code is wrong as its showoing files that are not valid image properies as defined by nova ovo.\n\nwe have some thigns that matach tha tprefix that are not impage peropes that are valid to set in an image passed ot nvoa or that are field on teh image but not propeies.\n\nthis is the root calse of https://bugs.launchpad.net/nova/+bug/2098384","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"37ad72e5159451bb76d541641087fa00389e41fe","unresolved":true,"context_lines":[{"line_number":601,"context_line":"                        k \u003d key.partition(\u0027_\u0027)[2]"},{"line_number":602,"context_line":"                        image_props[k] \u003d value"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"                image[\u0027properties\u0027] \u003d image_props"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"            return image"},{"line_number":607,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"776712e7_d46d1bff","line":604,"updated":"2025-02-17 18:07:47.000000000","message":"I think this could be done in a listcomp, which would be faster, especially since this could be called a lot.\n```\nimage[\u0027properties\u0027] \u003d {k.removeprefix(utils.SM_IMAGE_PROP_PREFIX): v \n                       for k, v in instance.system_metadata.items()}\n```\n\nNot critical, but might be worth a follow up for optimization.","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"}],"nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-action-rebuild-resp.json.tpl":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"37ad72e5159451bb76d541641087fa00389e41fe","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                \"architecture\": \"x86_64\","},{"line_number":48,"context_line":"                \"auto_disk_config\": \"True\","},{"line_number":49,"context_line":"                \"base_image_ref\": \"%(uuid)s\","},{"line_number":50,"context_line":"                \"container_format\": \"ova\","},{"line_number":51,"context_line":"                \"disk_format\": \"vhd\","},{"line_number":52,"context_line":"                \"kernel_id\": \"nokernel\","},{"line_number":53,"context_line":"                \"min_disk\": \"1\","}],"source_content_type":"text/x-smarty","patch_set":12,"id":"859c4374_966ce32d","line":50,"updated":"2025-02-17 18:07:47.000000000","message":"Not that it matters, but this is not a very realistic scenario. I\u0027m guessing you copied it from something else and thus it\u0027s not really yours. Also the \u0027vhd\u0027 and kernel/ramdisk below.\n\nAnyway, not critical, just noting it.","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd195f877326ab6f3c357f2a63d3e919e548de25","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                \"architecture\": \"x86_64\","},{"line_number":48,"context_line":"                \"auto_disk_config\": \"True\","},{"line_number":49,"context_line":"                \"base_image_ref\": \"%(uuid)s\","},{"line_number":50,"context_line":"                \"container_format\": \"ova\","},{"line_number":51,"context_line":"                \"disk_format\": \"vhd\","},{"line_number":52,"context_line":"                \"kernel_id\": \"nokernel\","},{"line_number":53,"context_line":"                \"min_disk\": \"1\","}],"source_content_type":"text/x-smarty","patch_set":12,"id":"51aedc73_a6cb6a23","line":50,"in_reply_to":"859c4374_966ce32d","updated":"2025-02-21 05:43:04.000000000","message":"most of them should not be in the response as they are not actually image properties from a nova perspective\n \n They are part of our ImageMeta but not the ImageMetaProps\n \n https://github.com/openstack/nova/blob/master/nova/objects/image_meta.py#L57-L76\n\nand we are only meant to be adding ImageMetaProps to the show.\n\n\ni have a quick fix up but im wondering if we shoudl fast revert this.\nthe prolem is we have allready bumpt the micoversion and updated tempest to use spice direct for 2.99 so its too late i think to justr revert the feature\n\n\nso we proably shoudld just fix it before Feature Freeze \n\nhttps://review.opendev.org/c/openstack/nova/+/942413\n\nwill fix this to only return the image propepres but assuming that passes tempest we will also need update the sampesl to something more realsitic.\n\naddtionaly we need to acttuly add the 2.98 api scheme to tempst to adress issues blocking mikals spice direct work.","commit_id":"05c6b6cdbb0c2bb91efbab0007e79b9cb62424c7"}],"nova/tests/functional/api_sample_tests/test_servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950b5af04bace92ef6e93d26aab48d5f7da304fb","unresolved":true,"context_lines":[{"line_number":635,"context_line":"    microversion \u003d \u00272.98\u0027"},{"line_number":636,"context_line":"    scenarios \u003d [(\u0027v2_98\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":637,"context_line":"    ADMIN_API \u003d False"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"class ServersUpdateSampleJsonTest(ServersSampleBase):"},{"line_number":641,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6281e069_49efec27","line":638,"updated":"2025-01-23 09:40:24.000000000","message":"This is failing due to differences between what is in the sample file and what is returned from the API:\n\ntest_servers_details(v2_98) and and test_servers_get(v2_98)\n```\nnova.tests.functional.api_samples_test_base.NoMatch: Dictionary key mismatch:\nExtra key(s) in template:\n[\u0027hw_machine_type\u0027, \u0027hw_tpm_model\u0027, \u0027hw_tpm_version\u0027, \u0027hw_vtpm_secret_security\u0027]\nExtra key(s) in Response:\n[\u0027hw_architecture\u0027, \u0027hw_auto_disk_config\u0027]\n```","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"e4b36ff8414fcce00ee145abe68f380a7781a4f8","unresolved":true,"context_lines":[{"line_number":635,"context_line":"    microversion \u003d \u00272.98\u0027"},{"line_number":636,"context_line":"    scenarios \u003d [(\u0027v2_98\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":637,"context_line":"    ADMIN_API \u003d False"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"class ServersUpdateSampleJsonTest(ServersSampleBase):"},{"line_number":641,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"76c7cbea_5b948733","line":638,"in_reply_to":"6281e069_49efec27","updated":"2025-01-28 17:35:56.000000000","message":"It\u0027s better to update the doc directory to include the mis-matched keys.","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a7494a6dcc02d47af5bba9e75726c18e03f7a63c","unresolved":false,"context_lines":[{"line_number":635,"context_line":"    microversion \u003d \u00272.98\u0027"},{"line_number":636,"context_line":"    scenarios \u003d [(\u0027v2_98\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":637,"context_line":"    ADMIN_API \u003d False"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"class ServersUpdateSampleJsonTest(ServersSampleBase):"},{"line_number":641,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c8703789_6ff8b79c","line":638,"in_reply_to":"76c7cbea_5b948733","updated":"2025-01-29 15:47:18.000000000","message":"Done","commit_id":"9ecc76675393e4a363ab1c5e1534fb1032d19302"}]}
