)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"20abeabe826091f70afe3fd999f08cbabb2fd8fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ec71bc59_93437fe1","updated":"2025-06-10 09:53:25.000000000","message":"Addressed issues in follow-up https://review.opendev.org/c/openstack/nova/+/952214","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"67269651baf4dbf6b504eb889c0927f3e089f12a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"45b585be_9f3dbde6","updated":"2025-06-10 13:54:32.000000000","message":"Based on the follow up patch. Lgtm thx.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8504b962_e6bfbd15","updated":"2025-06-06 16:05:19.000000000","message":"Minor discrepancies compared to the doc. Mainly deleted_at and created_at should be always null.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"07b5c58cee753d0473fd8bbd9cf1f8e7aef69e1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"43e930fa_f4b9a4e3","updated":"2025-06-09 23:41:50.000000000","message":"lgtm, I am ok if you fix the uggla comment in followup. As per those comments, we can make schema more restrictive but current one also does not break anything (not wrong actually).","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f434a58fbec0091bd1f70d1fb75c452cf3933fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"91fd236a_e59fab7b","updated":"2025-06-25 08:06:42.000000000","message":"recheck","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bfcf3247ac91cfdf82aba0054e819430843c1792","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c926ed7d_e143b295","updated":"2025-06-24 18:13:28.000000000","message":"recheck","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16e17e6fff68b3dc9593cfc52c9ed23a58642d16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4bec027a_7d1d1c93","updated":"2025-05-19 13:02:43.000000000","message":"recheck unrelated failure","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"}],"nova/api/openstack/compute/schemas/keypairs.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ad7cbb22184481b29d73ed530d5cdc659036cae2","unresolved":true,"context_lines":[{"line_number":129,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":130,"context_line":"                \u0027private_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":131,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":132,"context_line":"                \u0027user_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027uuid\u0027},"},{"line_number":133,"context_line":"            },"},{"line_number":134,"context_line":"            \u0027required\u0027: [\u0027fingerprint\u0027, \u0027name\u0027, \u0027public_key\u0027, \u0027user_id\u0027],"},{"line_number":135,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a63c813_c5f76a5d","line":132,"updated":"2025-01-28 19:11:49.000000000","message":"it is not requrie to be a uuid.","commit_id":"bddb83e836fea6938d329f92718628b456e77d1d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16e17e6fff68b3dc9593cfc52c9ed23a58642d16","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":130,"context_line":"                \u0027private_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":131,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":132,"context_line":"                \u0027user_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027uuid\u0027},"},{"line_number":133,"context_line":"            },"},{"line_number":134,"context_line":"            \u0027required\u0027: [\u0027fingerprint\u0027, \u0027name\u0027, \u0027public_key\u0027, \u0027user_id\u0027],"},{"line_number":135,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f608867_0240bd95","line":132,"in_reply_to":"1a63c813_c5f76a5d","updated":"2025-05-19 13:02:43.000000000","message":"Done","commit_id":"bddb83e836fea6938d329f92718628b456e77d1d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"create_v20 \u003d copy.deepcopy(create)"},{"line_number":40,"context_line":"create_v20[\u0027properties\u0027][\u0027keypair\u0027][\u0027properties\u0027][\u0027name\u0027] \u003d ("},{"line_number":41,"context_line":"    parameter_types.name_with_leading_trailing_spaces)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"create_v22 \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"2c1eb68c_0977221b","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":54},"updated":"2025-06-06 16:05:19.000000000","message":"+1 agree more readable","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":false,"context_lines":[{"line_number":85,"context_line":"}"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"create_v292 \u003d copy.deepcopy(create_v210)"},{"line_number":88,"context_line":"create_v292[\u0027properties\u0027][\u0027keypair\u0027][\u0027properties\u0027][\u0027name\u0027] \u003d ("},{"line_number":89,"context_line":"    parameter_types.keypair_name_special_chars_v292)"},{"line_number":90,"context_line":"create_v292[\u0027properties\u0027][\u0027keypair\u0027][\u0027required\u0027] \u003d [\u0027name\u0027, \u0027public_key\u0027]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"index_query_schema_v20 \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"dc40872a_d27d9c69","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":52},"updated":"2025-06-06 16:05:19.000000000","message":"ditto","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c3158f0c48332995facdb9494cda9da3e117593","unresolved":false,"context_lines":[{"line_number":119,"context_line":"delete_query_schema_v275 \u003d copy.deepcopy(delete_query_schema_v210)"},{"line_number":120,"context_line":"delete_query_schema_v275[\u0027additionalProperties\u0027] \u003d False"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"create_response \u003d {"},{"line_number":123,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":124,"context_line":"    \u0027properties\u0027: {"},{"line_number":125,"context_line":"        \u0027keypair\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"28366d79_52f44433","line":122,"updated":"2025-06-24 14:27:08.000000000","message":"https://docs.openstack.org/api-ref/compute/#id240\n\nThe main changes to this api were in 2.2, 2.10, 2.91 and 2.92\n\n2.10 changed the request, but not the response.\n2.92 removed the ablity to generate a keypair but did not change the respocne when imorting one.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c3158f0c48332995facdb9494cda9da3e117593","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    \u0027required\u0027: [\u0027keypair\u0027],"},{"line_number":139,"context_line":"    \u0027additionalProperties\u0027: False,"},{"line_number":140,"context_line":"}"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"create_response_v22 \u003d copy.deepcopy(create_response)"},{"line_number":143,"context_line":"create_response_v22[\u0027properties\u0027][\u0027keypair\u0027][\u0027properties\u0027].update({"},{"line_number":144,"context_line":"    \u0027type\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a953a0d_0c46275a","line":141,"updated":"2025-06-24 14:27:08.000000000","message":"+1","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c3158f0c48332995facdb9494cda9da3e117593","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        \u0027enum\u0027: [\u0027ssh\u0027, \u0027x509\u0027]"},{"line_number":147,"context_line":"    },"},{"line_number":148,"context_line":"})"},{"line_number":149,"context_line":"create_response_v22[\u0027properties\u0027][\u0027keypair\u0027][\u0027required\u0027].append(\u0027type\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"create_response_v292 \u003d copy.deepcopy(create_response_v22)"},{"line_number":152,"context_line":"del create_response_v292[\u0027properties\u0027][\u0027keypair\u0027][\u0027properties\u0027][\u0027private_key\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"b1fa1783_80011aac","line":149,"updated":"2025-06-24 14:27:08.000000000","message":"yep before this point i belive you could store either but you could not specify the type.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"create_response_v292 \u003d copy.deepcopy(create_response_v22)"},{"line_number":152,"context_line":"del create_response_v292[\u0027properties\u0027][\u0027keypair\u0027][\u0027properties\u0027][\u0027private_key\u0027]"},{"line_number":153,"context_line":"create_response_v292[\u0027properties\u0027][\u0027keypair\u0027][\u0027properties\u0027][\u0027name\u0027] \u003d ("},{"line_number":154,"context_line":"    parameter_types.keypair_name_special_chars_v292"},{"line_number":155,"context_line":")"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"delete_response \u003d {"},{"line_number":158,"context_line":"    \u0027type\u0027: \u0027null\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"c4c563bb_93401ecc","line":155,"range":{"start_line":153,"start_character":0,"end_line":155,"end_character":1},"updated":"2025-06-06 16:05:19.000000000","message":"Note for myself: \u0027@\u0027 is now allowed.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c3158f0c48332995facdb9494cda9da3e117593","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    \u0027type\u0027: \u0027null\u0027,"},{"line_number":159,"context_line":"}"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"show_response \u003d {"},{"line_number":162,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":163,"context_line":"    \u0027properties\u0027: {"},{"line_number":164,"context_line":"        \u0027keypair\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"849594f1_c3672d30","line":161,"updated":"2025-06-24 14:27:08.000000000","message":"https://docs.openstack.org/api-ref/compute/#id242","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"}],"source_content_type":"text/x-python","patch_set":7,"id":"4bb06e27_ff4b2ec5","line":168,"range":{"start_line":168,"start_character":37,"end_line":168,"end_character":44},"updated":"2025-06-06 16:05:19.000000000","message":"Note: This boolean is always false.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"67269651baf4dbf6b504eb889c0927f3e089f12a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"}],"source_content_type":"text/x-python","patch_set":7,"id":"c141e4e2_0e28cc9d","line":168,"range":{"start_line":168,"start_character":37,"end_line":168,"end_character":44},"in_reply_to":"4bb06e27_ff4b2ec5","updated":"2025-06-10 13:54:32.000000000","message":"Acknowledged","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":172,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":173,"context_line":"                    ],"},{"line_number":174,"context_line":"                },"},{"line_number":175,"context_line":"                \u0027fingerprint\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"}],"source_content_type":"text/x-python","patch_set":7,"id":"92fcc735_3bed5719","line":174,"range":{"start_line":169,"start_character":17,"end_line":174,"end_character":18},"updated":"2025-06-06 16:05:19.000000000","message":"From the doc this is always null.\nSo we can remove the oneOf and the string type.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3e88f36e1247a9ef77d366036528f75f2add6825","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":172,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":173,"context_line":"                    ],"},{"line_number":174,"context_line":"                },"},{"line_number":175,"context_line":"                \u0027fingerprint\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"}],"source_content_type":"text/x-python","patch_set":7,"id":"b1516823_dc1bd0d0","line":174,"range":{"start_line":169,"start_character":17,"end_line":174,"end_character":18},"in_reply_to":"02d2097b_3e51985d","updated":"2025-06-24 14:29:58.000000000","message":"yep they were \nhttps://github.com/openstack/nova/blob/31b9c8ed58efa283979e32128344df5e7cb29941/nova/db/main/models.py#L68","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c3158f0c48332995facdb9494cda9da3e117593","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":172,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":173,"context_line":"                    ],"},{"line_number":174,"context_line":"                },"},{"line_number":175,"context_line":"                \u0027fingerprint\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"}],"source_content_type":"text/x-python","patch_set":7,"id":"02d2097b_3e51985d","line":174,"range":{"start_line":169,"start_character":17,"end_line":174,"end_character":18},"in_reply_to":"30626858_7e21f76c","updated":"2025-06-24 14:27:08.000000000","message":"the is null because we store the keyparis in teh api db now not the cell db.\nthe api db does not have shadow tabels.\n\ni think the keypairs were once stored in the cell db a very very long time ago\nbut i could be wrong about that.\n\ni think keyparis date form when flavor ectra were in teh cell dbs as instance_type before the cellv2 refactor and were one of the things that were extracted out into the api db.\n\nbut yes we can adress this in a follow up.\n\ni suspect if you have an old enough nova this may have possibel returned something.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a6029ee88e95bc3c47c069d1eabfc258f882be5d","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":172,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":173,"context_line":"                    ],"},{"line_number":174,"context_line":"                },"},{"line_number":175,"context_line":"                \u0027fingerprint\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a10cf8c6_ef62a6c1","line":174,"range":{"start_line":169,"start_character":17,"end_line":174,"end_character":18},"in_reply_to":"92fcc735_3bed5719","updated":"2025-06-09 13:52:24.000000000","message":"Interesting. I can do this. I wonder if we want a TODO to remove these soft-delete fields in the future?","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"07b5c58cee753d0473fd8bbd9cf1f8e7aef69e1d","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":172,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":173,"context_line":"                    ],"},{"line_number":174,"context_line":"                },"},{"line_number":175,"context_line":"                \u0027fingerprint\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"}],"source_content_type":"text/x-python","patch_set":7,"id":"f47ea904_2764429d","line":174,"range":{"start_line":169,"start_character":17,"end_line":174,"end_character":18},"in_reply_to":"a10cf8c6_ef62a6c1","updated":"2025-06-09 23:41:50.000000000","message":"yeah, from API we can remove but we need to be careful while deleting from object/DB.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"20abeabe826091f70afe3fd999f08cbabb2fd8fa","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027properties\u0027: {"},{"line_number":167,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":168,"context_line":"                \u0027deleted\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":169,"context_line":"                \u0027deleted_at\u0027: {"},{"line_number":170,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":171,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":172,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":173,"context_line":"                    ],"},{"line_number":174,"context_line":"                },"},{"line_number":175,"context_line":"                \u0027fingerprint\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"}],"source_content_type":"text/x-python","patch_set":7,"id":"30626858_7e21f76c","line":174,"range":{"start_line":169,"start_character":17,"end_line":174,"end_character":18},"in_reply_to":"f47ea904_2764429d","updated":"2025-06-10 09:53:25.000000000","message":"Done","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":true,"context_lines":[{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":178,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":179,"context_line":"                \u0027updated_at\u0027: {"},{"line_number":180,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":181,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":182,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":183,"context_line":"                    ],"},{"line_number":184,"context_line":"                },"},{"line_number":185,"context_line":"                \u0027user_id\u0027: parameter_types.user_id,"},{"line_number":186,"context_line":"            },"},{"line_number":187,"context_line":"            \u0027required\u0027: ["}],"source_content_type":"text/x-python","patch_set":7,"id":"2e9e435c_2ab48194","line":184,"range":{"start_line":179,"start_character":16,"end_line":184,"end_character":18},"updated":"2025-06-06 16:05:19.000000000","message":"From the doc, like \u0027deleted_at\u0027 this field is always null.","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"20abeabe826091f70afe3fd999f08cbabb2fd8fa","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                \u0027id\u0027: {\u0027type\u0027: \u0027integer\u0027},"},{"line_number":177,"context_line":"                \u0027name\u0027: parameter_types.keypair_name_special_chars,"},{"line_number":178,"context_line":"                \u0027public_key\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":179,"context_line":"                \u0027updated_at\u0027: {"},{"line_number":180,"context_line":"                    \u0027oneOf\u0027: ["},{"line_number":181,"context_line":"                        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":182,"context_line":"                        {\u0027type\u0027: \u0027null\u0027},"},{"line_number":183,"context_line":"                    ],"},{"line_number":184,"context_line":"                },"},{"line_number":185,"context_line":"                \u0027user_id\u0027: parameter_types.user_id,"},{"line_number":186,"context_line":"            },"},{"line_number":187,"context_line":"            \u0027required\u0027: ["}],"source_content_type":"text/x-python","patch_set":7,"id":"3f0e33a4_3a6b984b","line":184,"range":{"start_line":179,"start_character":16,"end_line":184,"end_character":18},"in_reply_to":"2e9e435c_2ab48194","updated":"2025-06-10 09:53:25.000000000","message":"Done","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"}],"nova/tests/unit/policies/test_keypairs.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5882695fe69d66cea81eaebc4832aad8f72ff8b9","unresolved":true,"context_lines":[{"line_number":33,"context_line":"    private_key\u003d\u0027ssh-rsa foo\u0027,"},{"line_number":34,"context_line":"    public_key\u003d\u0027ssh-rsa foo\u0027,"},{"line_number":35,"context_line":"    type\u003d\u0027ssh\u0027,"},{"line_number":36,"context_line":"    updated_at\u003ddatetime.datetime(2024, 10, 29, 13, 42, 2),"},{"line_number":37,"context_line":"    user_id\u003duuids.user_alt_id,"},{"line_number":38,"context_line":")"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3d9e40c3_dd9adfba","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":57},"updated":"2025-06-06 16:05:19.000000000","message":"Should be None","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6b18948ad334bdc48e3567736282510af221e519","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    private_key\u003d\u0027ssh-rsa foo\u0027,"},{"line_number":34,"context_line":"    public_key\u003d\u0027ssh-rsa foo\u0027,"},{"line_number":35,"context_line":"    type\u003d\u0027ssh\u0027,"},{"line_number":36,"context_line":"    updated_at\u003ddatetime.datetime(2024, 10, 29, 13, 42, 2),"},{"line_number":37,"context_line":"    user_id\u003duuids.user_alt_id,"},{"line_number":38,"context_line":")"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"25e395ba_261198e4","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":57},"in_reply_to":"3d9e40c3_dd9adfba","updated":"2025-06-10 15:28:15.000000000","message":"Done","commit_id":"64f70797d6d4106f4f7e2e8e13f46a6c683cb9ea"}]}
