)]}'
{"doc/source/contributor/api.rst":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc7bd4e513a1e31fda2d87d5cebd18afab1b4dd6","unresolved":false,"context_lines":[{"line_number":257,"context_line":"Deprecating APIs"},{"line_number":258,"context_line":"----------------"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Compute REST APIs are deprecated by capping a method or functionality"},{"line_number":261,"context_line":"using microversions. For example, the"},{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_7c725f4b","line":260,"range":{"start_line":260,"start_character":0,"end_line":260,"end_character":17},"updated":"2018-05-10 21:16:51.000000000","message":"Compute REST APIs are not deprecated..\nHow about adding \"Several\" before \"Compute\"?\n\nOr\n\n The part of Compute REST APIs can be deprecated by ...","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2565714c4d2e6bf0f19cbda4e86790019dd85245","unresolved":false,"context_lines":[{"line_number":257,"context_line":"Deprecating APIs"},{"line_number":258,"context_line":"----------------"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Compute REST APIs are deprecated by capping a method or functionality"},{"line_number":261,"context_line":"using microversions. For example, the"},{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_981ad5c9","line":260,"range":{"start_line":260,"start_character":0,"end_line":260,"end_character":17},"in_reply_to":"5f7c97a3_428f7a74","updated":"2018-05-11 16:57:07.000000000","message":"Ah, I understood the meaning of \"Compute REST APIs\" is whole Nova APIs. As https://developer.openstack.org/api-ref/compute/ we are calling our APIs as \"Compute APIs\". And the whole APIs are not deprecated as you know.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009c069f5486ac038198eb768cc6b5a294723b1c","unresolved":false,"context_lines":[{"line_number":257,"context_line":"Deprecating APIs"},{"line_number":258,"context_line":"----------------"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Compute REST APIs are deprecated by capping a method or functionality"},{"line_number":261,"context_line":"using microversions. For example, the"},{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_56be32ff","line":260,"range":{"start_line":260,"start_character":0,"end_line":260,"end_character":17},"in_reply_to":"5f7c97a3_661b9380","updated":"2018-05-21 23:51:29.000000000","message":"Done","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83a449b620f2a481911c7de78682ea304d9d3131","unresolved":false,"context_lines":[{"line_number":257,"context_line":"Deprecating APIs"},{"line_number":258,"context_line":"----------------"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Compute REST APIs are deprecated by capping a method or functionality"},{"line_number":261,"context_line":"using microversions. For example, the"},{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_428f7a74","line":260,"range":{"start_line":260,"start_character":0,"end_line":260,"end_character":17},"in_reply_to":"5f7c97a3_7c725f4b","updated":"2018-05-10 22:14:39.000000000","message":"Your former suggestion sounds the same to me in English, and the latter suggestion is more confusing to me.\n\nBy \"Compute REST APIs\" I mean the routes, so maybe it would be more clear if I said, \"Compute REST API routes maybe deprecated...\"?","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a332561614fba7a94e6858431f0946b942a69e8","unresolved":false,"context_lines":[{"line_number":257,"context_line":"Deprecating APIs"},{"line_number":258,"context_line":"----------------"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Compute REST APIs are deprecated by capping a method or functionality"},{"line_number":261,"context_line":"using microversions. For example, the"},{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_661b9380","line":260,"range":{"start_line":260,"start_character":0,"end_line":260,"end_character":17},"in_reply_to":"5f7c97a3_981ad5c9","updated":"2018-05-12 01:55:49.000000000","message":"So is \"Compute REST API routes may be deprecated...\" better for you?","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"936ad74ddbaa40ae4265d112417f26bcff440696","unresolved":false,"context_lines":[{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"},{"line_number":264,"context_line":"service, which itself was deprecated, or are proxies to other external"},{"line_number":265,"context_line":"services like Cinder, Neutron, etc."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"The point of deprecating with microversions is users can still get the same"},{"line_number":268,"context_line":"functionality at a lower microversion but there is at least some way to signal"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_8cc4dbf6","line":265,"updated":"2018-05-11 14:20:07.000000000","message":"Below we have detail on how the api responds when the api is removed after deprecation. Presumably the only thing that changes at the deprecation stage is that the docs/api history change. Might want to make that explicit.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009c069f5486ac038198eb768cc6b5a294723b1c","unresolved":false,"context_lines":[{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"},{"line_number":264,"context_line":"service, which itself was deprecated, or are proxies to other external"},{"line_number":265,"context_line":"services like Cinder, Neutron, etc."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"The point of deprecating with microversions is users can still get the same"},{"line_number":268,"context_line":"functionality at a lower microversion but there is at least some way to signal"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_d65a4281","line":265,"in_reply_to":"5f7c97a3_26111b5e","updated":"2018-05-21 23:51:29.000000000","message":"Done","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a332561614fba7a94e6858431f0946b942a69e8","unresolved":false,"context_lines":[{"line_number":262,"context_line":":ref:`2.36 microversion \u003c2.36 microversion\u003e` deprecated"},{"line_number":263,"context_line":"several compute REST APIs which only work when using the ``nova-network``"},{"line_number":264,"context_line":"service, which itself was deprecated, or are proxies to other external"},{"line_number":265,"context_line":"services like Cinder, Neutron, etc."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"The point of deprecating with microversions is users can still get the same"},{"line_number":268,"context_line":"functionality at a lower microversion but there is at least some way to signal"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_26111b5e","line":265,"in_reply_to":"5f7c97a3_8cc4dbf6","updated":"2018-05-12 01:55:49.000000000","message":"Well, the main things for deprecation are:\n\n1. microversion cap (which implies a history change)\n2. docs\n3. deprecate CLIs / SDK stuff\n\nBut I can list those high-level things in here.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc7bd4e513a1e31fda2d87d5cebd18afab1b4dd6","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_bc6b171c","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"updated":"2018-05-10 21:16:51.000000000","message":"I am not sure that 410 is valid status code for this case..\nThe api-wg guideline doesn\u0027t mention 410 at this time.\nHow about avoiding to mention the error status code here now?","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"582bddf0479f8dbb18b8038022645b551171eda7","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_d601dd39","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"in_reply_to":"5f7c97a3_26383bec","updated":"2018-05-14 17:24:43.000000000","message":"I have seen NotFound (404) pages many times when browsing webs after removing pages, but I cannot remember I saw Gone(410) pages in the case actually. NotFound is not so bad IMO.\n\n \u003e In the future, if this becomes a maintenance problem, we\n \u003e could always put something into the route map for removed\n \u003e APIs in a central location that just always return 410\n \u003e without attempting to call some wsgi controller, I don\u0027t\n \u003e think that\u0027s worth holding this up.\n\nYeah, such hook code is what I imagined and I am not sure such code is happy for us.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"936ad74ddbaa40ae4265d112417f26bcff440696","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_aca8b71f","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"in_reply_to":"5f7c97a3_42e45a3c","updated":"2018-05-11 14:20:07.000000000","message":"410 is a very good idea for this kind of thing. Making a distinction from 404 is important.\n\nIf someone wants to propose an api-sig guideline to make it official feel free.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2565714c4d2e6bf0f19cbda4e86790019dd85245","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_d88ccdd8","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"in_reply_to":"5f7c97a3_42e45a3c","updated":"2018-05-11 16:57:07.000000000","message":"Matt,\n\n \u003e But 410 means the resource existed at one point but no\n \u003e longer does and it\u0027s permanently gone and clients can cache\n \u003e that response since it shouldn\u0027t change for the given server.\n\nThat is a nice point. That is a reason why I have a concern about this error code.\nIf we want to return 410 on nonexistent URI after removing the API, that means Nova code needs to contain the URI implementation forever because Nova needs to distinguish the URI existed in the history or not, even after removing the API by bumping the base microversion.\n\nIf using 404 instead of 410, we don\u0027t need to maintain such thing. The API router just return 404 as a normal error procedure.\n\nMaybe I am lazy, and I just want to avoid such burden because I don\u0027t find much value from strict error status code categories for users.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c029e825ed4824b550fc03f07a48197dac6f9264","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_4f11d503","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"in_reply_to":"5f7c97a3_aca8b71f","updated":"2018-05-11 14:33:26.000000000","message":"Agree on 410, both for the semantic meaning, and for consistency.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83a449b620f2a481911c7de78682ea304d9d3131","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_42e45a3c","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"in_reply_to":"5f7c97a3_bc6b171c","updated":"2018-05-10 22:14:39.000000000","message":"Because we need to be consistent. We used 410 when we removed os-certificates and os-cloudpipe, so I\u0027ve done the same thing for os-fping (below this change in the series).\n\nYou get a 404 if you request a microversion past some deprecation cap, like GET /os-fping with microversion 2.36. You\u0027d also get a 404 if the route simply doesn\u0027t exist, like GET /foo. But 410 means the resource existed at one point but no longer does and it\u0027s permanently gone and clients can cache that response since it shouldn\u0027t change for the given server.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a332561614fba7a94e6858431f0946b942a69e8","unresolved":false,"context_lines":[{"line_number":285,"context_line":"* The `route mapping`_ will remain but all methods will return a"},{"line_number":286,"context_line":"  ``410 HTTPGone`` error response. This is slightly different then the"},{"line_number":287,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_26383bec","line":290,"range":{"start_line":288,"start_character":55,"end_line":290,"end_character":54},"in_reply_to":"5f7c97a3_d88ccdd8","updated":"2018-05-12 01:55:49.000000000","message":"In the future, if this becomes a maintenance problem, we could always put something into the route map for removed APIs in a central location that just always return 410 without attempting to call some wsgi controller, I don\u0027t think that\u0027s worth holding this up.","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"936ad74ddbaa40ae4265d112417f26bcff440696","unresolved":false,"context_lines":[{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"},{"line_number":294,"context_line":"  for the removed API to the `Obsolete APIs`_ section and mention in which"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_cca5f348","line":291,"range":{"start_line":291,"start_character":69,"end_line":291,"end_character":71},"updated":"2018-05-11 14:20:07.000000000","message":"I can never decide should this be \"is\" or \"are\"?","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a332561614fba7a94e6858431f0946b942a69e8","unresolved":false,"context_lines":[{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"},{"line_number":294,"context_line":"  for the removed API to the `Obsolete APIs`_ section and mention in which"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_46169757","line":291,"range":{"start_line":291,"start_character":69,"end_line":291,"end_character":71},"in_reply_to":"5f7c97a3_0ff75dd5","updated":"2018-05-12 01:55:49.000000000","message":"Done","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c029e825ed4824b550fc03f07a48197dac6f9264","unresolved":false,"context_lines":[{"line_number":288,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":289,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":290,"context_line":"  fully removed and will not work at any microversion."},{"line_number":291,"context_line":"* Related configuration options, policy rules, and schema validation is"},{"line_number":292,"context_line":"  removed."},{"line_number":293,"context_line":"* The API reference documentation should be updated to move the documentation"},{"line_number":294,"context_line":"  for the removed API to the `Obsolete APIs`_ section and mention in which"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_0ff75dd5","line":291,"range":{"start_line":291,"start_character":69,"end_line":291,"end_character":71},"in_reply_to":"5f7c97a3_cca5f348","updated":"2018-05-11 14:33:26.000000000","message":"\"are\"","commit_id":"f133f25768b5e40d0422a859ddfe1661cdfe864e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6a032f460ce23ca59269581caa532fccfac5548f","unresolved":false,"context_lines":[{"line_number":283,"context_line":"------------------------"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"Nova tries to maintain backward compatibility with all REST APIs as much as"},{"line_number":286,"context_line":"possible, but when enough time has lapsed, there are few (if any) users or"},{"line_number":287,"context_line":"there are supported alternatives, the underlying service code that supports a"},{"line_number":288,"context_line":"deprecated REST API, like in the case of ``nova-network``, is removed and the"},{"line_number":289,"context_line":"REST API must also be effectively removed."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_ce511532","line":286,"range":{"start_line":286,"start_character":35,"end_line":286,"end_character":41},"updated":"2018-06-01 21:18:50.000000000","message":"elapsed","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0e8792ec39d964ced76d37d4b72e905060f0ccd5","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":296,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":297,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":298,"context_line":"  fully removed and will not work at any microversion."},{"line_number":299,"context_line":"* Related configuration options, policy rules, and schema validation are"},{"line_number":300,"context_line":"  removed."},{"line_number":301,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_102ef5a4","line":298,"updated":"2018-05-21 16:36:06.000000000","message":"So, reading this, I kinda think that we should continue to do 404 for microversions beyond the deprecation and 410 for those before where we have actually removed the code. Otherwise, a client hitting a deprecated API after the removal will get 410 when they used to get 404. That basically brings the thing _into_ the newer microversion where it was removed, even if to just communicate that it\u0027s gone forever. It would be better, IMHO, to continue to 404 for any microversion after the deprecation (where it was converted to 404) and return 410 for the older microversions where it was still working prior to removal.\n\nBut, we\u0027ve got a couple of examples of the stated pattern merged at this point, so I guess that\u0027s how it\u0027s going to be.","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"17d2d2eae72be88e0dc62516bdea8ee0ba2f78bd","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":296,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":297,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":298,"context_line":"  fully removed and will not work at any microversion."},{"line_number":299,"context_line":"* Related configuration options, policy rules, and schema validation are"},{"line_number":300,"context_line":"  removed."},{"line_number":301,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_917be6f2","line":298,"in_reply_to":"5f7c97a3_102ef5a4","updated":"2018-05-21 22:11:23.000000000","message":"i see your point. If i remember correctly, during certification APIs removal we thought of similar things during API meeting and we thought of doing via routers.py where we can make API versioning on url mapping. But that complex and might be error prone (but in easy way we can do with if else in controller method). \n\nI am also ok with 410 at this stage.","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0944a69acd7ddc05b31763c67b2caccef1a66de4","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":296,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":297,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":298,"context_line":"  fully removed and will not work at any microversion."},{"line_number":299,"context_line":"* Related configuration options, policy rules, and schema validation are"},{"line_number":300,"context_line":"  removed."},{"line_number":301,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_ce511e10","line":298,"in_reply_to":"5f7c97a3_30911553","updated":"2018-06-01 12:31:40.000000000","message":"Two things:\n\n1. I don\u0027t know when, if ever, we\u0027ll bump the minimum required microversion in nova.\n\n2. The resource is gone, so callers shouldn\u0027t hit the API and expect to get anything back besides an error. Returning an empty response would basically be lying about the state of the system.","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e431b52567e2e80c7baca855e51731957bfabed7","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":296,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":297,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":298,"context_line":"  fully removed and will not work at any microversion."},{"line_number":299,"context_line":"* Related configuration options, policy rules, and schema validation are"},{"line_number":300,"context_line":"  removed."},{"line_number":301,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_30911553","line":298,"in_reply_to":"5f7c97a3_917be6f2","updated":"2018-06-01 10:49:21.000000000","message":"My thinking was that we should continue to return something - likely the equivalent of an empty response for whatever the resource was - for the older microversions until such a time as we bump the minimum supported microversion. This would ensure clients using this API would continue to get _something_ on older microversions rather than the thing completely disappearing, which is part of the reason for using microversions in the first place. As you noted though, there are existing patterns here so this is what we\u0027re doing now","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f3a048192dccdf9a8ad21243bb1439e28b16a5df","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  ``404 HTTPNotFound`` error response a user will get for trying to use a"},{"line_number":296,"context_line":"  microversion that does not support a deprecated API. 410 means the resource"},{"line_number":297,"context_line":"  is gone and not coming back, which is more appropriate when the API is"},{"line_number":298,"context_line":"  fully removed and will not work at any microversion."},{"line_number":299,"context_line":"* Related configuration options, policy rules, and schema validation are"},{"line_number":300,"context_line":"  removed."},{"line_number":301,"context_line":"* The API reference documentation should be updated to move the documentation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_c53258f2","line":298,"in_reply_to":"5f7c97a3_ce511e10","updated":"2018-06-01 17:47:31.000000000","message":"\u003e 2. The resource is gone, so callers shouldn\u0027t hit the API and\n \u003e expect to get anything back besides an error. Returning an empty\n \u003e response would basically be lying about the state of the system.\n\nYeah, empty response would be very bad, for exactly the reason you state.","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"17d2d2eae72be88e0dc62516bdea8ee0ba2f78bd","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* An \"upgrade\" :doc:`release note \u003creleasenotes\u003e` should be added to mention"},{"line_number":309,"context_line":"  the REST API routes that were removed along with any related configuration"},{"line_number":310,"context_line":"  options that were also removed."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"Here is an example of the above steps: https://review.openstack.org/567682/"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":".. _route mapping: http://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/routes.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_f1ca5a4d","line":311,"range":{"start_line":311,"start_character":0,"end_line":311,"end_character":0},"updated":"2018-05-21 22:11:23.000000000","message":"need to add for deprecating/removing those from CLI/SDK also.","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009c069f5486ac038198eb768cc6b5a294723b1c","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* An \"upgrade\" :doc:`release note \u003creleasenotes\u003e` should be added to mention"},{"line_number":309,"context_line":"  the REST API routes that were removed along with any related configuration"},{"line_number":310,"context_line":"  options that were also removed."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"Here is an example of the above steps: https://review.openstack.org/567682/"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":".. _route mapping: http://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/routes.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_d41b8cc7","line":311,"range":{"start_line":311,"start_character":0,"end_line":311,"end_character":0},"in_reply_to":"5f7c97a3_f1ca5a4d","updated":"2018-05-21 23:51:29.000000000","message":"That\u0027s why it says \"and eventually remove\" on L278.","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6a032f460ce23ca59269581caa532fccfac5548f","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"Here is an example of the above steps: https://review.openstack.org/567682/"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":".. _route mapping: http://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/routes.py"},{"line_number":315,"context_line":".. _Obsolete APIs: https://developer.openstack.org/api-ref/compute/#obsolete-apis"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_b9e3c533","line":314,"range":{"start_line":314,"start_character":19,"end_line":314,"end_character":105},"updated":"2018-06-01 21:18:50.000000000","message":"Do we want to use a specific commit level here, in case this file ever moves?","commit_id":"d5202b5561ddeb43d1508bdd6a43a050daeca533"}]}
