)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abc18fac611c2e39fd41e2dcc55367b5af860a5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a1d5484b_fde3f5d1","updated":"2024-02-19 14:12:22.000000000","message":"soft +1 i generally agree with this idea and doing it in tree but before reviing this in detail i want to see what others think","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"10b212d25f479199b1e7896d7d48e0cd4eaf1589","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d5480c77_910c887f","updated":"2024-02-22 12:41:26.000000000","message":"+1 from me\n\nThere is a bunch of schemas that I created manually for the things missing in the source code. It would be great if we could not only add schemas, but directly fill them and operations with usable descriptions that flow into the spec. With the new sphinx-extension this would completely obsolete the api-ref, otherwise spec generator reads rendered html to extract descriptions from there (but this is not great). Keeping that human activity is unnecessary and error prone as we all know.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d9cc2113_ffee09ae","updated":"2024-03-27 12:20:36.000000000","message":"im +1 on the core concept\nsome comments inline","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ff6c7d7d0ea448ef5980c7ff95e51f6c3e20336","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e08fc758_3a1ca21b","in_reply_to":"d5480c77_910c887f","updated":"2024-02-29 14:44:04.000000000","message":"I agree. We currently have no `title` or `description` fields. We should add those are part of this effort. I would like us to get to the point where there would be zero human input needed to generate a spec.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"29c3775cc93cfbc51cd705ce31fe6cb07a97dc3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"340df78f_0ca811f0","updated":"2024-04-10 18:59:39.000000000","message":"On Request (nova side) and response json schema (Tempest side) and its validation, we do have those currently. If any of the validation in any schema is missing we can add those right?\n\nOther things we need to be very careful about adding more strict validation is that we do not break users and if any API validation change behavior then it should be done in microversion (For example we did in 2.75 microversion).","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"47c40ac17f3aa7d495e0dcaff12e5bbb126970b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a58df4ef_731d3072","updated":"2024-03-28 10:37:39.000000000","message":"While I\u0027m quite OK with the usecase, I think the current spec is a bit abstract for Nova : I don\u0027t really know what we need to do for our API.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ab807420_fd6693fe","updated":"2024-05-14 16:40:29.000000000","message":"Addressed the outstanding issues in a follow-up","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fb52ed954774e0d0e862243bc853167bf58407e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"16704753_849cc489","updated":"2024-05-14 10:12:49.000000000","message":"Overall looks good. I have one clarification comment inline.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"189b65fab2806be16076209df5ad075c62ca4709","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4277de84_9a29b47d","updated":"2024-05-03 19:02:10.000000000","message":"Thanks for reply,I think I am good here. seeing Sylvain also reviewing this, I am leaving +W to him or other reviewer wanted to review it.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d9f4af35_5f642e96","updated":"2024-05-02 22:49:13.000000000","message":"This is almost looks good to me except making the response validation configurable. commented my thought inline.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a21259b7_572b9629","updated":"2024-05-01 11:03:24.000000000","message":"i am happy with the overall content fo the spec.\n\nwhile it doesn not detail exactly how the impelmation will be done it descibes the design chocies, tade offs and why specic choices were made or not made.\n\nas such in terms of direction i  think this is at the correct level of detail.\n\nwe could expand this more\ni.e. desicbe how the decorator will be impelmtae dor how the test will be modifed to apply/skip the respoce schema validation but im personally ok with defering that to the implemation reivew.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ea0618a9076ad4425ae8c5509a453d5d55487366","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8b01c31c_017a29ec","updated":"2024-05-03 10:02:20.000000000","message":"im kind of fine with makeing this always error but ill derfer to stephen here.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36718413ae984b487347e8e78c25e6214b5a33de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c323270a_79225fbe","updated":"2024-05-21 08:45:09.000000000","message":"we can address any nits in thefollowup patch","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bba06e5316cae8726335f961cf4da74a1d7946dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"83f5ce6f_1024b1f9","in_reply_to":"d9f4af35_5f642e96","updated":"2024-05-02 22:49:55.000000000","message":"this comment https://review.opendev.org/c/openstack/nova-specs/+/909448/comment/de274165_c516ae96/","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"}],"specs/2024.2/approved/openapi.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abc18fac611c2e39fd41e2dcc55367b5af860a5b","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As an end user, I would like to have access to machine-readable, fully"},{"line_number":50,"context_line":"validated documentation for the APIs I will be interacting with."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an SDK/client developer, I would like to be able to auto-generate bindings"},{"line_number":53,"context_line":"and clients, promoting consistency and minimising the amount of manual work"},{"line_number":54,"context_line":"needed to develop and maintain these."}],"source_content_type":"text/x-rst","patch_set":1,"id":"149aabbb_49a41c54","line":51,"updated":"2024-02-19 14:12:22.000000000","message":"as an end user i want staticaly viewable docuemetaiton hosted as part of the\nexisting docs site without requireing a running nova.\n\nim adding this because i dont think it would be accpable to remove the existing api-ref site or break any of our existing hyperlinks.\n\nwe can supprot this feature in addtion to the api-ref but if we were to ever attpemt to reomve the api and use the openaip defs as a replacment i woudl requrie the ablity to generate static html pages to do that removal.\n\ni.e. even with openapi we need to keep https://docs.openstack.org/api-ref/compute/ or provide a replacement that we can host at that location wiht the same ablity to link too each endpoint directly ideally with the abllity to also expoand/collapse that endpoint via the url.","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52cdd374b6d0061fe436a10028f6eaf40b374fb4","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As an end user, I would like to have access to machine-readable, fully"},{"line_number":50,"context_line":"validated documentation for the APIs I will be interacting with."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an SDK/client developer, I would like to be able to auto-generate bindings"},{"line_number":53,"context_line":"and clients, promoting consistency and minimising the amount of manual work"},{"line_number":54,"context_line":"needed to develop and maintain these."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a5c3d20_a7800b95","line":51,"in_reply_to":"149aabbb_49a41c54","updated":"2024-02-21 18:07:02.000000000","message":"Yeah, I\u0027d expect we\u0027d store a cached version of that dependency in-tree to avoid having to build it every time. The API doesn\u0027t change that frequently.","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abc18fac611c2e39fd41e2dcc55367b5af860a5b","unresolved":true,"context_lines":[{"line_number":119,"context_line":"- Maintain these specs out-of-tree"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"  This prevents us testing these on each commit to Nova and means work that"},{"line_number":122,"context_line":"  could be spread across multiple teams is instead focused on one small team."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Data model impact"},{"line_number":125,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"82838fca_89f0cc93","line":122,"updated":"2024-02-19 14:12:22.000000000","message":"im a hard no on maintianing this out of tree offically.\n\nmeainging i think it would be inappropate for another official project like the openstack sdk to maintian openapi schema defintions for the nova api.\n\nso the only way i htink this could work would be in a new repo that is a deliverable of the compute team i.e. a nova-lib.\n\ni could get behind nova-lib if in addtion to hosting the api schemas it also had the notifocation OVOs and possible all the nova objects.\n\nthe reasoning for that is the notifcation ovo are intended to be imporable to use to parse our notificaitons and it may be nice to have thos in there own lib with the api schemas so that you could generate api and rpc clients.\n\nin generall i would prefer to keep everything in the nova repo so i agree with this being an alternitive and not the prefered path.","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52cdd374b6d0061fe436a10028f6eaf40b374fb4","unresolved":false,"context_lines":[{"line_number":119,"context_line":"- Maintain these specs out-of-tree"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"  This prevents us testing these on each commit to Nova and means work that"},{"line_number":122,"context_line":"  could be spread across multiple teams is instead focused on one small team."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Data model impact"},{"line_number":125,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8aa8561b_67fdc416","line":122,"in_reply_to":"82838fca_89f0cc93","updated":"2024-02-21 18:07:02.000000000","message":"Acknowledged","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abc18fac611c2e39fd41e2dcc55367b5af860a5b","unresolved":true,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Initially there should be no impact as we will continue to use ``os_api_ref``"},{"line_number":239,"context_line":"as-is for our ``api-ref`` docs. Eventually we will replace or extend this"},{"line_number":240,"context_line":"extension to generate documentation from our OpenAPI schema."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"References"},{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"60b8defb_6ca9e2eb","line":240,"updated":"2024-02-19 14:12:22.000000000","message":"ack generation of the api-ref in its current form https://docs.openstack.org/api-ref/compute/ from the open api defs would make sense to do.\n\nthat keeps them in sync and fulfils my request/requirement of maintaining the ability to generate static htmp/pdf versions of that document.","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52cdd374b6d0061fe436a10028f6eaf40b374fb4","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Initially there should be no impact as we will continue to use ``os_api_ref``"},{"line_number":239,"context_line":"as-is for our ``api-ref`` docs. Eventually we will replace or extend this"},{"line_number":240,"context_line":"extension to generate documentation from our OpenAPI schema."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"References"},{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9c57922d_5d5af030","line":240,"in_reply_to":"60b8defb_6ca9e2eb","updated":"2024-02-21 18:07:02.000000000","message":"Acknowledged","commit_id":"235a019801f5ae30bc82409818d19a57af88aafc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":35,"context_line":"the development of widely used API description languages like OpenAPI, RAML and"},{"line_number":36,"context_line":"API Blueprint, as well as supporting SaaS tools such as Postman and Apigee."},{"line_number":37,"context_line":"OpenAPI in particular has seen broad adoption across multiple sectors, with"},{"line_number":38,"context_line":"sites as varied as `CloudFlare`__ and `GitHub`__ providing OpenAPI schemas for"},{"line_number":39,"context_line":"their APIs. OpenAPI has evolved significantly in recent years and now supports"},{"line_number":40,"context_line":"a wide variety of API patterns including things like webhooks. Even more"},{"line_number":41,"context_line":"beneficial for OpenStack, OpenAPI 3.1 is a full superset of JSON Schema meaning"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9cb87aa8_9a137937","line":38,"range":{"start_line":38,"start_character":19,"end_line":38,"end_character":49},"updated":"2024-03-27 12:20:36.000000000","message":"by the way i would prefer if we avoid the annomous link style if we have mulitple links before the definitions.\n\nits too easy for them to get reorded ectra so can we go back to the named liks style\n```\n`CloudFlare`_\n\n.. _CloudFlare: https://blog.cloudflare.com/open-api-transition\n```\n\nim fine with the annoums styple if there is no other link between the the usage and the defintion but even then i generally prefer the older style.\n\ndocumented in https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#links-to-external-web-pages\nand here https://docutils.sourceforge.io/docs/user/rst/quickref.html#inline-markup","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6073238e3a39282ebac81959764a1142f31ce32e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"the development of widely used API description languages like OpenAPI, RAML and"},{"line_number":36,"context_line":"API Blueprint, as well as supporting SaaS tools such as Postman and Apigee."},{"line_number":37,"context_line":"OpenAPI in particular has seen broad adoption across multiple sectors, with"},{"line_number":38,"context_line":"sites as varied as `CloudFlare`__ and `GitHub`__ providing OpenAPI schemas for"},{"line_number":39,"context_line":"their APIs. OpenAPI has evolved significantly in recent years and now supports"},{"line_number":40,"context_line":"a wide variety of API patterns including things like webhooks. Even more"},{"line_number":41,"context_line":"beneficial for OpenStack, OpenAPI 3.1 is a full superset of JSON Schema meaning"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4da5e131_7f9b8b81","line":38,"range":{"start_line":38,"start_character":19,"end_line":38,"end_character":49},"in_reply_to":"9cb87aa8_9a137937","updated":"2024-03-27 17:13:52.000000000","message":"I make sure to always place them at the bottom of the section they are used in, so this is rarely if ever an issue for me.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"As a Nova developer, I would like to have a verified API specification that I"},{"line_number":61,"context_line":"can use should I need to replace the libraries we use in the event they are no"},{"line_number":62,"context_line":"longer maintained."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed change"},{"line_number":65,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f5006b74_e1d0bc78","line":62,"updated":"2024-03-27 12:20:36.000000000","message":"^ that is a more likely thing the we might like although we currently are using jsonschema so hopefuly that is not an issue.\n\ni would like however to have that option and maybe even premetivly move if it would symplfy our codbase, that just does nto have to be done in this spec","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f2e5ddda29cc49dd5d3d66fc4fe0142a1b0eff81","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"As a Nova developer, I would like to have a verified API specification that I"},{"line_number":61,"context_line":"can use should I need to replace the libraries we use in the event they are no"},{"line_number":62,"context_line":"longer maintained."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed change"},{"line_number":65,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c80d3fd3_89b48a95","line":62,"in_reply_to":"5bd1d0e0_b13f2477","updated":"2024-04-07 04:50:02.000000000","message":"oh ok for what its worth i would prefer to move to flask or one fo the more moderen api frameworks but ya this could help with that at some point","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6073238e3a39282ebac81959764a1142f31ce32e","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"As a Nova developer, I would like to have a verified API specification that I"},{"line_number":61,"context_line":"can use should I need to replace the libraries we use in the event they are no"},{"line_number":62,"context_line":"longer maintained."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed change"},{"line_number":65,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5bd1d0e0_b13f2477","line":62,"in_reply_to":"f5006b74_e1d0bc78","updated":"2024-03-27 17:13:52.000000000","message":"I didn\u0027t mean replacing jsonschema. I meant replacing webob or routes (the latter of which is no longer actively maintained, and the former of which is barely maintained from the looks of things)","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"cdb8738dd48c7302680761f16ea4d55f3f4d4b21","unresolved":true,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- Add response body schemas"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  These will be auto-generated from JSON response bodies generated in tests,"},{"line_number":80,"context_line":"  before being manually inspected to handle things like enum values."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  Once these are added, tests will be added to ensure all API resource have"}],"source_content_type":"text/x-rst","patch_set":2,"id":"61c12355_2001447c","line":79,"updated":"2024-02-29 09:48:16.000000000","message":"I think more reasonable would be to start with schemas already defined in openstack-codegenerator project since they are already mostly reviewed by human for sanity and address document bugs, microversions and actions. This can save quote lot of time.\n\nImportant: openstack-codegenerator does not currently have schemas for deprecated methods","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ff6c7d7d0ea448ef5980c7ff95e51f6c3e20336","unresolved":true,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- Add response body schemas"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  These will be auto-generated from JSON response bodies generated in tests,"},{"line_number":80,"context_line":"  before being manually inspected to handle things like enum values."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  Once these are added, tests will be added to ensure all API resource have"}],"source_content_type":"text/x-rst","patch_set":2,"id":"6dea2f3c_9a8a94b2","line":79,"in_reply_to":"61c12355_2001447c","updated":"2024-02-29 14:44:04.000000000","message":"\u003e I think more reasonable would be to start with schemas already defined in openstack-codegenerator project since they are already mostly reviewed by human for sanity and address document bugs, microversions and actions. This can save quote lot of time.\n\nNot a bad idea.\n\n\u003e Important: openstack-codegenerator does not currently have schemas for deprecated methods\n\nOkay. We don\u0027t want to add these for removed (`HTTP 410 (Gone)`) APIs. We should have them for deprecated APIs though.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- Add response body schemas"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  These will be auto-generated from JSON response bodies generated in tests,"},{"line_number":80,"context_line":"  before being manually inspected to handle things like enum values."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  Once these are added, tests will be added to ensure all API resource have"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b7f7acf1_c21a6237","line":79,"in_reply_to":"6dea2f3c_9a8a94b2","updated":"2024-03-27 12:20:36.000000000","message":"starting with those is fine but we will need to review them again when adding them to the nova repo for correctness.\n\ni agree that doing this for remvoed api like nova network is not somethign we should do. deprecated apis woudl be a low priority but dependign on the continued usage there may be some value so as long a we have not moved the api but just deprecated some usage of the api i.e. the force parmaters for live migration we still proably would want validatidtion for the deprecated microverions.\n\nthat would be a lower priorty for me then covering the actully supproted parts.\nso i would conder validateion fo deprectated functionality in older microversion to be a strech goal.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6073238e3a39282ebac81959764a1142f31ce32e","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- Add response body schemas"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  These will be auto-generated from JSON response bodies generated in tests,"},{"line_number":80,"context_line":"  before being manually inspected to handle things like enum values."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  Once these are added, tests will be added to ensure all API resource have"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4ed2b6d8_35edf5b6","line":79,"in_reply_to":"b7f7acf1_c21a6237","updated":"2024-03-27 17:13:52.000000000","message":"\u003e starting with those is fine but we will need to review them again when adding them to the nova repo for correctness.\n\nFYI API sample tests do this for us. At least for APIs that have not been removed.\n\n\u003e i agree that doing this for remvoed api like nova network is not somethign we should do. deprecated apis woudl be a low priority but dependign on the continued usage there may be some value so as long a we have not moved the api but just deprecated some usage of the api i.e. the force parmaters for live migration we still proably would want validatidtion for the deprecated microverions.\n\nWe\u0027ll actually need to do this if we want to use the schema for our api-ref docs.\n\n\u003e that would be a lower priorty for me then covering the actully supproted parts.\n\u003e so i would conder validateion fo deprectated functionality in older microversion to be a strech goal.\n\nAgreed.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":109,"context_line":"    The development of tooling required to gather these JSON Schema schemas and"},{"line_number":110,"context_line":"    generate an OpenAPI schema will not be developed inside Nova and is"},{"line_number":111,"context_line":"    therefore not covered by this spec. Nova will merely consume the resulting"},{"line_number":112,"context_line":"    tooling for use in documentation."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatives"},{"line_number":115,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"871724db_705d5722","line":112,"updated":"2024-03-27 12:20:36.000000000","message":"right but unless we make this an entirly optional feature we muct make nova not have a hard dep on those tools\n\nwhile i am warming to rust its not an approved langruge for use in openstack.\nso the tools artem ahs created cannot be a hard depency of nova.\nhttps://github.com/openstack/governance/blob/master/resolutions/20150901-programming-languages.rst\n\nwe are allowed to use other languages for experiment but we cant create new openstack porjects in rust today.\n\nfrom my perspective there is a gray line around using somethign like py03\npyoxide will allow rust tool to be exposed via python bindings so the usage of the libs would still be via python and there is no diffent to having a c module or rust module in my view.\n\nwhen talking about clis there may be addtional leyway there that would not be affored if its driectly called by nova runtime code.\nthe main implication for that is we will need to keep the api ref/schema generation\nopetional like the pdf generations.\n\ni.e. if you have the tool installsed then a given tox target can be used to generate the openapi schemea docs  \n\nif you dont then the normal docs target shoudl be able to generate the api ref as normal.\n\nif we want to change that we need to add rust just like go was added \n\nhttps://github.com/openstack/governance/blob/master/resolutions/20170329-golang-use-case.rst\n\ni think we should do that for what its worth.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6073238e3a39282ebac81959764a1142f31ce32e","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    The development of tooling required to gather these JSON Schema schemas and"},{"line_number":110,"context_line":"    generate an OpenAPI schema will not be developed inside Nova and is"},{"line_number":111,"context_line":"    therefore not covered by this spec. Nova will merely consume the resulting"},{"line_number":112,"context_line":"    tooling for use in documentation."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatives"},{"line_number":115,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aca9bbd_6983dd7a","line":112,"in_reply_to":"871724db_705d5722","updated":"2024-03-27 17:13:52.000000000","message":"\u003e right but unless we make this an entirly optional feature we muct make nova not have a hard dep on those tools\n\u003e \n\u003e while i am warming to rust its not an approved langruge for use in openstack.\n\u003e so the tools artem ahs created cannot be a hard depency of nova.\n\u003e https://github.com/openstack/governance/blob/master/resolutions/20150901-programming-languages.rst\n\u003e \n\u003e we are allowed to use other languages for experiment but we cant create new openstack porjects in rust today.\n\u003e\n\u003e from my perspective there is a gray line around using somethign like py03\n\u003e pyoxide will allow rust tool to be exposed via python bindings so the usage of the libs would still be via python and there is no diffent to having a c module or rust module in my view.\n\u003e \n\u003e when talking about clis there may be addtional leyway there that would not be affored if its driectly called by nova runtime code.\n\u003e the main implication for that is we will need to keep the api ref/schema generation\n\u003e opetional like the pdf generations.\n\u003e \n\u003e i.e. if you have the tool installsed then a given tox target can be used to generate the openapi schemea docs  \n\u003e \n\u003e if you dont then the normal docs target shoudl be able to generate the api ref as normal.\n\u003e \n\u003e if we want to change that we need to add rust just like go was added \n\u003e \n\u003e https://github.com/openstack/governance/blob/master/resolutions/20170329-golang-use-case.rst\n\u003e \n\u003e i think we should do that for what its worth.\n\ngtema\u0027s tools are all Python based. It has to be, since we\u0027re introspecting stuff. The Rust code he has is to generate a CLI which is not directly related to this effort.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":123,"context_line":"- Maintain these specs out-of-tree"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"  This prevents us testing these on each commit to Nova and means work that"},{"line_number":126,"context_line":"  could be spread across multiple teams is instead focused on one small team."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Data model impact"},{"line_number":129,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"512c6185_9ba2c30e","line":126,"updated":"2024-03-27 12:20:36.000000000","message":"+1\n\ni don\u0027t like the idea of any official schema being released outside of the project that maintains the API.\n\nim entrily fine with enhancing nova to provide this sepecially if we can take a code as schma approch where we can genrate it form annotation on the code.\nor other in tree data.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc5c526134dd3b654fd3d2ab67d2c4ec8dbcb56e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"- Maintain these specs out-of-tree"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"  This prevents us testing these on each commit to Nova and means work that"},{"line_number":126,"context_line":"  could be spread across multiple teams is instead focused on one small team."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Data model impact"},{"line_number":129,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c03f981a_82c31d32","line":126,"in_reply_to":"512c6185_9ba2c30e","updated":"2024-03-28 10:29:26.000000000","message":"Acknowledged","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":136,"context_line":"There will be no direct REST API impact. Users will see HTTP 500 error if they"},{"line_number":137,"context_line":"set ``[api] response_validation \u003d error`` and encounter an invalid response,"},{"line_number":138,"context_line":"however, we will not encourage use of this option in production initially and"},{"line_number":139,"context_line":"will instead focus on validating this ourselves in CI."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"We may wish to address issues that are uncovered as we add schemas, but this"},{"line_number":142,"context_line":"work is considered secondary to this effort and can be tackled separately."}],"source_content_type":"text/x-rst","patch_set":2,"id":"0e57b3aa_aa76b158","line":139,"updated":"2024-03-27 12:20:36.000000000","message":"this might be a good way in functional or tempest test ot catch if a patch modifed an api without updating the schemea. but yes i think rusing this in production woudl be wrong.\n\nthe operatiosn would still ahve been performed and if something was added to the server show that was not allowed by the schema then you would not be able to discover why and it would casclade and break list\n\nso i think the error mode is probably better modled as a workaround or something similar to make it clear this should never be used in production.\n\ni.e.\n[workarounds]\nresponce_validation_is_fatal\u003dTrue|False\n\nto mirror the vif plug is fatal option","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6073238e3a39282ebac81959764a1142f31ce32e","unresolved":false,"context_lines":[{"line_number":136,"context_line":"There will be no direct REST API impact. Users will see HTTP 500 error if they"},{"line_number":137,"context_line":"set ``[api] response_validation \u003d error`` and encounter an invalid response,"},{"line_number":138,"context_line":"however, we will not encourage use of this option in production initially and"},{"line_number":139,"context_line":"will instead focus on validating this ourselves in CI."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"We may wish to address issues that are uncovered as we add schemas, but this"},{"line_number":142,"context_line":"work is considered secondary to this effort and can be tackled separately."}],"source_content_type":"text/x-rst","patch_set":2,"id":"161c9bc3_3e88d07e","line":139,"in_reply_to":"0e57b3aa_aa76b158","updated":"2024-03-27 17:13:52.000000000","message":"While I don\u0027t think it should be used in production, I *do* think DevStack should allow setting it and it should be set in integration jobs (or set by default in DevStack) once things are stabilised. Our schemas are our docs so failures should be be somewhat painful IMO.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0ee5f336aaeed604a6891cbf59b62a4b9a2b643b","unresolved":true,"context_lines":[{"line_number":178,"context_line":"Developer impact"},{"line_number":179,"context_line":"----------------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Developers working on the API microversions will now be encouraged to provide"},{"line_number":182,"context_line":"JSON Schema schemas for both requests and responses."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Upgrade impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7c595494_871316b8","line":181,"range":{"start_line":181,"start_character":56,"end_line":181,"end_character":66},"updated":"2024-03-26 17:58:37.000000000","message":"required","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6073238e3a39282ebac81959764a1142f31ce32e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"Developer impact"},{"line_number":179,"context_line":"----------------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Developers working on the API microversions will now be encouraged to provide"},{"line_number":182,"context_line":"JSON Schema schemas for both requests and responses."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Upgrade impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c11bf33f_ab80a0d9","line":181,"range":{"start_line":181,"start_character":56,"end_line":181,"end_character":66},"in_reply_to":"11e2a5da_7e5deae4","updated":"2024-03-27 17:13:52.000000000","message":"Acknowledged","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0775433c9e5f300bd070f6e0badbdb8e0433ee11","unresolved":true,"context_lines":[{"line_number":178,"context_line":"Developer impact"},{"line_number":179,"context_line":"----------------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Developers working on the API microversions will now be encouraged to provide"},{"line_number":182,"context_line":"JSON Schema schemas for both requests and responses."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Upgrade impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"11e2a5da_7e5deae4","line":181,"range":{"start_line":181,"start_character":56,"end_line":181,"end_character":66},"in_reply_to":"7c595494_871316b8","updated":"2024-03-27 12:20:36.000000000","message":"i was going to suggest \"required by tests\" as in could we write some generic test that asserts there is at least one schema for ever microverion.\n\nwhere that would bereak is the removeal fo an api. but that realy happens.\nin either case it would be nice is we had something liek the opbject hash tests tha t will fail if you moify an object that could fail if you modify an api\n\nthat might not be practical however.","commit_id":"506e904394ef20ad7729a38c9366aa5406d68568"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"29c3775cc93cfbc51cd705ce31fe6cb07a97dc3f","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Add missing request body and query string schemas"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  These schemas will merely validate what is already allowed, which means"},{"line_number":72,"context_line":"  extensive use of ``\"additionalProperties\": true`` or empty schemas."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"  Once these are added, tests will be added to ensure all API resource have"},{"line_number":75,"context_line":"  appropriate schemas."}],"source_content_type":"text/x-rst","patch_set":5,"id":"39feb245_f08c86d8","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":69},"updated":"2024-04-10 18:59:39.000000000","message":"so we have made all the schema with additionalProperties\u003dFalse in microversion 2.75. I think we have made API request more restrictive and hard to use incorrectly with existing json shcema validation. I am not sure which schema are empty and if there are we can always improve those.\n\n- https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id68","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"11fb4e39676277c9a863df70da4602f57d82e74f","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Add missing request body and query string schemas"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  These schemas will merely validate what is already allowed, which means"},{"line_number":72,"context_line":"  extensive use of ``\"additionalProperties\": true`` or empty schemas."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"  Once these are added, tests will be added to ensure all API resource have"},{"line_number":75,"context_line":"  appropriate schemas."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3900f934_a2b089a2","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":69},"in_reply_to":"39feb245_f08c86d8","updated":"2024-04-11 09:19:37.000000000","message":"I\u0027ve clarified the wording here and added an addendum indicating the methods that are missing schemas right now.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"29c3775cc93cfbc51cd705ce31fe6cb07a97dc3f","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  Once these are added, tests will be added to ensure all API resource have"},{"line_number":75,"context_line":"  appropriate schemas."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- Add response body schemas"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  These will be sourced from both existing OpenAPI schemas, currently published"},{"line_number":80,"context_line":"  at `github.com/gtema/openstack-openapi`__, and from new schemas"},{"line_number":81,"context_line":"  auto-generated from JSON response bodies generated in tests and manually"},{"line_number":82,"context_line":"  modified handle things like enum values."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  Once these are added, tests will be added to ensure all API resource have"},{"line_number":85,"context_line":"  appropriate response body schemas. In addition, we will add a new"},{"line_number":86,"context_line":"  configuration option that will control how we do verification at"},{"line_number":87,"context_line":"  the API layer, ``[api] response_validation``. This will be an enum value with"},{"line_number":88,"context_line":"  three options:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  ``error``"},{"line_number":91,"context_line":"    Raise a HTTP 500 (Server Error) in the event that an API returns an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3adec4c6_193c799b","line":88,"range":{"start_line":77,"start_character":0,"end_line":88,"end_character":16},"updated":"2024-04-10 18:59:39.000000000","message":"We already have that but in the tempest side. We have the response schema for all the compute APIs and all microversions[1]. Each API call made by the Tempest tests in all jobs validate the API response schema[2] and fails if there is any unknown field or type. This has been a strict validation and helped us to avoid any backward compatible changes.\n\nIf we want to do such validation at Nova side, we can discuss to move Tempest response schema and it validation in Nova API side.\n\n[1] https://github.com/openstack/tempest/tree/c0da6e843a74c2392c8e87e8ff36d2fea12949c4/tempest/lib/api_schema/response/compute\n\n[2] https://github.com/openstack/tempest/blob/c0da6e843a74c2392c8e87e8ff36d2fea12949c4/tempest/lib/services/compute/servers_client.py#L126","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"11fb4e39676277c9a863df70da4602f57d82e74f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  Once these are added, tests will be added to ensure all API resource have"},{"line_number":75,"context_line":"  appropriate schemas."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- Add response body schemas"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  These will be sourced from both existing OpenAPI schemas, currently published"},{"line_number":80,"context_line":"  at `github.com/gtema/openstack-openapi`__, and from new schemas"},{"line_number":81,"context_line":"  auto-generated from JSON response bodies generated in tests and manually"},{"line_number":82,"context_line":"  modified handle things like enum values."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  Once these are added, tests will be added to ensure all API resource have"},{"line_number":85,"context_line":"  appropriate response body schemas. In addition, we will add a new"},{"line_number":86,"context_line":"  configuration option that will control how we do verification at"},{"line_number":87,"context_line":"  the API layer, ``[api] response_validation``. This will be an enum value with"},{"line_number":88,"context_line":"  three options:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  ``error``"},{"line_number":91,"context_line":"    Raise a HTTP 500 (Server Error) in the event that an API returns an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"07c57752_0f04ed4a","line":88,"range":{"start_line":77,"start_character":0,"end_line":88,"end_character":16},"in_reply_to":"3adec4c6_193c799b","updated":"2024-04-11 09:19:37.000000000","message":"I\u0027ve updated the spec to reflect this.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"47c40ac17f3aa7d495e0dcaff12e5bbb126970b5","unresolved":true,"context_lines":[{"line_number":211,"context_line":"Work Items"},{"line_number":212,"context_line":"----------"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1cafeecf_b3b40797","line":214,"updated":"2024-03-28 10:37:39.000000000","message":"I\u0027d like to know which ones by this spec. I can\u0027t find anyone AFAICR so I\u0027d be interested in knowing the ones and how many we need to add.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99aad33ead735f753ec6e376dd2dd9274c4141ac","unresolved":false,"context_lines":[{"line_number":211,"context_line":"Work Items"},{"line_number":212,"context_line":"----------"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"}],"source_content_type":"text/x-rst","patch_set":5,"id":"46906d4b_1d5497de","line":214,"in_reply_to":"1cafeecf_b3b40797","updated":"2024-03-28 17:22:48.000000000","message":"Many of our actions do no validation of the value. For example, this is currently completely valid:\n\n```\nPOST /servers/123/action\n{\n    \"pause\": {\n        \"foo\": \"bar\",\n        \"wow\": [\"this should not be allowed, surely\"]\n    }\n}\n```\n\nMy plan is add very loose schemas that continue to allow this (i.e. effectively empty schemas for now), with the idea being that we could (could, not must) tighten them up in a future microversion. That tightening up of the schema is explicitly out-of-scope of this effort.\n\nIn addition, many of the deprecated and removed APIs have no schemas. This isn\u0027t a big deal right now - they\u0027re deprecated/removed - but it does matter from a schema generation (and therefore client and doc generation) perspective.\n\nThese gaps will be obvious once I push up patches, given I am adding tests to validate that all `POST` actions are decorated correctly (see below). I can list them here but hopefully you can take my word on this (and my explanation above).","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"93b8ee2308b19d75448e9046567e97f549b8ab30","unresolved":false,"context_lines":[{"line_number":211,"context_line":"Work Items"},{"line_number":212,"context_line":"----------"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f41158dc_1e8e1401","line":214,"in_reply_to":"46906d4b_1d5497de","updated":"2024-03-28 18:04:40.000000000","message":"For what it\u0027s worth, here are the methods that my test shows as missing request body schemas right now:\n\n- `AdminActionsController._inject_network_info`                                                                                                                               \n- `AdminActionsController._reset_network`                                                                                                                                         \n- `AgentController.create`                                                                                                                                                        \n- `AgentController.update`                                                                                                                                                        \n- `BareMetalNodeController._add_interface`                                                                                                                                        \n- `BareMetalNodeController._remove_interface`                                                                                                                                     \n- `BareMetalNodeController.create`                                                                                                                                                \n- `CellsController.create`                                                                                                                                                        \n- `CellsController.sync_instances`                                                                                                                                                \n- `CellsController.update`                                                                                                                                                        \n- `CertificatesController.create`                                                                                                                                                 \n- `CloudpipeController.create`                                                                                                                                                    \n- `CloudpipeController.update`                                                                                                                                                    \n- `ConsolesController.create`                                                                                                                                                     \n- `DeferredDeleteController._force_delete`                                                                                                                                        \n- `DeferredDeleteController._restore`                                                                                                                                             \n- `FixedIPController.reserve`                                                                                                                                                     \n- `FixedIPController.unreserve`                                                                                                                                                   \n- `FloatingIPBulkController.create`                                                                                                                                               \n- `FloatingIPBulkController.update`                                                                                                                                               \n- `FloatingIPController.create`\n- `FloatingIPBulkController.create`                                                                                                                                               \n- `FloatingIPBulkController.update`                                                                                                                                               \n- `FloatingIPController.create`                                                                                                                                                   \n- `FloatingIPDNSDomainController.update`                                                                                                                                          \n- `FloatingIPDNSEntryController.update`                                                                                                                                           \n- `LockServerController._unlock`\n- `NetworkAssociateActionController._associate_host`\n- `NetworkAssociateActionController._disassociate_host_only`\n- `NetworkAssociateActionController._disassociate_project_only`\n- `NetworkController._disassociate_host_and_project`\n- `NetworkController.add`\n- `NetworkController.create`\n- `PauseServerController._pause`\n- `PauseServerController._unpause`\n- `RemoteConsolesController.get_rdp_console` \n- `RescueController._unrescue`\n- `SecurityGroupActionController._addSecurityGroup`\n- `SecurityGroupActionController._removeSecurityGroup`\n- `SecurityGroupController.create`\n- `SecurityGroupController.update`\n- `SecurityGroupDefaultRulesController.create`\n- `SecurityGroupRulesController.create`\n- `ServersController._action_confirm_resize` \n- `ServersController._action_revert_resize`\n- `ServersController._start_server`\n- `ServersController._stop_server`\n- `ShelveController._shelve`\n- `ShelveController._shelve_offload`\n- `SuspendServerController._resume`\n- `SuspendServerController._suspend`\n- `TenantNetworkController.create`\n\nI can dump this in here if you want but like as noted proving things via code (in a test) seems better","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e43f414d0ffa6419c5e77fb9346ec279ca384b39","unresolved":false,"context_lines":[{"line_number":211,"context_line":"Work Items"},{"line_number":212,"context_line":"----------"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2ae2a244_533df84d","line":214,"in_reply_to":"f41158dc_1e8e1401","updated":"2024-04-11 10:13:16.000000000","message":"I dumped it in the spec.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"47c40ac17f3aa7d495e0dcaff12e5bbb126970b5","unresolved":true,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1d41b781_1b337908","line":216,"updated":"2024-03-28 10:37:39.000000000","message":"ditto here.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99aad33ead735f753ec6e376dd2dd9274c4141ac","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"}],"source_content_type":"text/x-rst","patch_set":5,"id":"72ed7f81_eb601d27","line":216,"in_reply_to":"1d41b781_1b337908","updated":"2024-03-28 17:22:48.000000000","message":"While query strings are possible for all HTTP methods, we only use them for `GET` requests. So this means every `index`, `detail` and `show` method that doesn\u0027t currently have a `validation.query_schema` decorator. As above, I _could_ list these but as I am including a test to make sure all methods that accept `GET` request are decorated, I\u0027d rather not if that\u0027s okay.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"93b8ee2308b19d75448e9046567e97f549b8ab30","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8fe7fdc0_c1f237f6","line":216,"in_reply_to":"72ed7f81_eb601d27","updated":"2024-03-28 18:04:40.000000000","message":"As above, here\u0027s my current list for APIs missing query string schemas:\n\n- `AgentController.index`\n- `AggregateController.index`\n- `AggregateController.show`\n- `AvailabilityZoneController.detail`\n- `AvailabilityZoneController.index`\n- `BareMetalNodeController.index`\n- `BareMetalNodeController.show`\n- `CellsController.capacities`\n- `CellsController.detail`\n- `CellsController.index`\n- `CellsController.info`\n- `CellsController.show`\n- `CertificatesController.show`\n- `CloudpipeController.index`\n- `ConsoleAuthTokensController.show`\n- `ConsolesController.index`\n- `ConsolesController.show`\n- `ExtensionInfoController.index`\n- `ExtensionInfoController.show`\n- `FixedIPController.show`\n- `FlavorAccessController.index`\n- `FlavorExtraSpecsController.index`\n- `FlavorExtraSpecsController.show`\n- `FlavorsController.show`\n- `FloatingIPBulkController.index`\n- `FloatingIPBulkController.show`\n- `FloatingIPController.index`\n- `FloatingIPController.show`\n- `FloatingIPDNSDomainController.index`\n- `FloatingIPDNSEntryController.show`\n- `FloatingIPPoolsController.index`\n- `FpingController.index`\n- `FpingController.show`\n- `HostController.reboot`\n- `HostController.show`\n- `HostController.shutdown`\n- `HostController.startup`\n- `HypervisorsController.detail`\n- `HypervisorsController.index`\n- `HypervisorsController.search`\n- `HypervisorsController.servers`\n- `HypervisorsController.show`\n- `HypervisorsController.statistics`\n- `HypervisorsController.uptime`\n- `IPsController.index`\n- `IPsController.show`\n- `ImageMetadataController.index`\n- `ImageMetadataController.show`\n- `ImagesController.detail`\n- `ImagesController.index`\n- `ImagesController.show`\n- `InstanceActionsController.index`\n- `InstanceActionsController.show`\n- `InstanceUsageAuditLogController.index`\n- `InstanceUsageAuditLogController.show`\n- `InterfaceAttachmentController.index`\n- `InterfaceAttachmentController.show`\n- `NetworkController.index`\n- `NetworkController.show`\n- `QuotaClassSetsController.show`\n- `QuotaSetsController.defaults`\n- `QuotaSetsController.detail`\n- `QuotaSetsController.show`\n- `SecurityGroupController.show`\n- `SecurityGroupDefaultRulesController.index`\n- `SecurityGroupDefaultRulesController.show`\n- `ServerDiagnosticsController.index`\n- `ServerGroupController.show`\n- `ServerMetadataController.index`\n- `ServerMetadataController.show`\n- `ServerMigrationsController.index`\n- `ServerMigrationsController.show`\n- `ServerPasswordController.index`\n- `ServerSecurityGroupController.index`\n- `ServerTagsController.index`\n- `ServerTagsController.show`\n- `ServerTopologyController.index`\n- `ServerVirtualInterfaceController.index`\n- `ServersController.show`\n- `SnapshotController.show`\n- `TenantNetworkController.index`\n- `TenantNetworkController.show`\n- `VersionsController.show`\n- `VolumeAttachmentController.show`\n- `VolumeController.show`\n\nMany of these are expected since they\u0027re dead APIs, but we will want the (minimal) schemas in place for documentation purposes.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e43f414d0ffa6419c5e77fb9346ec279ca384b39","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"- Add missing request body schemas"},{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"}],"source_content_type":"text/x-rst","patch_set":5,"id":"861097be_865c8fc1","line":216,"in_reply_to":"8fe7fdc0_c1f237f6","updated":"2024-04-11 10:13:16.000000000","message":"I dumped it in the spec.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"47c40ac17f3aa7d495e0dcaff12e5bbb126970b5","unresolved":true,"context_lines":[{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"f3a696ec_7a703812","line":218,"updated":"2024-03-28 10:37:39.000000000","message":"ditto here","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99aad33ead735f753ec6e376dd2dd9274c4141ac","unresolved":false,"context_lines":[{"line_number":215,"context_line":"- Add tests to validate existence of request body schemas"},{"line_number":216,"context_line":"- Add missing query string schemas"},{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"6d841a24_d32b8dac","line":218,"in_reply_to":"f3a696ec_7a703812","updated":"2024-03-28 17:22:48.000000000","message":"We currently have no schemas for response bodies (or anything else in the response), so this will apply to every API and action we have.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"47c40ac17f3aa7d495e0dcaff12e5bbb126970b5","unresolved":true,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"c22a6926_fdbe191c","line":220,"updated":"2024-03-28 10:37:39.000000000","message":"I guess we\u0027re missing the main point : we could use another tool then.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"11fb4e39676277c9a863df70da4602f57d82e74f","unresolved":false,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8071b9c5_99cc8943","line":220,"in_reply_to":"4bee64e7_30e764a9","updated":"2024-04-11 09:19:37.000000000","message":"\u003e i hope that if we proceed with this spec one of the actions would be removing the hardcode schmea for nova form that repo\n\nWhat gtema said. The hardcoding of specs and schemas is intended as a stopgap solution until we get the schemas in-tree and can build the specs there (i.e. the _whole_ purpose of this spec and effort in general). We **do not** want to maintain these out-of-tree for all the reasons I have listed in the spec.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"0678734a690d3c95903ee9c1bd16eeb945e217ed","unresolved":true,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9c347137_9e57ba73","line":220,"in_reply_to":"746b6624_bfab33e2","updated":"2024-03-28 17:27:30.000000000","message":"the tool exactly for that lives in openstack/codegenerator and has dedicated zuul jobs for generating spec by inspecting router.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f2e5ddda29cc49dd5d3d66fc4fe0142a1b0eff81","unresolved":true,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9705d4a2_9cbec8aa","line":220,"in_reply_to":"78749f3f_8041f6dc","updated":"2024-04-07 04:50:02.000000000","message":"i am pretty sad to see that that repo was create containing schema for nova as i objected to that explictly on the mailing list\n\nhttps://opendev.org/openstack/codegenerator/src/branch/master/codegenerator/openapi/nova_schemas.py\n\ni hope that if we proceed with this spec one of the actions would be removing the hardcode schmea for nova form that repo\n\nthe comninded openai schema for nova should be a build output of the nova repo hosted on a page of our docs sight and ideally generatable by runing the tool hosted in the codegenerator repo for packagers.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"b25f2c2fc1c6f0042d0428efc515eff67bb8f357","unresolved":true,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4bee64e7_30e764a9","line":220,"in_reply_to":"9705d4a2_9cbec8aa","updated":"2024-04-07 06:08:44.000000000","message":"the code is full of comments that those schemas are only temporary in the generator and are to be moved into corresponding services code. I was also writing explicitly that this is going to be do e like that. Point is not to get stuck while discussing but instead having the code and possible result visible and further work on normalizing the code. There is now less work to do since schemas are created and just need to be moved between repos. Other services are not that far to start even discussing, so without schemas temporary implemented in the generator we would not be a single step ahead with the idea of having OpenAPI specs available at all.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ca486be9b45986b59f019f5019d854af61ba18d7","unresolved":true,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"78749f3f_8041f6dc","line":220,"in_reply_to":"9c347137_9e57ba73","updated":"2024-03-28 18:05:29.000000000","message":"Thanks, gtema. I wasn\u0027t sure if it was in `openstack/*` yet. That\u0027s good to know 🎉","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99aad33ead735f753ec6e376dd2dd9274c4141ac","unresolved":true,"context_lines":[{"line_number":217,"context_line":"- Add tests to validate existence of query string schemas"},{"line_number":218,"context_line":"- Add response body schemas"},{"line_number":219,"context_line":"- Add decorator to validate response body schemas against response"},{"line_number":220,"context_line":"- Add tests to validate existence of response body schemas"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Dependencies"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"746b6624_bfab33e2","line":220,"in_reply_to":"c22a6926_fdbe191c","updated":"2024-03-28 17:22:48.000000000","message":"~~I don\u0027t understand. Could you rephrase? Another tool for what?~~\n\nLater: Oh, you\u0027re asking what we do next once we have added all these schemas? After that we will need a tool that will inspect our `Router`, extract the schemas for each path+method(+action), and spit out an openapi spec that uses all these schemas combined. I haven\u0027t included this step here yet since I\u0027m still not certain where this tool will live and I don\u0027t want to lie. While the Sphinx extension and code generator should definitely *not* live in Nova (since it\u0027s broadly applicable), the code to generate the schema file _could_. I\u0027d like to discuss this at the PTG and I suspect the decision on where it lives will be based on our ability to use similar tooling across Nova, Cinder, Glance, etc. In any case, this shouldn\u0027t stop us pushing ahead with adding schemas since we will eventually be able to use them _somehow_.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"47c40ac17f3aa7d495e0dcaff12e5bbb126970b5","unresolved":true,"context_lines":[{"line_number":227,"context_line":"existing project, such as ``os_api_ref`` or ``openstacksdk``, or inside a"},{"line_number":228,"context_line":"wholly new project. In any case, it is envisaged that this tool will handle"},{"line_number":229,"context_line":"OpenStack-specific nuances like microversions that don\u0027t map 1:1 to OpenAPI"},{"line_number":230,"context_line":"concepts in a consistent and documented fashion."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Testing"},{"line_number":233,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"eb7fa1de_0e0ea052","line":230,"updated":"2024-03-28 10:37:39.000000000","message":"Well, I\u0027d like to make sure that our dependency would be an important service used by all of the projects and where we are some team for it.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6430067a944fd32d93d0b8519ee1565b532a5119","unresolved":false,"context_lines":[{"line_number":227,"context_line":"existing project, such as ``os_api_ref`` or ``openstacksdk``, or inside a"},{"line_number":228,"context_line":"wholly new project. In any case, it is envisaged that this tool will handle"},{"line_number":229,"context_line":"OpenStack-specific nuances like microversions that don\u0027t map 1:1 to OpenAPI"},{"line_number":230,"context_line":"concepts in a consistent and documented fashion."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Testing"},{"line_number":233,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dedd07f6_b72b3bc9","line":230,"in_reply_to":"0d6bdfa7_53cb578c","updated":"2024-04-11 15:13:02.000000000","message":"I meant that I\u0027d like this tool to be largely shared between projects, but it sounds it will be the case, so closing my comment.","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99aad33ead735f753ec6e376dd2dd9274c4141ac","unresolved":true,"context_lines":[{"line_number":227,"context_line":"existing project, such as ``os_api_ref`` or ``openstacksdk``, or inside a"},{"line_number":228,"context_line":"wholly new project. In any case, it is envisaged that this tool will handle"},{"line_number":229,"context_line":"OpenStack-specific nuances like microversions that don\u0027t map 1:1 to OpenAPI"},{"line_number":230,"context_line":"concepts in a consistent and documented fashion."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Testing"},{"line_number":233,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"0d6bdfa7_53cb578c","line":230,"in_reply_to":"eb7fa1de_0e0ea052","updated":"2024-03-28 17:22:48.000000000","message":"I don\u0027t understand. Could you rephrase?","commit_id":"7fde79a92c2c6eb5d2df578f7835711e9a4de1f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":36,"context_line":"OpenAPI in particular has seen broad adoption across multiple sectors, with"},{"line_number":37,"context_line":"sites as varied as `CloudFlare`__ and `GitHub`__ providing OpenAPI schemas for"},{"line_number":38,"context_line":"their APIs. OpenAPI has evolved significantly in recent years and now supports"},{"line_number":39,"context_line":"a wide variety of API patterns including things like webhooks. Even more"},{"line_number":40,"context_line":"beneficial for OpenStack, OpenAPI 3.1 is a full superset of JSON Schema meaning"},{"line_number":41,"context_line":"we have the ability to re-use much of the validation we already have."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. __: https://blog.cloudflare.com/open-api-transition"},{"line_number":44,"context_line":".. __: https://github.com/github/rest-api-description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4b88915c_00d3562f","line":41,"range":{"start_line":39,"start_character":63,"end_line":41,"end_character":69},"updated":"2024-05-02 22:49:13.000000000","message":"++, I remember this was the main reason why our previous effort of Swagger integration did not get success. That time when we tried, we need to do a lot of work and could not use the existing schema/validation.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":false,"context_lines":[{"line_number":36,"context_line":"OpenAPI in particular has seen broad adoption across multiple sectors, with"},{"line_number":37,"context_line":"sites as varied as `CloudFlare`__ and `GitHub`__ providing OpenAPI schemas for"},{"line_number":38,"context_line":"their APIs. OpenAPI has evolved significantly in recent years and now supports"},{"line_number":39,"context_line":"a wide variety of API patterns including things like webhooks. Even more"},{"line_number":40,"context_line":"beneficial for OpenStack, OpenAPI 3.1 is a full superset of JSON Schema meaning"},{"line_number":41,"context_line":"we have the ability to re-use much of the validation we already have."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. __: https://blog.cloudflare.com/open-api-transition"},{"line_number":44,"context_line":".. __: https://github.com/github/rest-api-description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"602f6d55_80c66bda","line":41,"range":{"start_line":39,"start_character":63,"end_line":41,"end_character":69},"in_reply_to":"4b88915c_00d3562f","updated":"2024-05-03 16:30:37.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"---------"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As an end user, I would like to have access to machine-readable, fully"},{"line_number":50,"context_line":"validated documentation for the APIs I will be interacting with."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an end user, I want statically viewable documentation hosted as part of the"},{"line_number":53,"context_line":"existing docs site without requiring a running instance of Nova."}],"source_content_type":"text/x-rst","patch_set":7,"id":"88f4c7c6_1a908360","line":50,"updated":"2024-05-01 11:03:24.000000000","message":"this is the primary usecase that this enhancement brings","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"validated documentation for the APIs I will be interacting with."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an end user, I want statically viewable documentation hosted as part of the"},{"line_number":53,"context_line":"existing docs site without requiring a running instance of Nova."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As an SDK/client developer, I would like to be able to auto-generate bindings"},{"line_number":56,"context_line":"and clients, promoting consistency and minimising the amount of manual work"}],"source_content_type":"text/x-rst","patch_set":7,"id":"0fa7ad39_a9cf129e","line":53,"updated":"2024-05-01 11:03:24.000000000","message":"+1 this something i care about as i very frequently link our existing docs to customer and users.\n\nso any regreussion in the ablity to link directly to parts of the api ref in emails,irc ectra would be a deal breaker for me.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As an SDK/client developer, I would like to be able to auto-generate bindings"},{"line_number":56,"context_line":"and clients, promoting consistency and minimising the amount of manual work"},{"line_number":57,"context_line":"needed to develop and maintain these."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As a Nova developer, I would like to have a verified API specification that I"},{"line_number":60,"context_line":"can use should I need to replace the web framework/libraries we use in the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b2227e8f_ea4ff068","line":57,"updated":"2024-05-01 11:03:24.000000000","message":"this usecase is enabled by the first usescase althought he way the bindings are generaged are out of scope of the spec","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As a Nova developer, I would like to have a verified API specification that I"},{"line_number":60,"context_line":"can use should I need to replace the web framework/libraries we use in the"},{"line_number":61,"context_line":"event they are no longer maintained."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Proposed change"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f2d53ca_25387527","line":61,"updated":"2024-05-01 11:03:24.000000000","message":"+1 which may actually happen with respect to at least our usage of paste and paste-deploy.\n\ni asked Stephen about the interaction with oslo/keystone middleware such as the sizelimit middleware which will reject oversized request.\n\nsince the validation described by the open api schema is applied after all configured middleware validate/transform the request, and the respocne validation\nis applied before the pipelien trans form the reply, the openapi schmem awill only document the behavior of the nova api not the middelware which si customisable per deployment.\n\ni.e the openapi schemea cant specify a sizelimit as that may be diffent between deployment or not exist if the middleware is not used.\n\ni think this is fine but may be good to call out in the spec so ill just document this converdation here for now.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As a Nova developer, I would like to have a verified API specification that I"},{"line_number":60,"context_line":"can use should I need to replace the web framework/libraries we use in the"},{"line_number":61,"context_line":"event they are no longer maintained."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Proposed change"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"d372b6ac_270b211d","line":61,"in_reply_to":"5f2d53ca_25387527","updated":"2024-05-14 16:40:29.000000000","message":"Done","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":68,"context_line":"- Add a new decorator for removed APIs and actions"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  We have a number of APIs and actions that no longer have backing code and"},{"line_number":71,"context_line":"  return ``HTTP 410 (Gone)`` or ``HTTP 404 (Bad Request)``, respectively. We"},{"line_number":72,"context_line":"  will not add schemas for these in the initial attempt at this so we need some"},{"line_number":73,"context_line":"  mechanism to indicate this. We will add a new ``removed`` decorator that will"},{"line_number":74,"context_line":"  highlight these removed APIs and indicate the version they were removed in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a42a2a93_97cdad9f","line":71,"range":{"start_line":71,"start_character":44,"end_line":71,"end_character":55},"updated":"2024-05-01 11:03:24.000000000","message":"Not Found\n\n400 is Bad Request","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"- Add a new decorator for removed APIs and actions"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  We have a number of APIs and actions that no longer have backing code and"},{"line_number":71,"context_line":"  return ``HTTP 410 (Gone)`` or ``HTTP 404 (Bad Request)``, respectively. We"},{"line_number":72,"context_line":"  will not add schemas for these in the initial attempt at this so we need some"},{"line_number":73,"context_line":"  mechanism to indicate this. We will add a new ``removed`` decorator that will"},{"line_number":74,"context_line":"  highlight these removed APIs and indicate the version they were removed in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"d9a1701e_c0cffd07","line":71,"range":{"start_line":71,"start_character":44,"end_line":71,"end_character":55},"in_reply_to":"a42a2a93_97cdad9f","updated":"2024-05-14 16:40:29.000000000","message":"Ah, I actually meant `HTTP 400 (Bad Request)` (for actions)","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":70,"context_line":"  We have a number of APIs and actions that no longer have backing code and"},{"line_number":71,"context_line":"  return ``HTTP 410 (Gone)`` or ``HTTP 404 (Bad Request)``, respectively. We"},{"line_number":72,"context_line":"  will not add schemas for these in the initial attempt at this so we need some"},{"line_number":73,"context_line":"  mechanism to indicate this. We will add a new ``removed`` decorator that will"},{"line_number":74,"context_line":"  highlight these removed APIs and indicate the version they were removed in"},{"line_number":75,"context_line":"  and the reason for their removal. We can later use this as a heuristic in our"},{"line_number":76,"context_line":"  tests to skip schema checks for these methods."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"- Add missing request body and query string schemas"}],"source_content_type":"text/x-rst","patch_set":7,"id":"93c6d1a0_71cf0c8b","line":75,"range":{"start_line":73,"start_character":30,"end_line":75,"end_character":35},"updated":"2024-05-02 22:49:13.000000000","message":"++, We do write those in our API ref doc but those are manual effort and many time we forgot to do or at least add all information consistently. Especially the removal reason or what is alternate of removed API, having such decorator make sure we add such info consistently in all removed APIs.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  We have a number of APIs and actions that no longer have backing code and"},{"line_number":71,"context_line":"  return ``HTTP 410 (Gone)`` or ``HTTP 404 (Bad Request)``, respectively. We"},{"line_number":72,"context_line":"  will not add schemas for these in the initial attempt at this so we need some"},{"line_number":73,"context_line":"  mechanism to indicate this. We will add a new ``removed`` decorator that will"},{"line_number":74,"context_line":"  highlight these removed APIs and indicate the version they were removed in"},{"line_number":75,"context_line":"  and the reason for their removal. We can later use this as a heuristic in our"},{"line_number":76,"context_line":"  tests to skip schema checks for these methods."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"- Add missing request body and query string schemas"}],"source_content_type":"text/x-rst","patch_set":7,"id":"eee08426_bb517fb4","line":75,"range":{"start_line":73,"start_character":30,"end_line":75,"end_character":35},"in_reply_to":"93c6d1a0_71cf0c8b","updated":"2024-05-03 16:30:37.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  highlight these removed APIs and indicate the version they were removed in"},{"line_number":75,"context_line":"  and the reason for their removal. We can later use this as a heuristic in our"},{"line_number":76,"context_line":"  tests to skip schema checks for these methods."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"- Add missing request body and query string schemas"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  There is already good coverage of both request bodies and query string"}],"source_content_type":"text/x-rst","patch_set":7,"id":"338bbe58_347ceb88","line":77,"updated":"2024-05-01 11:03:24.000000000","message":"+1 sounds reasonable to me","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":81,"context_line":"  parameters but it is not complete. A list of incomplete schemas is given at"},{"line_number":82,"context_line":"  the end of this section. The additional schemas will merely validate what is"},{"line_number":83,"context_line":"  already allowed, which will mean extensive use of ``\"additionalProperties\":"},{"line_number":84,"context_line":"  true`` or empty schemas. Put another way, an API that currently ignores"},{"line_number":85,"context_line":"  unexpected request body fields or query string parameters will continue to"},{"line_number":86,"context_line":"  ignore them. We may wish to make these stricter, as we did for most APIs in"},{"line_number":87,"context_line":"  microversion 2.75, but that is a separate issue that should be addressed"},{"line_number":88,"context_line":"  separately."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"4bf55da6_3cab275b","line":86,"range":{"start_line":84,"start_character":27,"end_line":86,"end_character":14},"updated":"2024-05-02 22:49:13.000000000","message":"++. this is important part of keep backward compatibility. we might not have test for all cases for all APIs so not putting any extra strictness in request schema without having a full proof usage/test is good and safer idea. and sometime later we can make them as strict (\u0027additionalProperties\u003dFalse\u0027) as existing schema in single microversion.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":false,"context_lines":[{"line_number":81,"context_line":"  parameters but it is not complete. A list of incomplete schemas is given at"},{"line_number":82,"context_line":"  the end of this section. The additional schemas will merely validate what is"},{"line_number":83,"context_line":"  already allowed, which will mean extensive use of ``\"additionalProperties\":"},{"line_number":84,"context_line":"  true`` or empty schemas. Put another way, an API that currently ignores"},{"line_number":85,"context_line":"  unexpected request body fields or query string parameters will continue to"},{"line_number":86,"context_line":"  ignore them. We may wish to make these stricter, as we did for most APIs in"},{"line_number":87,"context_line":"  microversion 2.75, but that is a separate issue that should be addressed"},{"line_number":88,"context_line":"  separately."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1839f519_b17ae3f9","line":86,"range":{"start_line":84,"start_character":27,"end_line":86,"end_character":14},"in_reply_to":"4bf55da6_3cab275b","updated":"2024-05-03 16:30:37.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":84,"context_line":"  true`` or empty schemas. Put another way, an API that currently ignores"},{"line_number":85,"context_line":"  unexpected request body fields or query string parameters will continue to"},{"line_number":86,"context_line":"  ignore them. We may wish to make these stricter, as we did for most APIs in"},{"line_number":87,"context_line":"  microversion 2.75, but that is a separate issue that should be addressed"},{"line_number":88,"context_line":"  separately."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  Once these specs are added, tests will be added to ensure all non-deprecated"},{"line_number":91,"context_line":"  and non-removed API resources have appropriate schemas."}],"source_content_type":"text/x-rst","patch_set":7,"id":"beed76ec_115ba849","line":88,"range":{"start_line":87,"start_character":21,"end_line":88,"end_character":13},"updated":"2024-05-02 22:49:13.000000000","message":"++. it make sense to do all of them in single microversion but yes its a separate thing.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  true`` or empty schemas. Put another way, an API that currently ignores"},{"line_number":85,"context_line":"  unexpected request body fields or query string parameters will continue to"},{"line_number":86,"context_line":"  ignore them. We may wish to make these stricter, as we did for most APIs in"},{"line_number":87,"context_line":"  microversion 2.75, but that is a separate issue that should be addressed"},{"line_number":88,"context_line":"  separately."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  Once these specs are added, tests will be added to ensure all non-deprecated"},{"line_number":91,"context_line":"  and non-removed API resources have appropriate schemas."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dea4b53f_c82cb4d9","line":88,"range":{"start_line":87,"start_character":21,"end_line":88,"end_character":13},"in_reply_to":"beed76ec_115ba849","updated":"2024-05-03 16:30:37.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":88,"context_line":"  separately."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  Once these specs are added, tests will be added to ensure all non-deprecated"},{"line_number":91,"context_line":"  and non-removed API resources have appropriate schemas."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- Add response body schemas"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"d08bd880_f2294076","line":91,"updated":"2024-05-01 11:03:24.000000000","message":"+1 to defering changign the accpeted requests to a spereate spec in likely a future release.\n\nso far the scope fo this spec seams reasonable and doabel in once cycle\nso im supportive fo keepign the scope to the minium we need for the stated usecases.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"  separately."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  Once these specs are added, tests will be added to ensure all non-deprecated"},{"line_number":91,"context_line":"  and non-removed API resources have appropriate schemas."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- Add response body schemas"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"8a060809_fc5b9a65","line":91,"in_reply_to":"d08bd880_f2294076","updated":"2024-05-14 16:40:29.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":98,"context_line":"  generated in tests and manually modified handle things like enum values."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"  Once these are added, tests will be added to ensure all non-deprecated and"},{"line_number":101,"context_line":"  non-removed API resources have appropriate response body schemas. In"},{"line_number":102,"context_line":"  addition, we will add a new configuration option that will control how we do"},{"line_number":103,"context_line":"  verification at the API layer, ``[api] response_validation``. This will be an"},{"line_number":104,"context_line":"  enum value with three options:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  ``error``"},{"line_number":107,"context_line":"    Raise a HTTP 500 (Server Error) in the event that an API returns an"},{"line_number":108,"context_line":"    \"invalid\" response."}],"source_content_type":"text/x-rst","patch_set":7,"id":"de274165_c516ae96","line":105,"range":{"start_line":101,"start_character":68,"end_line":105,"end_character":0},"updated":"2024-05-02 22:49:13.000000000","message":"I am rethinking on this config options especially error and warning. currently we have well tested schema in Tempest so we know how our response of APIs are.\n\nBut considering the fact that schema validation and API response both are implementation of Nova and why we need to make it configurable for users. Any mismatch happen, should be caught by our CI and we need to fix those. If any remaining which we do not test in our CI then anyone can log bug and we can fix. \n\nIMO, we should enable them always like we do for request validation and that way we will be able to keep API stable and no interop issue. If we want to enable it only for our CI and not recommend to enable it in production then what difference we will have from existing response validation in Tempest?","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"189b65fab2806be16076209df5ad075c62ca4709","unresolved":false,"context_lines":[{"line_number":98,"context_line":"  generated in tests and manually modified handle things like enum values."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"  Once these are added, tests will be added to ensure all non-deprecated and"},{"line_number":101,"context_line":"  non-removed API resources have appropriate response body schemas. In"},{"line_number":102,"context_line":"  addition, we will add a new configuration option that will control how we do"},{"line_number":103,"context_line":"  verification at the API layer, ``[api] response_validation``. This will be an"},{"line_number":104,"context_line":"  enum value with three options:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  ``error``"},{"line_number":107,"context_line":"    Raise a HTTP 500 (Server Error) in the event that an API returns an"},{"line_number":108,"context_line":"    \"invalid\" response."}],"source_content_type":"text/x-rst","patch_set":7,"id":"24ce5036_08ab7c01","line":105,"range":{"start_line":101,"start_character":68,"end_line":105,"end_character":0},"in_reply_to":"50695f3a_d54f3e27","updated":"2024-05-03 19:02:10.000000000","message":"ok, I cannot disagree with both of your points. I completely agree to migrate the schema from tempest to the Nova side (even though that was the first intention of writing the response schema). \n\nI think breaking user bcz of our bad schema is a really good point and irrespective of how correct we are in writing/reviewing the schema there is always a chance that we might miss something.\n\nThinking on both arguments, I think avoiding user break is something the highest priority. I will go with your idea and later once we know everything work fine, there is always chance to remove the config.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":true,"context_lines":[{"line_number":98,"context_line":"  generated in tests and manually modified handle things like enum values."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"  Once these are added, tests will be added to ensure all non-deprecated and"},{"line_number":101,"context_line":"  non-removed API resources have appropriate response body schemas. In"},{"line_number":102,"context_line":"  addition, we will add a new configuration option that will control how we do"},{"line_number":103,"context_line":"  verification at the API layer, ``[api] response_validation``. This will be an"},{"line_number":104,"context_line":"  enum value with three options:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  ``error``"},{"line_number":107,"context_line":"    Raise a HTTP 500 (Server Error) in the event that an API returns an"},{"line_number":108,"context_line":"    \"invalid\" response."}],"source_content_type":"text/x-rst","patch_set":7,"id":"50695f3a_d54f3e27","line":105,"range":{"start_line":101,"start_character":68,"end_line":105,"end_character":0},"in_reply_to":"747bfba8_44ca4c0a","updated":"2024-05-03 16:30:37.000000000","message":"\u003e But considering the fact that schema validation and API response both are implementation of Nova and why we need to make it configurable for users. Any mismatch happen, should be caught by our CI and we need to fix those. If any remaining which we do not test in our CI then anyone can log bug and we can fix. \n\nThe issue is that *failing* on a response body validation error provides questionable value to operators: yes, it signals that our schemas are wrong (assuming the operator hasn\u0027t modified the API), which is an important bug to fix, but it also means their users are seeing HTTP 5xx errors and it\u0027s not like they can easily fix the bug, save for doing so via local/downstream-only changes to the schema. A log gives them pretty much the same value - namely, the ability to identify schema issues - without forcing them to immediately fix the issue to stop the bleeding. On the other hand, the \"bleeding\" is a good thing for us developers. We *want* failures in CI to be quickly seen so that we can resolve the issue. They\u0027re different use cases.\n\n\u003e IMO, we should enable them always like we do for request validation and that way we will be able to keep API stable and no interop issue. If we want to enable it only for our CI and not recommend to enable it in production then what difference we will have from existing response validation in Tempest?\n\nThe contrast between request and response validation is that the former is for sanitising and keeping bad data out of our system, while the latter simply prevents us (or warns us about) emitting bad data. Sanitisation isn\u0027t really a goal of the latter. Instead, it\u0027s more about catching bugs in both our code and our docs. There are a few advantages to keeping the response validation in-tree rather than in Tempest. The primary one is that by doing this we ensure the schemas evolve in lockstep with the actual APIs: if a contributor wants to add a new API or modify an existing one, they will *have* to modify the schemas otherwise the tests will fail. In addition, we get more test coverage of these schemas, since they\u0027ll not only be used by integration (Tempest) tests but also by functional and unit tests. This will uncover bugs in both the schemas and the tests. Finally, the presence of the schemas in Nova is what allows us to achieve the main goal here, which is the generation of the OpenAPI schema. If our response schemas live somewhere other than Nova then that becomes difficult if not impossible to do.\n\nHopefully that all makes sense?","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ea0618a9076ad4425ae8c5509a453d5d55487366","unresolved":true,"context_lines":[{"line_number":98,"context_line":"  generated in tests and manually modified handle things like enum values."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"  Once these are added, tests will be added to ensure all non-deprecated and"},{"line_number":101,"context_line":"  non-removed API resources have appropriate response body schemas. In"},{"line_number":102,"context_line":"  addition, we will add a new configuration option that will control how we do"},{"line_number":103,"context_line":"  verification at the API layer, ``[api] response_validation``. This will be an"},{"line_number":104,"context_line":"  enum value with three options:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  ``error``"},{"line_number":107,"context_line":"    Raise a HTTP 500 (Server Error) in the event that an API returns an"},{"line_number":108,"context_line":"    \"invalid\" response."}],"source_content_type":"text/x-rst","patch_set":7,"id":"747bfba8_44ca4c0a","line":105,"range":{"start_line":101,"start_character":68,"end_line":105,"end_character":0},"in_reply_to":"de274165_c516ae96","updated":"2024-05-03 10:02:20.000000000","message":"there is a concern that that will break some edgecase that we are not aware of.\ni kind of tought we might eventually make it an error but not initally until we got soem feedback on this.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    This will be the default in CI i.e. for our unit, functional and"},{"line_number":111,"context_line":"    integration tests. This should not be used in production and the help text"},{"line_number":112,"context_line":"    will indicate this."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"  ``warn``"},{"line_number":115,"context_line":"    Log a warning about an \"invalid\" response, prompting operations to file a"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9c83949c_fd317984","line":112,"updated":"2024-05-01 11:03:24.000000000","message":"we likely also want to tag this config option with the advanced parmater since 99% of deploymets shoudl not change it form warn.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    This will be the default in CI i.e. for our unit, functional and"},{"line_number":111,"context_line":"    integration tests. This should not be used in production and the help text"},{"line_number":112,"context_line":"    will indicate this."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"  ``warn``"},{"line_number":115,"context_line":"    Log a warning about an \"invalid\" response, prompting operations to file a"}],"source_content_type":"text/x-rst","patch_set":7,"id":"16d2ed68_1d565d0d","line":112,"in_reply_to":"9c83949c_fd317984","updated":"2024-05-14 16:40:29.000000000","message":"Done","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"     It is important to note that this option will only affect response body"},{"line_number":127,"context_line":"     validation. Request body and request query string parameter validation"},{"line_number":128,"context_line":"     will remain mandatory and will not be configurable."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. __: https://github.com/gtema/openstack-openapi"},{"line_number":131,"context_line":".. __: https://github.com/openstack/tempest/tree/c0da6e843a/tempest/lib/api_schema/response/compute"}],"source_content_type":"text/x-rst","patch_set":7,"id":"350f12bf_14742966","line":128,"updated":"2024-05-01 11:03:24.000000000","message":"ack i think the name choose also makes that clear\n`response_validation`","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"     It is important to note that this option will only affect response body"},{"line_number":127,"context_line":"     validation. Request body and request query string parameter validation"},{"line_number":128,"context_line":"     will remain mandatory and will not be configurable."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. __: https://github.com/gtema/openstack-openapi"},{"line_number":131,"context_line":".. __: https://github.com/openstack/tempest/tree/c0da6e843a/tempest/lib/api_schema/response/compute"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4209ad83_e7d06d80","line":128,"in_reply_to":"350f12bf_14742966","updated":"2024-05-14 16:40:29.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":173,"context_line":"  We could publish the spec via a new, unversioned API endpoint such as"},{"line_number":174,"context_line":"  ``/spec``. A ``GET`` request to this would return the full spec, either"},{"line_number":175,"context_line":"  statically generated at deployment time or dynamically generated (and then"},{"line_number":176,"context_line":"  cached) at runtime."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"  This is rejected because it brings limited advantages and multiple"},{"line_number":179,"context_line":"  disadvantages. Nova\u0027s API is designed to be backwards-compatible and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"78f0e0a1_08036908","line":176,"updated":"2024-05-01 11:03:24.000000000","message":"im fine with this as an addtional way to get the relevent spec but as the only way i would have been -1.\n\nso if we want ot have an endpoint for this that is ok provide we keep the api ref\nand the ablity to generate this staticaly for docuementaiton.\n\nto me this is a nice to have that can be done after the main feature so im supportive fo decoping this for now and coming back to it once the sepc is complete if other want to also have this.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"  We could publish the spec via a new, unversioned API endpoint such as"},{"line_number":174,"context_line":"  ``/spec``. A ``GET`` request to this would return the full spec, either"},{"line_number":175,"context_line":"  statically generated at deployment time or dynamically generated (and then"},{"line_number":176,"context_line":"  cached) at runtime."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"  This is rejected because it brings limited advantages and multiple"},{"line_number":179,"context_line":"  disadvantages. Nova\u0027s API is designed to be backwards-compatible and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"245d8bf1_124f6c48","line":176,"in_reply_to":"78f0e0a1_08036908","updated":"2024-05-14 16:40:29.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":203,"context_line":"There will be no direct REST API impact. Users will see HTTP 500 error if they"},{"line_number":204,"context_line":"set ``[api] response_validation \u003d error`` and encounter an invalid response,"},{"line_number":205,"context_line":"however, we will not encourage use of this option in production and will"},{"line_number":206,"context_line":"instead focus on validating this ourselves in CI."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"We may wish to address issues that are uncovered as we add schemas, but this"},{"line_number":209,"context_line":"work is considered secondary to this effort and can be tackled separately."}],"source_content_type":"text/x-rst","patch_set":7,"id":"12d9ec02_93fbcfdf","line":206,"updated":"2024-05-01 11:03:24.000000000","message":"we can debtate this on the zuul patch but we may want to keep one or some of our jobs in warn mode too jsut to ensure that is properly tested too and that its not too verbose but i agree withthe idea of default to error in ci.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":203,"context_line":"There will be no direct REST API impact. Users will see HTTP 500 error if they"},{"line_number":204,"context_line":"set ``[api] response_validation \u003d error`` and encounter an invalid response,"},{"line_number":205,"context_line":"however, we will not encourage use of this option in production and will"},{"line_number":206,"context_line":"instead focus on validating this ourselves in CI."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"We may wish to address issues that are uncovered as we add schemas, but this"},{"line_number":209,"context_line":"work is considered secondary to this effort and can be tackled separately."}],"source_content_type":"text/x-rst","patch_set":7,"id":"856b436e_9960dabe","line":206,"in_reply_to":"12d9ec02_93fbcfdf","updated":"2024-05-02 22:49:13.000000000","message":"we currently have them  checked in all tempest jobs. All compute response are validated against the response schema (example [1]) so if any response mismatch then it is test failure.\n\nhttps://github.com/openstack/tempest/blob/550784f306df22a83dc1894da18c64b7494c6521/tempest/lib/services/compute/servers_client.py#L126","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"189b65fab2806be16076209df5ad075c62ca4709","unresolved":false,"context_lines":[{"line_number":203,"context_line":"There will be no direct REST API impact. Users will see HTTP 500 error if they"},{"line_number":204,"context_line":"set ``[api] response_validation \u003d error`` and encounter an invalid response,"},{"line_number":205,"context_line":"however, we will not encourage use of this option in production and will"},{"line_number":206,"context_line":"instead focus on validating this ourselves in CI."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"We may wish to address issues that are uncovered as we add schemas, but this"},{"line_number":209,"context_line":"work is considered secondary to this effort and can be tackled separately."}],"source_content_type":"text/x-rst","patch_set":7,"id":"cd3b3e95_94f735ad","line":206,"in_reply_to":"856b436e_9960dabe","updated":"2024-05-03 19:02:10.000000000","message":"ack","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fb52ed954774e0d0e862243bc853167bf58407e7","unresolved":true,"context_lines":[{"line_number":233,"context_line":"we will now verify both requests and responses for all API resources. Given our"},{"line_number":234,"context_line":"existing extensive use of JSON Schema for API validation, it is expected that"},{"line_number":235,"context_line":"this should not be a significant issue. In addition, we will not recommend"},{"line_number":236,"context_line":"enabling this option in production."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Other deployer impact"},{"line_number":239,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4c5b52da_d4ee6a83","line":236,"updated":"2024-05-14 10:12:49.000000000","message":"Our default is warn so we will enable the validation codepath in production by default. If it is not recommended to enable it in production then our default should be ignore instead. \n\nOr more likely what we just want to drop this sentence from here.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a04ffb044c9baa97415bf9a46d6b56301508169d","unresolved":true,"context_lines":[{"line_number":233,"context_line":"we will now verify both requests and responses for all API resources. Given our"},{"line_number":234,"context_line":"existing extensive use of JSON Schema for API validation, it is expected that"},{"line_number":235,"context_line":"this should not be a significant issue. In addition, we will not recommend"},{"line_number":236,"context_line":"enabling this option in production."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Other deployer impact"},{"line_number":239,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"68a87a3f_f49f878d","line":236,"in_reply_to":"4c5b52da_d4ee6a83","updated":"2024-05-14 11:51:40.000000000","message":"ya what stephen ment is enabling it in strict mode rather then warn is not recommended.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8e44c356d9d94119094b339ea989d74055428d08","unresolved":false,"context_lines":[{"line_number":233,"context_line":"we will now verify both requests and responses for all API resources. Given our"},{"line_number":234,"context_line":"existing extensive use of JSON Schema for API validation, it is expected that"},{"line_number":235,"context_line":"this should not be a significant issue. In addition, we will not recommend"},{"line_number":236,"context_line":"enabling this option in production."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Other deployer impact"},{"line_number":239,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"f798e74d_b720b5d9","line":236,"in_reply_to":"5e6c01e4_0e97de3e","updated":"2024-05-15 15:10:52.000000000","message":"Yup, this is done in the follow-up.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"we will now verify both requests and responses for all API resources. Given our"},{"line_number":234,"context_line":"existing extensive use of JSON Schema for API validation, it is expected that"},{"line_number":235,"context_line":"this should not be a significant issue. In addition, we will not recommend"},{"line_number":236,"context_line":"enabling this option in production."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Other deployer impact"},{"line_number":239,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"92975e60_fdc0d02a","line":236,"in_reply_to":"68a87a3f_f49f878d","updated":"2024-05-14 16:40:29.000000000","message":"Done","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0395bf0e0c09b5b8f9c2986267ccd06890acf222","unresolved":false,"context_lines":[{"line_number":233,"context_line":"we will now verify both requests and responses for all API resources. Given our"},{"line_number":234,"context_line":"existing extensive use of JSON Schema for API validation, it is expected that"},{"line_number":235,"context_line":"this should not be a significant issue. In addition, we will not recommend"},{"line_number":236,"context_line":"enabling this option in production."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Other deployer impact"},{"line_number":239,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5e6c01e4_0e97de3e","line":236,"in_reply_to":"92975e60_fdc0d02a","updated":"2024-05-14 17:30:10.000000000","message":"I agree to drop this sentence. IMO at some point, we should enable it by default once we see our schemas are stable and has not introduced any backward incompatible change. In that case, let\u0027s not say we do not recommend it for production instead we can say its impact at initial stage (kind of saying it is experimental stage initially?)","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":246,"context_line":"Developer impact"},{"line_number":247,"context_line":"----------------"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"Developers working on the API microversions will now be encouraged to provide"},{"line_number":250,"context_line":"JSON Schema schemas for both requests and responses."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Upgrade impact"},{"line_number":253,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"36a329f4_1133df01","line":250,"range":{"start_line":249,"start_character":0,"end_line":250,"end_character":52},"updated":"2024-05-02 22:49:13.000000000","message":"++, this will be a good thing to ask and keep API more stable.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":false,"context_lines":[{"line_number":246,"context_line":"Developer impact"},{"line_number":247,"context_line":"----------------"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"Developers working on the API microversions will now be encouraged to provide"},{"line_number":250,"context_line":"JSON Schema schemas for both requests and responses."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Upgrade impact"},{"line_number":253,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"24f70c5e_147f7657","line":250,"range":{"start_line":249,"start_character":0,"end_line":250,"end_character":52},"in_reply_to":"36a329f4_1133df01","updated":"2024-05-03 16:30:37.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7764ef4aeed0c137a126d8917efca61318df33b6","unresolved":true,"context_lines":[{"line_number":270,"context_line":"Feature Liaison"},{"line_number":271,"context_line":"---------------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"None."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Work Items"},{"line_number":276,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"6b341896_93e93bf4","line":273,"range":{"start_line":273,"start_character":4,"end_line":273,"end_character":5},"updated":"2024-05-02 22:49:13.000000000","message":"if needed and you re-spin, add my name here. happy to review these on priority.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a0546af22703c086547b23d46b24c97a7a28a53","unresolved":false,"context_lines":[{"line_number":270,"context_line":"Feature Liaison"},{"line_number":271,"context_line":"---------------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"None."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Work Items"},{"line_number":276,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"08d9a2f5_64715482","line":273,"range":{"start_line":273,"start_character":4,"end_line":273,"end_character":5},"in_reply_to":"6b341896_93e93bf4","updated":"2024-05-03 16:30:37.000000000","message":"Will do 👍","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b92789a5f763bb814beab63cdf740c833e4ca5e","unresolved":true,"context_lines":[{"line_number":467,"context_line":"   We should emphasise that many - but not all - of the aforementioned APIs"},{"line_number":468,"context_line":"   are either deprecated or removed. We may wish *not* to add schemas for"},{"line_number":469,"context_line":"   these, though by doing so we will lose the ability to generate documentation"},{"line_number":470,"context_line":"   or clients for these APIs from the OpenAPI spec."},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"History"},{"line_number":473,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"8dcf0b67_fb852a90","line":470,"updated":"2024-05-01 11:03:24.000000000","message":"i think that woudl be an accpabel trade off but i would be ok with making that choice durign the implemation reivew. as such i would suggest grouping the removed adn deprecated apis to the end so that the supprot set is documented first.","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7eb311566adad70d0ef6aeba5dcfd62882263f8c","unresolved":false,"context_lines":[{"line_number":467,"context_line":"   We should emphasise that many - but not all - of the aforementioned APIs"},{"line_number":468,"context_line":"   are either deprecated or removed. We may wish *not* to add schemas for"},{"line_number":469,"context_line":"   these, though by doing so we will lose the ability to generate documentation"},{"line_number":470,"context_line":"   or clients for these APIs from the OpenAPI spec."},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"History"},{"line_number":473,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"71858cfd_004b675c","line":470,"in_reply_to":"8dcf0b67_fb852a90","updated":"2024-05-14 16:40:29.000000000","message":"Acknowledged","commit_id":"500bd20e07a003e9d657ea52606a3501e79d2b08"}]}
