)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e12e99d93045504ea6f83a9f42481d8846884485","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"116265d5_2bb66022","updated":"2022-07-14 09:30:34.000000000","message":"i dont know if allowing ‘ ‘ space was intentional or not.\ni did not think it was currently supported but i dont really object to it althoug i would personaly prefer to not have to deal with spaces.\n\nlooking that this patch in general however i think its in really good shape","commit_id":"bfbb4ec66d471ca6d65b370cc247496d89c1549c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b352323bcbf6f2e6aace7aa2f30e0ef6573d51df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d5e7f0bb_ea072e0e","updated":"2022-07-22 09:07:29.000000000","message":"Couple nits and questions. But overall looks good","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0d0900b4cf0f2d7c661cd842e65e20cbe7998af1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cb20c8c3_5353b2d1","updated":"2022-07-18 17:21:17.000000000","message":"Holding until we merge 2.91 ","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9b4338b35d87e550f47f41dc57cd3173ca88d6cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c0d71425_2541473d","updated":"2022-07-22 14:57:22.000000000","message":"Only one nit that can be fixed in a follow up ","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d63c1112ed0f808f2873588bf68c3f557949d18c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5a41f90b_dc8db34c","updated":"2022-07-22 14:07:08.000000000","message":"Still holding for https://review.opendev.org/c/openstack/nova/+/845897 to be merged.","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fed8fd7f6b6d1ad9838837d059d71d21b363e6c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f8625890_aa703121","updated":"2022-07-25 12:40:09.000000000","message":"recheck bug 1940425","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"916802de63aa09e185b3a1dabd51ab340424bcbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"77645a1d_44665c62","updated":"2022-07-25 14:57:56.000000000","message":"recheck fscking bug 1940425","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"},{"author":{"_account_id":34153,"name":"GirishChilukuri","email":"giri1899@gmail.com"},"change_message_id":"91f391a8d91be16085b05f1114c254aed7246dda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d2c8cb35_f9bfea21","updated":"2022-07-27 16:45:35.000000000","message":"Hi Sylvain Bauza,\nI have query inline and changes LGTM.","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e8fa1b82d9a95b58061d2493a04ba89144eec0d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"06fbb77b_4296f47f","updated":"2022-07-27 13:30:52.000000000","message":"Looks good","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae12630863a9a597ac9cf48becafe25d78c2116a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4284ef0c_ca7d2963","updated":"2022-07-27 17:36:24.000000000","message":"almost in good shape. other test adding more test, I think we should fix the api-ref things in this patch itself (soft -1 for that).","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b6c07c41ee04cf42d6bdc91e0211b391d5e82a01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"83455eaa_83b997cd","updated":"2022-07-27 17:41:36.000000000","message":"i was ok with this but gmann has some issues and there is one nit in line.\nso ill hold +w\n\none other thing the api version histroty  doc has not been updated unless i missed that?","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0e8ea276591c223b2c08f9d945712ac16dbd0263","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"94c632d5_938c1916","updated":"2022-07-27 17:44:27.000000000","message":"is https://docs.openstack.org/nova/latest/reference/api-microversion-history.html auto generated if not then can you add this to that if you resping or in the follow up for the other issues","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"48287dd3d11f21711fe7bd35bb5afef4ead6bc9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1a66c2d0_c6dc2218","in_reply_to":"94c632d5_938c1916","updated":"2022-07-27 18:25:01.000000000","message":"that is auto generated and 2.92 is included https://81e600fbe766b0359379-212744dfdeabfa72b25c1cab8a844e46.ssl.cf1.rackcdn.com/849133/7/check/openstack-tox-docs/2ba5342/docs/reference/api-microversion-history.html","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a56ece0eeb65dd71843304ea82b9c4a454904d10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c5c522d7_31b427a0","updated":"2022-07-28 15:57:16.000000000","message":"Thanks, lgtm","commit_id":"a755e5d9f25c7bb06533a3799d9c39b74f334873"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85aa1e1d2cfb08d50565406ace1769b20441fda5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6d8e2885_25ac7b5a","updated":"2022-07-28 10:45:36.000000000","message":"looks good. I will let Ghanshyam to +A it","commit_id":"a755e5d9f25c7bb06533a3799d9c39b74f334873"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"da4c27888e44853fe983217f16c30ffcfdd7e5f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"27f93a9d_be8222f4","updated":"2022-07-28 14:56:50.000000000","message":"recheck keystone issue","commit_id":"a755e5d9f25c7bb06533a3799d9c39b74f334873"}],"api-ref/source/os-keypairs.inc":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae12630863a9a597ac9cf48becafe25d78c2116a","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  - keypair: keypair"},{"line_number":72,"context_line":"  - name: keypair_name_in"},{"line_number":73,"context_line":"  - public_key: keypair_public_key_in_2_91"},{"line_number":74,"context_line":"  - public_key: keypair_public_key_in_2_92"},{"line_number":75,"context_line":"  - type: keypair_type_in"},{"line_number":76,"context_line":"  - user_id: keypair_userid_in"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"d7784abb_cfbe4961","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":42},"updated":"2022-07-27 17:36:24.000000000","message":"listing two \u0027public_key\u0027 field is confusing\n\nhttps://0cc0fb9d5c802f1c7b9c-6aa1154e79cc29d864ed6f661bf68125.ssl.cf5.rackcdn.com/849133/7/check/build-openstack-api-ref/1e1cadf/docs/?expanded\u003dimport-or-create-keypair-detail\n\nI think we should keep single and mention in text that it is mandatory from 2.92 microversion. That is how we have done for the field changed in microversion so far.","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2df00c59cfe9a2376edbc154236d1028a3b33cfa","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  - keypair: keypair"},{"line_number":72,"context_line":"  - name: keypair_name_in"},{"line_number":73,"context_line":"  - public_key: keypair_public_key_in_2_91"},{"line_number":74,"context_line":"  - public_key: keypair_public_key_in_2_92"},{"line_number":75,"context_line":"  - type: keypair_type_in"},{"line_number":76,"context_line":"  - user_id: keypair_userid_in"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"ae268158_d03e13e6","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":42},"in_reply_to":"63ff4b43_e5d3deee","updated":"2022-07-28 09:13:16.000000000","message":"i was fine with this but i didnt look at how it was renderd\n\nfrom the unrendered version i understood what you ment","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"55e94f971662cf2039c7972b38efe11784bf8794","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  - keypair: keypair"},{"line_number":72,"context_line":"  - name: keypair_name_in"},{"line_number":73,"context_line":"  - public_key: keypair_public_key_in_2_91"},{"line_number":74,"context_line":"  - public_key: keypair_public_key_in_2_92"},{"line_number":75,"context_line":"  - type: keypair_type_in"},{"line_number":76,"context_line":"  - user_id: keypair_userid_in"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"63ff4b43_e5d3deee","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":42},"in_reply_to":"d7784abb_cfbe4961","updated":"2022-07-28 09:04:30.000000000","message":"I thought it was more understandable with two rows in the table, but OK, fair enough.\n\nDone.","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":4412,"context_line":""},{"line_number":4413,"context_line":"    .. note::"},{"line_number":4414,"context_line":""},{"line_number":4415,"context_line":"      Since microversion 2.92, allowed characters are ascii letters"},{"line_number":4416,"context_line":"      ``[a-zA-Z]``, digits ``[0-9]`` and the following special"},{"line_number":4417,"context_line":"      characters: ``[@._- ]``."},{"line_number":4418,"context_line":"keypair_private_key:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"c0659704_32b46fe5","line":4415,"range":{"start_line":4415,"start_character":54,"end_line":4415,"end_character":59},"updated":"2022-07-22 09:06:52.000000000","message":"ASCII (as it stands for American Standard Code for Information Interchange)","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":false,"context_lines":[{"line_number":4412,"context_line":""},{"line_number":4413,"context_line":"    .. note::"},{"line_number":4414,"context_line":""},{"line_number":4415,"context_line":"      Since microversion 2.92, allowed characters are ascii letters"},{"line_number":4416,"context_line":"      ``[a-zA-Z]``, digits ``[0-9]`` and the following special"},{"line_number":4417,"context_line":"      characters: ``[@._- ]``."},{"line_number":4418,"context_line":"keypair_private_key:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"4d2a7944_9060563f","line":4415,"range":{"start_line":4415,"start_character":54,"end_line":4415,"end_character":59},"in_reply_to":"c0659704_32b46fe5","updated":"2022-07-22 13:58:19.000000000","message":"Ack","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"}],"doc/api_samples/os-keypairs/v2.92/keypairs-import-post-req.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"keypair\": {"},{"line_number":3,"context_line":"        \"name\": \"keypair-d20a3d59-9433-4b79-8726-20b431d89c78\","},{"line_number":4,"context_line":"        \"type\": \"ssh\","},{"line_number":5,"context_line":"        \"public_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw\u003d\u003d Generated-by-Nova\","},{"line_number":6,"context_line":"        \"user_id\": \"fake\""}],"source_content_type":"application/json","patch_set":5,"id":"93b2a054_c1de4361","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":61},"updated":"2022-07-22 09:06:52.000000000","message":"I would use a name that showcase the new allowed charachters like: john.doe@example.com","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9b4338b35d87e550f47f41dc57cd3173ca88d6cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"keypair\": {"},{"line_number":3,"context_line":"        \"name\": \"keypair-d20a3d59-9433-4b79-8726-20b431d89c78\","},{"line_number":4,"context_line":"        \"type\": \"ssh\","},{"line_number":5,"context_line":"        \"public_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw\u003d\u003d Generated-by-Nova\","},{"line_number":6,"context_line":"        \"user_id\": \"fake\""}],"source_content_type":"application/json","patch_set":5,"id":"945caa29_54c970a6","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":61},"in_reply_to":"6ee2d8f6_490e519c","updated":"2022-07-22 14:57:22.000000000","message":":D","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"keypair\": {"},{"line_number":3,"context_line":"        \"name\": \"keypair-d20a3d59-9433-4b79-8726-20b431d89c78\","},{"line_number":4,"context_line":"        \"type\": \"ssh\","},{"line_number":5,"context_line":"        \"public_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw\u003d\u003d Generated-by-Nova\","},{"line_number":6,"context_line":"        \"user_id\": \"fake\""}],"source_content_type":"application/json","patch_set":5,"id":"6ee2d8f6_490e519c","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":61},"in_reply_to":"93b2a054_c1de4361","updated":"2022-07-22 13:58:19.000000000","message":"Ack","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"}],"doc/api_samples/os-keypairs/v2.92/keypairs-import-post-resp.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"keypair\": {"},{"line_number":3,"context_line":"        \"fingerprint\": \"1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c\","},{"line_number":4,"context_line":"        \"name\": \"keypair-803a1926-af78-4b05-902a-1d6f7a8d9d3e\","},{"line_number":5,"context_line":"        \"type\": \"ssh\","},{"line_number":6,"context_line":"        \"public_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw\u003d\u003d Generated-by-Nova\","},{"line_number":7,"context_line":"        \"user_id\": \"fake\""}],"source_content_type":"application/json","patch_set":5,"id":"50300546_6b7fde7d","line":4,"range":{"start_line":4,"start_character":17,"end_line":4,"end_character":61},"updated":"2022-07-22 09:06:52.000000000","message":"ditto","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"keypair\": {"},{"line_number":3,"context_line":"        \"fingerprint\": \"1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c\","},{"line_number":4,"context_line":"        \"name\": \"keypair-803a1926-af78-4b05-902a-1d6f7a8d9d3e\","},{"line_number":5,"context_line":"        \"type\": \"ssh\","},{"line_number":6,"context_line":"        \"public_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw\u003d\u003d Generated-by-Nova\","},{"line_number":7,"context_line":"        \"user_id\": \"fake\""}],"source_content_type":"application/json","patch_set":5,"id":"0344e4a3_bd965afc","line":4,"range":{"start_line":4,"start_character":17,"end_line":4,"end_character":61},"in_reply_to":"50300546_6b7fde7d","updated":"2022-07-22 13:58:19.000000000","message":"Ack","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"}],"nova/api/openstack/compute/keypairs.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Create or import keypair."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        Keypair generations are allowed until version 2.91."},{"line_number":52,"context_line":"        Imports are only allowed afterwards."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        A policy check restricts users from creating keys for other users"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"003b4174_f6e1d270","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":44},"updated":"2022-07-22 09:06:52.000000000","message":"I think what you mean is: \nAfterwards only imports are allowed. \nOr\nOnly imports are allowed afterwards","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Create or import keypair."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        Keypair generations are allowed until version 2.91."},{"line_number":52,"context_line":"        Imports are only allowed afterwards."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        A policy check restricts users from creating keys for other users"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1029b364_e9e7a427","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":44},"in_reply_to":"003b4174_f6e1d270","updated":"2022-07-22 13:58:19.000000000","message":"was copy/paste :)","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9b4338b35d87e550f47f41dc57cd3173ca88d6cf","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Create or import keypair."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        Keypair generations are allowed until version 2.91."},{"line_number":52,"context_line":"        Afterwards, only Imports are only allowed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        A policy check restricts users from creating keys for other users"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2b677929_50a4747f","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":50},"updated":"2022-07-22 14:57:22.000000000","message":"you have an extra \"only\": Afterwards, only imports are allowed","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b6c07c41ee04cf42d6bdc91e0211b391d5e82a01","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Create or import keypair."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        Keypair generations are allowed until version 2.91."},{"line_number":52,"context_line":"        Afterwards, only Imports are only allowed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        A policy check restricts users from creating keys for other users"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"424213ca_656ccf9e","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":50},"in_reply_to":"2b677929_50a4747f","updated":"2022-07-27 17:41:36.000000000","message":"ya this is still true by the way. its a code comment so if this is the only issue i would just fix it in a followup since its not user visable.\n\nno one reads comment anyway right 😊","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"55e94f971662cf2039c7972b38efe11784bf8794","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Create or import keypair."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        Keypair generations are allowed until version 2.91."},{"line_number":52,"context_line":"        Afterwards, only Imports are only allowed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        A policy check restricts users from creating keys for other users"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ca4f80ce_5f703176","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":50},"in_reply_to":"424213ca_656ccf9e","updated":"2022-07-28 09:04:30.000000000","message":"Ack","commit_id":"b53bcc76a8b7907f470e0a19c4603a28be0e7161"}],"nova/api/openstack/compute/schemas/keypairs.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        \u0027keypair\u0027: {"},{"line_number":24,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":25,"context_line":"            \u0027properties\u0027: {"},{"line_number":26,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":27,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":28,"context_line":"            },"},{"line_number":29,"context_line":"            \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"d9a3bd75_44f54883","line":26,"updated":"2022-07-22 09:06:52.000000000","message":"Hm, does it mean we allow special chars in older microversions too? Was it supported in old microversions we just moved the validation to the schema now?","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9b4338b35d87e550f47f41dc57cd3173ca88d6cf","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        \u0027keypair\u0027: {"},{"line_number":24,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":25,"context_line":"            \u0027properties\u0027: {"},{"line_number":26,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":27,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":28,"context_line":"            },"},{"line_number":29,"context_line":"            \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"5c82eb8c_4a166724","line":26,"in_reply_to":"134e29fe_1204334f","updated":"2022-07-22 14:57:22.000000000","message":"Ack","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        \u0027keypair\u0027: {"},{"line_number":24,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":25,"context_line":"            \u0027properties\u0027: {"},{"line_number":26,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":27,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":28,"context_line":"            },"},{"line_number":29,"context_line":"            \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"134e29fe_1204334f","line":26,"in_reply_to":"d9a3bd75_44f54883","updated":"2022-07-22 13:58:19.000000000","message":"Yup, see https://review.opendev.org/c/openstack/nova/+/849133/5/nova/compute/api.py#b6616\n\nWe were already allowing dash (-), underscore (_) and space ( ) plus digits and ASCII letters.","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"}],"nova/api/validation/parameter_types.py":[{"author":{"_account_id":34153,"name":"GirishChilukuri","email":"giri1899@gmail.com"},"change_message_id":"91f391a8d91be16085b05f1114c254aed7246dda","unresolved":true,"context_lines":[{"line_number":310,"context_line":"}]}"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"keypair_name_special_chars_292 \u003d {\u0027allOf\u0027: [name, {"},{"line_number":314,"context_line":"    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":315,"context_line":"    \u0027format\u0027: \u0027keypair_name_292\u0027"},{"line_number":316,"context_line":"}]}"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"az_name_with_leading_trailing_spaces \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1a8a7c_6a1412c1","line":316,"range":{"start_line":313,"start_character":44,"end_line":316,"end_character":2},"updated":"2022-07-27 16:45:35.000000000","message":"two validations are added it means, version 2.92 supports both normal strings and strings with special characters?","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b6c07c41ee04cf42d6bdc91e0211b391d5e82a01","unresolved":true,"context_lines":[{"line_number":310,"context_line":"}]}"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"keypair_name_special_chars_292 \u003d {\u0027allOf\u0027: [name, {"},{"line_number":314,"context_line":"    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":315,"context_line":"    \u0027format\u0027: \u0027keypair_name_292\u0027"},{"line_number":316,"context_line":"}]}"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"az_name_with_leading_trailing_spaces \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"35836ded_dcd0e312","line":316,"range":{"start_line":313,"start_character":44,"end_line":316,"end_character":2},"in_reply_to":"1a1a8a7c_6a1412c1","updated":"2022-07-27 17:41:36.000000000","message":"2.92 allows extra special charters specific . and @\nbut sylvain also added validation for the old behavior too.\n\nthis used to be tested in _validate_key_pair in the compute api module.\n\nnow that validation is mvoed to the schema so its done earlier and more genericlly.\n\nthe end result will still be the same","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"55e94f971662cf2039c7972b38efe11784bf8794","unresolved":false,"context_lines":[{"line_number":310,"context_line":"}]}"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"keypair_name_special_chars_292 \u003d {\u0027allOf\u0027: [name, {"},{"line_number":314,"context_line":"    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":315,"context_line":"    \u0027format\u0027: \u0027keypair_name_292\u0027"},{"line_number":316,"context_line":"}]}"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"az_name_with_leading_trailing_spaces \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"e630d944_1fcedb9a","line":316,"range":{"start_line":313,"start_character":44,"end_line":316,"end_character":2},"in_reply_to":"35836ded_dcd0e312","updated":"2022-07-28 09:04:30.000000000","message":"Yup, what Sean said. We just moved the input validation to the schema.","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"}],"nova/tests/functional/api_sample_tests/test_keypairs.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e12e99d93045504ea6f83a9f42481d8846884485","unresolved":true,"context_lines":[{"line_number":381,"context_line":"        self._test_keypairs_import_key_post()"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_keypairs_import_key_special_characters(self):"},{"line_number":384,"context_line":"        self._test_keypairs_import_key_post(name\u003d\u0027my-key@ my.host\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"17238581_a9441440","line":384,"updated":"2022-07-14 09:30:34.000000000","message":"is space allowed i did not think so but i guess it is","commit_id":"bfbb4ec66d471ca6d65b370cc247496d89c1549c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e45788afaf06c7ff7141e1f0fb52805e3316ad45","unresolved":true,"context_lines":[{"line_number":381,"context_line":"        self._test_keypairs_import_key_post()"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_keypairs_import_key_special_characters(self):"},{"line_number":384,"context_line":"        self._test_keypairs_import_key_post(name\u003d\u0027my-key@ my.host\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a3a80f16_84917895","line":384,"in_reply_to":"17238581_a9441440","updated":"2022-07-18 17:03:26.000000000","message":"Yes it was previously accepted since the beginning.","commit_id":"bfbb4ec66d471ca6d65b370cc247496d89c1549c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b6c07c41ee04cf42d6bdc91e0211b391d5e82a01","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        self._test_keypairs_import_key_post()"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_keypairs_import_key_special_characters(self):"},{"line_number":384,"context_line":"        self._test_keypairs_import_key_post(name\u003d\u0027my-key@ my.host\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3c6622d0_e613a142","line":384,"in_reply_to":"a3a80f16_84917895","updated":"2022-07-27 17:41:36.000000000","message":"Ack","commit_id":"bfbb4ec66d471ca6d65b370cc247496d89c1549c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":335,"context_line":"    # NOTE(sbauza): This method is stupidly needed for _verify_response()."},{"line_number":336,"context_line":"    # See the TODO(sdague) above."},{"line_number":337,"context_line":"    def generalize_subs(self, subs, vanilla_regexes):"},{"line_number":338,"context_line":"        subs[\u0027keypair_name\u0027] \u003d \u0027keypair-[0-9a-f-]+\u0027"},{"line_number":339,"context_line":"        return subs"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def test_keypairs_post_no_longer_supported(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"8fc7bb85_223ba0a6","line":338,"range":{"start_line":338,"start_character":44,"end_line":338,"end_character":47},"updated":"2022-07-22 09:06:52.000000000","message":"hm this does not match the expected name range. [0-9a-zA-Z-_.@] would be the one, isn\u0027t it?","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":false,"context_lines":[{"line_number":335,"context_line":"    # NOTE(sbauza): This method is stupidly needed for _verify_response()."},{"line_number":336,"context_line":"    # See the TODO(sdague) above."},{"line_number":337,"context_line":"    def generalize_subs(self, subs, vanilla_regexes):"},{"line_number":338,"context_line":"        subs[\u0027keypair_name\u0027] \u003d \u0027keypair-[0-9a-f-]+\u0027"},{"line_number":339,"context_line":"        return subs"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def test_keypairs_post_no_longer_supported(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"456cc23f_79662d01","line":338,"range":{"start_line":338,"start_character":44,"end_line":338,"end_character":47},"in_reply_to":"8fc7bb85_223ba0a6","updated":"2022-07-22 13:58:19.000000000","message":"Good point.","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"}],"nova/tests/unit/api/openstack/compute/test_keypairs.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae12630863a9a597ac9cf48becafe25d78c2116a","unresolved":true,"context_lines":[{"line_number":508,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027, version\u003dself.wsgi_api_version)"},{"line_number":509,"context_line":"        self.old_req \u003d fakes.HTTPRequest.blank("},{"line_number":510,"context_line":"            \u0027\u0027, version\u003dself.wsgi_old_api_version)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_keypair_create_no_longer_supported(self):"},{"line_number":513,"context_line":"        body \u003d {"},{"line_number":514,"context_line":"            \u0027keypair\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"8e43ea06_06a32ee3","line":511,"range":{"start_line":511,"start_character":0,"end_line":511,"end_character":0},"updated":"2022-07-27 17:36:24.000000000","message":"can you add tests with public_key optional work fine with older microversion but not with new microversion.\n\nAlso check that private key is not returned in new microversion but returned in \u003c\u003d2.91","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"55e94f971662cf2039c7972b38efe11784bf8794","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027, version\u003dself.wsgi_api_version)"},{"line_number":509,"context_line":"        self.old_req \u003d fakes.HTTPRequest.blank("},{"line_number":510,"context_line":"            \u0027\u0027, version\u003dself.wsgi_old_api_version)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_keypair_create_no_longer_supported(self):"},{"line_number":513,"context_line":"        body \u003d {"},{"line_number":514,"context_line":"            \u0027keypair\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"70d0ccca_aaf674ab","line":511,"range":{"start_line":511,"start_character":0,"end_line":511,"end_character":0},"in_reply_to":"8e43ea06_06a32ee3","updated":"2022-07-28 09:04:30.000000000","message":"Ack","commit_id":"208b1bc91647bdbe3248ac4cde444b4ff637dfff"}],"releasenotes/notes/bp-keypair-generation-removal-3004a8643dcd1fd9.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e61b3037f2fd43fbae2807d690eec74075858bb","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    * Make public_key a mandatory parameter for keypair creation. This means"},{"line_number":7,"context_line":"      that by this microversion, Nova will stop to support automatic keypair"},{"line_number":8,"context_line":"      generations. Only imports will be possible."},{"line_number":9,"context_line":"    * Add a validator for keypair name on creation/import"},{"line_number":10,"context_line":"    * Allow 2 new special characters: \u0027@\u0027 and \u0027.\u0027 (dot),"},{"line_number":11,"context_line":"      in addition to the existing constraints of ``[a-z][A-Z][0-9][_- ]``"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"bf7028c2_47725574","line":9,"range":{"start_line":9,"start_character":6,"end_line":9,"end_character":57},"updated":"2022-07-22 09:06:52.000000000","message":"what does this mean for the end user? Do we reject something that was possible before? If not then I think this is an implementation detail","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aa22f53215499a0138e8b446014ca87b3c0cec5","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    * Make public_key a mandatory parameter for keypair creation. This means"},{"line_number":7,"context_line":"      that by this microversion, Nova will stop to support automatic keypair"},{"line_number":8,"context_line":"      generations. Only imports will be possible."},{"line_number":9,"context_line":"    * Add a validator for keypair name on creation/import"},{"line_number":10,"context_line":"    * Allow 2 new special characters: \u0027@\u0027 and \u0027.\u0027 (dot),"},{"line_number":11,"context_line":"      in addition to the existing constraints of ``[a-z][A-Z][0-9][_- ]``"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"78bea582_83e5d62f","line":9,"range":{"start_line":9,"start_character":6,"end_line":9,"end_character":57},"in_reply_to":"bf7028c2_47725574","updated":"2022-07-22 13:58:19.000000000","message":"You\u0027re right, pure implementation detail. Was a copy/paste from the original paste.","commit_id":"24b855d566c36a5af6746131be6a39ad5b9423bf"}]}
