)]}'
{".gitignore":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f4342486b5779f5881a239311e822078225539ec","unresolved":false,"context_lines":[{"line_number":54,"context_line":"*~"},{"line_number":55,"context_line":".*.swp"},{"line_number":56,"context_line":".*sw?"},{"line_number":57,"context_line":".vscode/*"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# Files created by releasenotes build"},{"line_number":60,"context_line":"releasenotes/build"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"3fa7e38b_0aae66e3","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":9},"updated":"2020-01-07 08:11:21.000000000","message":"Why are you needing to add this? In order to avoid the json style check in the spec file?","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1b6990c6fd0db3a1b46fe47b19653f61e625c43","unresolved":false,"context_lines":[{"line_number":54,"context_line":"*~"},{"line_number":55,"context_line":".*.swp"},{"line_number":56,"context_line":".*sw?"},{"line_number":57,"context_line":".vscode/*"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# Files created by releasenotes build"},{"line_number":60,"context_line":"releasenotes/build"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_73abf570","line":57,"updated":"2020-01-14 10:29:40.000000000","message":"I was used \"tox -e pep8\" and \"tox -e docs\" performing in my local environment, they execute succeed, from this spec, I donnot know why you need to ignore *this*, and I compared nova/cinder specs project also doesnot contain this.","commit_id":"a33f3b53b59ec832774710fc30a919c1c5f29c01"}],"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-12-31 10:09:44 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specification of Cyborg API microversion."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I9b5f02daaf91ecd4416f032834c4fafdcb003b36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_2a3d62bb","line":8,"updated":"2020-01-07 07:54:18.000000000","message":"nit: I always feel that I need some explanation here.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"07fe425b5c2da192311a229a2f51746f81bf6c10","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2020-01-13 15:57:52 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specification of Cyborg API microversion."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I9b5f02daaf91ecd4416f032834c4fafdcb003b36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_b624fb1b","line":8,"updated":"2020-01-14 11:27:38.000000000","message":"This commit message so simple, do we want to add some contribution specifications https://docs.openstack.org/contributors/common/git.html#tags\n\n\nThis change will change the Cyborg\u0027s API, and I think there is need to add \"APIImpact\" tag.\n\nAnother thing, I think we need to add Cyborg  to the launchpad, such as overviews,bugs, blueprints, translations and answers etc.. And add the \"Partial-Implements\" or \"Implements\" for the bp, and reported the bug to the launchapd or storyboard.","commit_id":"a33f3b53b59ec832774710fc30a919c1c5f29c01"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0cb80280360fd871b8e586f2dd4d0c14eef8ba3c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Many changes to the Cyborg REST API require changes to the consumers of"},{"line_number":10,"context_line":"the API."},{"line_number":11,"context_line":"For example, If we need to add a required parameter to a method that is"},{"line_number":12,"context_line":"called by Nova, we\u0027d need both the Nova calling code and the"},{"line_number":13,"context_line":"cyborgclient that Nova uses to change. But newer Cyborg versions with"},{"line_number":14,"context_line":"the change must work with older Nova versions, and there is no mechanism"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_5a7b1ebe","line":11,"range":{"start_line":11,"start_character":13,"end_line":11,"end_character":14},"updated":"2020-01-19 03:29:51.000000000","message":"nit: s/If/if/","commit_id":"9b3d6178b89b939950092bfbebc863b4be62ad2c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Xinran WANG \u003cxin-ran.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-01-19 03:35:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specification of Cyborg API microversion."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Many changes to the Cyborg REST API require changes to the consumers of"},{"line_number":10,"context_line":"the API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3fa7e38b_93672d25","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":41},"updated":"2020-01-21 03:01:30.000000000","message":"nit: remove this period, because in the tittle it just a brief \nexplanation.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Xinran WANG \u003cxin-ran.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-01-19 03:35:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specification of Cyborg API microversion."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Many changes to the Cyborg REST API require changes to the consumers of"},{"line_number":10,"context_line":"the API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3fa7e38b_c8c88fa8","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":41},"in_reply_to":"3fa7e38b_93672d25","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"}],"specs/ussuri/approved/api-microversion.rst":[{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"0149ab97902cf69cbecd73edb9ad12bf0e774d61","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Cyborg API should receive the API version from client that represents the"},{"line_number":42,"context_line":"list resources and their GET/POST/PATCH attributes it can work with."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Cyborg will use a framework we will call ¡®API Microversions¡¯ for allowing"},{"line_number":45,"context_line":"changes to the API while preserving backward compatibility. The basic idea is"},{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_fe1777ee","line":44,"range":{"start_line":44,"start_character":41,"end_line":44,"end_character":62},"updated":"2019-12-19 14:41:11.000000000","message":"the format of this display is incorrect.","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b52646d68a274dda3f91e5a5752d09b8dd244770","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Cyborg API should receive the API version from client that represents the"},{"line_number":42,"context_line":"list resources and their GET/POST/PATCH attributes it can work with."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Cyborg will use a framework we will call ¡®API Microversions¡¯ for allowing"},{"line_number":45,"context_line":"changes to the API while preserving backward compatibility. The basic idea is"},{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_8ca5d603","line":44,"range":{"start_line":44,"start_character":41,"end_line":44,"end_character":62},"in_reply_to":"3fa7e38b_fe1777ee","updated":"2019-12-24 06:45:40.000000000","message":"Done","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"0149ab97902cf69cbecd73edb9ad12bf0e774d61","unresolved":false,"context_lines":[{"line_number":45,"context_line":"changes to the API while preserving backward compatibility. The basic idea is"},{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don¡¯t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_7ed1472e","line":48,"range":{"start_line":48,"start_character":25,"end_line":48,"end_character":33},"updated":"2019-12-19 14:41:11.000000000","message":"ditto","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b52646d68a274dda3f91e5a5752d09b8dd244770","unresolved":false,"context_lines":[{"line_number":45,"context_line":"changes to the API while preserving backward compatibility. The basic idea is"},{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don¡¯t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_2cb4e235","line":48,"range":{"start_line":48,"start_character":25,"end_line":48,"end_character":33},"in_reply_to":"3fa7e38b_7ed1472e","updated":"2019-12-24 06:45:40.000000000","message":"Done","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aaa82d958a3e87234b64daaa4a4e70a82243cff1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don¡¯t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_5b0d72e5","line":49,"range":{"start_line":49,"start_character":12,"end_line":49,"end_character":42},"updated":"2019-12-20 03:54:45.000000000","message":"Based on the reference cited in this spec, this should be:\n\n  OpenStack-API-Version: accelerator x.y","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aaa82d958a3e87234b64daaa4a4e70a82243cff1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"made which affects the API as whole. That is, something that is only very"},{"line_number":57,"context_line":"rarely incremented."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Y when you make any change to the API. Note that this includes semantic changes"},{"line_number":60,"context_line":"which may not affect the input or output formats or even originate in the API"},{"line_number":61,"context_line":"code layer. We are not distinguishing between backwards compatible and backwards"},{"line_number":62,"context_line":"incompatible changes in the versioning system. It will, however, be made clear"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_7b294e38","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":6},"updated":"2019-12-20 03:54:45.000000000","message":"\"Y will be changed when\"","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"e93b9f093c4c81ae4b8cc5b39bb68c2ce711b163","unresolved":false,"context_lines":[{"line_number":56,"context_line":"made which affects the API as whole. That is, something that is only very"},{"line_number":57,"context_line":"rarely incremented."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Y when you make any change to the API. Note that this includes semantic changes"},{"line_number":60,"context_line":"which may not affect the input or output formats or even originate in the API"},{"line_number":61,"context_line":"code layer. We are not distinguishing between backwards compatible and backwards"},{"line_number":62,"context_line":"incompatible changes in the versioning system. It will, however, be made clear"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_be457446","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":6},"in_reply_to":"3fa7e38b_7b294e38","updated":"2019-12-20 05:36:19.000000000","message":"Good catch.","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aaa82d958a3e87234b64daaa4a4e70a82243cff1","unresolved":false,"context_lines":[{"line_number":90,"context_line":"Other end user impact"},{"line_number":91,"context_line":"---------------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"SDK authors will need to start using the X-OpenStack-Cyborg-API-Version"},{"line_number":94,"context_line":"header to get access to new features. The fact that new features will only"},{"line_number":95,"context_line":"be added in new versions will encourage them to do so."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_dbf882c2","line":93,"range":{"start_line":93,"start_character":41,"end_line":93,"end_character":71},"updated":"2019-12-20 03:54:45.000000000","message":"Same comment as above.","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"ff015e8d64915bb09663213ffd7c6fac82a8c57d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Primary assignee:"},{"line_number":123,"context_line":"Xinran Wang(xin-ran.wang@intel.com)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Work Items"},{"line_number":126,"context_line":"----------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* Push OpenStack-API-Version header to API layer."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_8f9f2463","line":125,"updated":"2019-12-20 10:36:54.000000000","message":"As said in Line 197, the Cyborg client needs to change to use microversions too. That change could be done by somebody else than the primary assignee in Line 123.\n\nShogo, please review this part.","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b52646d68a274dda3f91e5a5752d09b8dd244770","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Primary assignee:"},{"line_number":123,"context_line":"Xinran Wang(xin-ran.wang@intel.com)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Work Items"},{"line_number":126,"context_line":"----------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* Push OpenStack-API-Version header to API layer."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_cca3cefe","line":125,"in_reply_to":"3fa7e38b_8f9f2463","updated":"2019-12-24 06:45:40.000000000","message":"@Shogo \nAccording to Sundar\u0027s comment, would you like to be the assignee for cyborg client part?","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aaa82d958a3e87234b64daaa4a4e70a82243cff1","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"None"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"References"},{"line_number":148,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"http://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_9b2c4a4a","line":147,"updated":"2019-12-20 03:54:45.000000000","message":"Perhaps it is worth including version discovery in this spec, and cite this:\n\nhttps://docs.openstack.org/api-guide/compute/microversions.html","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b52646d68a274dda3f91e5a5752d09b8dd244770","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"None"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"References"},{"line_number":148,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"http://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_ec96caa0","line":147,"in_reply_to":"3fa7e38b_9b2c4a4a","updated":"2019-12-24 06:45:40.000000000","message":"Sure, will do it.","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"0149ab97902cf69cbecd73edb9ad12bf0e774d61","unresolved":false,"context_lines":[{"line_number":147,"context_line":"References"},{"line_number":148,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"http://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html"},{"line_number":151,"context_line":"https://specs.openstack.org/openstack/cinder-specs/specs/mitaka/api-microversions.html"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"History"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_bee6df12","line":151,"range":{"start_line":150,"start_character":0,"end_line":151,"end_character":86},"updated":"2019-12-19 14:41:11.000000000","message":"ditto.","commit_id":"a6623e31b5e28dbda5828ec2a8539d3fa2b0a4b5"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"e451a2011875487c1c9f513d775027f137978424","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"History"},{"line_number":214,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"None"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_b10c9744","line":216,"range":{"start_line":215,"start_character":0,"end_line":216,"end_character":4},"updated":"2019-12-30 09:18:16.000000000","message":"Maybe U introduced.","commit_id":"29b1ceeeccfbc4028bfd57bdd1df88f5cb2574b9"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"decide if they want the Cyborg API to behave in the new or old manner on a per"},{"line_number":28,"context_line":"request basis. Deployers are able to make new backwards incompatible features"},{"line_number":29,"context_line":"available without removing support for prior behaviour as long as there is"},{"line_number":30,"context_line":"supportto do this by developers."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Users of the REST API are able to, on a per request basis, decide which version"},{"line_number":33,"context_line":"of the API they want to use (assuming the deployer supports the version they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_672dd3fa","line":30,"range":{"start_line":30,"start_character":7,"end_line":30,"end_character":9},"updated":"2020-01-07 07:54:18.000000000","message":"\"support to\" this should add a white space.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28ffde980db88cf6af5e213906622c55344b3195","unresolved":false,"context_lines":[{"line_number":27,"context_line":"decide if they want the Cyborg API to behave in the new or old manner on a per"},{"line_number":28,"context_line":"request basis. Deployers are able to make new backwards incompatible features"},{"line_number":29,"context_line":"available without removing support for prior behaviour as long as there is"},{"line_number":30,"context_line":"supportto do this by developers."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Users of the REST API are able to, on a per request basis, decide which version"},{"line_number":33,"context_line":"of the API they want to use (assuming the deployer supports the version they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_75da80e6","line":30,"updated":"2020-01-02 13:58:42.000000000","message":"Just to note: This is indeed what microversions make possible, but having microversions should not been seen as a licence to make make changes whenever one likes. They still have an impact, and that impact should be considered with each new version.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b64da88ec853d69071c4825ed9c1bf039ef038c9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"decide if they want the Cyborg API to behave in the new or old manner on a per"},{"line_number":28,"context_line":"request basis. Deployers are able to make new backwards incompatible features"},{"line_number":29,"context_line":"available without removing support for prior behaviour as long as there is"},{"line_number":30,"context_line":"supportto do this by developers."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Users of the REST API are able to, on a per request basis, decide which version"},{"line_number":33,"context_line":"of the API they want to use (assuming the deployer supports the version they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_a24c2b40","line":30,"in_reply_to":"3fa7e38b_75da80e6","updated":"2020-01-06 03:13:44.000000000","message":"Thanks for your reminder, the impact you mentioned here is the redundancy of code or something else? Could you please explain more ?","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don\u0027t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_a75f4b4b","line":49,"range":{"start_line":49,"start_character":12,"end_line":49,"end_character":42},"updated":"2020-01-07 07:54:18.000000000","message":"Maybe we should declare this header in the API reference, after this completed this SPEC, there are two kinds of version in Cyborg. Maybe shuold say:\n\nIn order to bring new features to users over time, the Cyborg API supports versioning. There are two kinds of versions in Cyborg.\n\n- \"major versions\", which have dedicated urls.\n- \"microversions\", which can be requested through the use of the OpenStack-API-Version header.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28ffde980db88cf6af5e213906622c55344b3195","unresolved":false,"context_lines":[{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don\u0027t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_d5e2549c","line":49,"updated":"2020-01-02 13:58:42.000000000","message":"This is the old-style header, which should not be used. The correct header is:\n\n    OpenStack-API-Version: accelerator 2.0\n\nSee: http://specs.openstack.org/openstack/api-sig/guidelines/microversion_specification.html#client-interaction","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"6eb46c7e94c4937bb507c73d666b01956d9d4284","unresolved":false,"context_lines":[{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don\u0027t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_df06d1cd","line":49,"in_reply_to":"3fa7e38b_625cf3ef","updated":"2020-01-06 23:11:37.000000000","message":"+1. Same as my comment in\nhttps://review.opendev.org/#/c/699149/1/specs/ussuri/approved/api-microversion.rst@49","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b64da88ec853d69071c4825ed9c1bf039ef038c9","unresolved":false,"context_lines":[{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don\u0027t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header X-OpenStack-Cyborg-API-Version which is a monotonically increasing"},{"line_number":50,"context_line":"semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_625cf3ef","line":49,"in_reply_to":"3fa7e38b_d5e2549c","updated":"2020-01-06 03:13:44.000000000","message":"Thanks, will update soon.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28ffde980db88cf6af5e213906622c55344b3195","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"},{"line_number":53,"context_line":"DEFAULT_API_VERSION as defined in cyborg/api/api_version_request.py. This value"},{"line_number":54,"context_line":"is currently 2.0 and is expected to remain so for quite a long time."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":57,"context_line":"form X.Y where it follows the following convention:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_95005c37","line":54,"updated":"2020-01-02 13:58:42.000000000","message":"most likely forever if you want to be in keeping with the microversion spirit","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"6eb46c7e94c4937bb507c73d666b01956d9d4284","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"},{"line_number":53,"context_line":"DEFAULT_API_VERSION as defined in cyborg/api/api_version_request.py. This value"},{"line_number":54,"context_line":"is currently 2.0 and is expected to remain so for quite a long time."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":57,"context_line":"form X.Y where it follows the following convention:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_df2fb13b","line":54,"in_reply_to":"3fa7e38b_8261efaa","updated":"2020-01-06 23:11:37.000000000","message":"Why would one deprecate an entire major version when we have microversions? I can\u0027t think of a scenario off hand.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b64da88ec853d69071c4825ed9c1bf039ef038c9","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"},{"line_number":53,"context_line":"DEFAULT_API_VERSION as defined in cyborg/api/api_version_request.py. This value"},{"line_number":54,"context_line":"is currently 2.0 and is expected to remain so for quite a long time."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":57,"context_line":"form X.Y where it follows the following convention:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_8261efaa","line":54,"in_reply_to":"3fa7e38b_95005c37","updated":"2020-01-06 03:13:44.000000000","message":"If we will not make v2 deprecated, it default verison should always be v2.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"506a01aa2bf29d8336801b8b1766e2e379cfbf29","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"},{"line_number":53,"context_line":"DEFAULT_API_VERSION as defined in cyborg/api/api_version_request.py. This value"},{"line_number":54,"context_line":"is currently 2.0 and is expected to remain so for quite a long time."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":57,"context_line":"form X.Y where it follows the following convention:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_27e35b08","line":54,"in_reply_to":"3fa7e38b_df2fb13b","updated":"2020-01-07 06:33:12.000000000","message":"I am just saying \"if\" we deprecated v2. As we have deprecated v1 before, as cinder deprecated v2 api before. It is the worst way.  If everything goes well, we should use v2 api as default version forever.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"includes semantic changes which may not affect the input or output formats or"},{"line_number":65,"context_line":"even originate in the API code layer. We are not distinguishing between"},{"line_number":66,"context_line":"backwards compatible and backwards incompatible changes in the versioning"},{"line_number":67,"context_line":"system. It will, however, be made clear in the documentation as to what is a"},{"line_number":68,"context_line":"backwards compatible change and what is a backwards incompatible one."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Version Discovery"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_e7dc63e3","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":33},"updated":"2020-01-07 07:54:18.000000000","message":"I am not professional in EN, maybe this I think should reword to \"However, it will be made ...\"","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Version Discovery"},{"line_number":71,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":72,"context_line":"The Version API will return the minimum and maximum microversions. These values"},{"line_number":73,"context_line":"are used by the client to discover the API’s supported microversion(s)."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Requests to / will get version info for all endpoints. A version response would"},{"line_number":76,"context_line":"look as follows for GET http://host_ip/accelerator/"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_87e7afab","line":73,"range":{"start_line":73,"start_character":42,"end_line":73,"end_character":43},"updated":"2020-01-07 07:54:18.000000000","message":"This should use EN symbol \" \u0027\"","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f4342486b5779f5881a239311e822078225539ec","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Requests to / will get version info for all endpoints. A version response would"},{"line_number":76,"context_line":"look as follows for GET http://host_ip/accelerator/"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":" {"},{"line_number":81,"context_line":"   \"default_version\": {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_4a91be99","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":2},"updated":"2020-01-07 08:11:21.000000000","message":"nit: How about use \".. code-block:: json\" to instead of \"::\"","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"     \"status\": \"CURRENT\","},{"line_number":83,"context_line":"     \"min_version\": \"2.0\","},{"line_number":84,"context_line":"     \"max_version\": \"2.1\","},{"line_number":85,"context_line":"     \"id\": \"v2\","},{"line_number":86,"context_line":"     \"links\": ["},{"line_number":87,"context_line":"       {"},{"line_number":88,"context_line":"         \"href\": \"http://host_ip/accelerator/v2\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_e751c332","line":85,"range":{"start_line":85,"start_character":12,"end_line":85,"end_character":14},"updated":"2020-01-07 07:54:18.000000000","message":"v2.0\n\nIt will support from v2.0 micrioversion, so I think use v2.0 is better.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":85,"context_line":"     \"id\": \"v2\","},{"line_number":86,"context_line":"     \"links\": ["},{"line_number":87,"context_line":"       {"},{"line_number":88,"context_line":"         \"href\": \"http://host_ip/accelerator/v2\","},{"line_number":89,"context_line":"         \"rel\": \"self\""},{"line_number":90,"context_line":"       }"},{"line_number":91,"context_line":"     ]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_ca292e89","line":88,"range":{"start_line":88,"start_character":10,"end_line":88,"end_character":47},"updated":"2020-01-07 07:54:18.000000000","message":"In the url, can use v2.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"   \"versions\": ["},{"line_number":94,"context_line":"     {"},{"line_number":95,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":96,"context_line":"       \"min_version\": null,"},{"line_number":97,"context_line":"       \"max_version\": null,"},{"line_number":98,"context_line":"       \"id\": \"v1\","},{"line_number":99,"context_line":"       \"links\": ["}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_87432f6b","line":96,"range":{"start_line":96,"start_character":22,"end_line":96,"end_character":26},"updated":"2020-01-07 07:54:18.000000000","message":"nit: s/null/\"\"/","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"     {"},{"line_number":95,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":96,"context_line":"       \"min_version\": null,"},{"line_number":97,"context_line":"       \"max_version\": null,"},{"line_number":98,"context_line":"       \"id\": \"v1\","},{"line_number":99,"context_line":"       \"links\": ["},{"line_number":100,"context_line":"         {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_275cbb4a","line":97,"range":{"start_line":97,"start_character":22,"end_line":97,"end_character":26},"updated":"2020-01-07 07:54:18.000000000","message":"ditto","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"Other end user impact"},{"line_number":148,"context_line":"---------------------"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"SDK authors will need to start using the X-OpenStack-Cyborg-API-Version"},{"line_number":151,"context_line":"header to get access to new features. The fact that new features will only"},{"line_number":152,"context_line":"be added in new versions will encourage them to do so."},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_e726a3cc","line":150,"range":{"start_line":150,"start_character":41,"end_line":150,"end_character":71},"updated":"2020-01-07 07:54:18.000000000","message":"OpenStack-API-Version","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":183,"context_line":"  Shogo Saito"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Work Items"},{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Push X-OpenStack-Cyborg-API-Version header to API layer."},{"line_number":189,"context_line":"* Add decorator for microversion check."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_4a353eda","line":186,"updated":"2020-01-07 07:54:18.000000000","message":"Maybe we should maintain the python-cyborgclient, and make the cyborgclient support 2.0 microversion.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28ffde980db88cf6af5e213906622c55344b3195","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Work Items"},{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Push X-OpenStack-Cyborg-API-Version header to API layer."},{"line_number":189,"context_line":"* Add decorator for microversion check."},{"line_number":190,"context_line":"* Implement versions.py module with history of API changes."},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_75f3606e","line":188,"updated":"2020-01-02 13:58:42.000000000","message":"OpenStack-API-Version","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b64da88ec853d69071c4825ed9c1bf039ef038c9","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Work Items"},{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Push X-OpenStack-Cyborg-API-Version header to API layer."},{"line_number":189,"context_line":"* Add decorator for microversion check."},{"line_number":190,"context_line":"* Implement versions.py module with history of API changes."},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_22527bdb","line":188,"in_reply_to":"3fa7e38b_75f3606e","updated":"2020-01-06 03:13:44.000000000","message":"Agree.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28ffde980db88cf6af5e213906622c55344b3195","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Push X-OpenStack-Cyborg-API-Version header to API layer."},{"line_number":189,"context_line":"* Add decorator for microversion check."},{"line_number":190,"context_line":"* Implement versions.py module with history of API changes."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dependencies"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_d597b4e9","line":190,"updated":"2020-01-02 13:58:42.000000000","message":"microversion-parse has utility code for most of these tasks:\n\nhttps://pypi.org/project/microversion_parse/\n\nanything that\u0027s not in microversion-parse can be borrowed from placement which has one of the more modern implementations of microversions","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"94f6f4c960f4f3f3fc17d341a4babe3908d91ce2","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Push X-OpenStack-Cyborg-API-Version header to API layer."},{"line_number":189,"context_line":"* Add decorator for microversion check."},{"line_number":190,"context_line":"* Implement versions.py module with history of API changes."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dependencies"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_0a12e655","line":190,"in_reply_to":"3fa7e38b_420c57ea","updated":"2020-01-07 07:54:18.000000000","message":"Yes, the microversion updated history that should be recorded, you can refer https://docs.openstack.org/nova/latest/reference/api-microversion-history.html","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b64da88ec853d69071c4825ed9c1bf039ef038c9","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Push X-OpenStack-Cyborg-API-Version header to API layer."},{"line_number":189,"context_line":"* Add decorator for microversion check."},{"line_number":190,"context_line":"* Implement versions.py module with history of API changes."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dependencies"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_420c57ea","line":190,"in_reply_to":"3fa7e38b_d597b4e9","updated":"2020-01-06 03:13:44.000000000","message":"yes, currently we can invoke parse_version_string() function to get Version object.","commit_id":"b637b3245ea9c9fb5a63594ec81a91b7104d96f8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Problem description"},{"line_number":12,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Cyborg has deprecated v1.0 API since Train release and use v2.0 API as current"},{"line_number":15,"context_line":"API version. As Cyborg evolves and obtains new features which are also"},{"line_number":16,"context_line":"represented in API changes, we should support microversion of Cyborg which will"},{"line_number":17,"context_line":"not break current infrastructure."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_f349c18c","line":14,"range":{"start_line":14,"start_character":64,"end_line":14,"end_character":68},"updated":"2020-01-21 03:01:30.000000000","message":"redundant","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Problem description"},{"line_number":12,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Cyborg has deprecated v1.0 API since Train release and use v2.0 API as current"},{"line_number":15,"context_line":"API version. As Cyborg evolves and obtains new features which are also"},{"line_number":16,"context_line":"represented in API changes, we should support microversion of Cyborg which will"},{"line_number":17,"context_line":"not break current infrastructure."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_68c15b81","line":14,"range":{"start_line":14,"start_character":64,"end_line":14,"end_character":68},"in_reply_to":"3fa7e38b_1afa6dba","updated":"2020-01-21 10:53:30.000000000","message":"I think it is not necessary to remove API :)","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"1648ceb1b82d56c7d984a229f2ca0dbd5dd50af0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Problem description"},{"line_number":12,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Cyborg has deprecated v1.0 API since Train release and use v2.0 API as current"},{"line_number":15,"context_line":"API version. As Cyborg evolves and obtains new features which are also"},{"line_number":16,"context_line":"represented in API changes, we should support microversion of Cyborg which will"},{"line_number":17,"context_line":"not break current infrastructure."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_1afa6dba","line":14,"range":{"start_line":14,"start_character":64,"end_line":14,"end_character":68},"in_reply_to":"3fa7e38b_f349c18c","updated":"2020-01-21 09:53:25.000000000","message":"I think this is necessary and offers a better reading experience. :)\njust like when we talk about the API version, we usually say either \"v1.0 API or v2.0 API\" or \"v1.0 or v2.0\".","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Cyborg will use a framework we will call \"API Microversions\" for allowing"},{"line_number":45,"context_line":"changes to the API while preserving backward compatibility. The basic idea is"},{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don\u0027t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header \"OpenStack-API-Version: accelerator 2.0\" which is a monotonically"},{"line_number":50,"context_line":"increasing semantic version number starting from 2.0."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_6e696a8b","line":48,"range":{"start_line":47,"start_character":31,"end_line":48,"end_character":57},"updated":"2020-01-21 03:01:30.000000000","message":"For one thing, no matter if there are new parameters added, as long as the API changes, we need to add a new microversion, such as adding support for filtering of existing fields, which requires adding a new microversion. Users only specify this only then can you use this feature.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Cyborg will use a framework we will call \"API Microversions\" for allowing"},{"line_number":45,"context_line":"changes to the API while preserving backward compatibility. The basic idea is"},{"line_number":46,"context_line":"that a user has to explicitly ask for their request to be treated with a"},{"line_number":47,"context_line":"particular version of the API. So breaking changes can be added to the API"},{"line_number":48,"context_line":"without breaking users who don\u0027t specifically ask for it. This is done with an"},{"line_number":49,"context_line":"HTTP header \"OpenStack-API-Version: accelerator 2.0\" which is a monotonically"},{"line_number":50,"context_line":"increasing semantic version number starting from 2.0."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_28b7e324","line":48,"range":{"start_line":47,"start_character":31,"end_line":48,"end_character":57},"in_reply_to":"3fa7e38b_6e696a8b","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"},{"line_number":53,"context_line":"DEFAULT_API_VERSION as defined in cyborg/api/versions.py. This value"},{"line_number":54,"context_line":"is currently 2.0 and is expected to remain so for quite a long time. We"},{"line_number":55,"context_line":"will not change this default version unless the major version changed and"},{"line_number":56,"context_line":"we deprecate V2 api version. It seems that we have very little change to"},{"line_number":57,"context_line":"update this value."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":60,"context_line":"form X.Y where it follows the following convention:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_8e0946dd","line":57,"range":{"start_line":54,"start_character":69,"end_line":57,"end_character":18},"updated":"2020-01-21 03:01:30.000000000","message":"Yup, in v2, we should compelted Cyborg\u0027s API change, and make it better and better, so it\u0027s almost impossible to change its big version.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"If a user makes a request without specifying a version, they will get the"},{"line_number":53,"context_line":"DEFAULT_API_VERSION as defined in cyborg/api/versions.py. This value"},{"line_number":54,"context_line":"is currently 2.0 and is expected to remain so for quite a long time. We"},{"line_number":55,"context_line":"will not change this default version unless the major version changed and"},{"line_number":56,"context_line":"we deprecate V2 api version. It seems that we have very little change to"},{"line_number":57,"context_line":"update this value."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":60,"context_line":"form X.Y where it follows the following convention:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_0838e79c","line":57,"range":{"start_line":54,"start_character":69,"end_line":57,"end_character":18},"in_reply_to":"3fa7e38b_8e0946dd","updated":"2020-01-21 10:53:30.000000000","message":"Yes, exactly.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":56,"context_line":"we deprecate V2 api version. It seems that we have very little change to"},{"line_number":57,"context_line":"update this value."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":60,"context_line":"form X.Y where it follows the following convention:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"X will only be changed if a significant backwards incompatible API change is"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_2ef852bf","line":59,"range":{"start_line":59,"start_character":41,"end_line":59,"end_character":50},"updated":"2020-01-21 03:01:30.000000000","message":"monotonically increasing","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":56,"context_line":"we deprecate V2 api version. It seems that we have very little change to"},{"line_number":57,"context_line":"update this value."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Versioning of the API should be a single monotonic counter. It will be of the"},{"line_number":60,"context_line":"form X.Y where it follows the following convention:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"X will only be changed if a significant backwards incompatible API change is"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_48b49f1d","line":59,"range":{"start_line":59,"start_character":41,"end_line":59,"end_character":50},"in_reply_to":"3fa7e38b_2ef852bf","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":63,"context_line":"made which affects the API as whole. That is, something that is only very"},{"line_number":64,"context_line":"rarely incremented."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Y will only be changed when you make any change to the API. Note that this"},{"line_number":67,"context_line":"includes semantic changes which may not affect the input or output formats or"},{"line_number":68,"context_line":"even originate in the API code layer. We are not distinguishing between"},{"line_number":69,"context_line":"backwards compatible and backwards incompatible changes in the versioning"},{"line_number":70,"context_line":"system. However, it will be made clear in the documentation as to what is a"},{"line_number":71,"context_line":"backwards compatible change and what is a backwards incompatible one."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_6e172af1","line":68,"range":{"start_line":66,"start_character":60,"end_line":68,"end_character":37},"updated":"2020-01-21 03:01:30.000000000","message":"yeah, as I note at Line48","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":63,"context_line":"made which affects the API as whole. That is, something that is only very"},{"line_number":64,"context_line":"rarely incremented."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Y will only be changed when you make any change to the API. Note that this"},{"line_number":67,"context_line":"includes semantic changes which may not affect the input or output formats or"},{"line_number":68,"context_line":"even originate in the API code layer. We are not distinguishing between"},{"line_number":69,"context_line":"backwards compatible and backwards incompatible changes in the versioning"},{"line_number":70,"context_line":"system. However, it will be made clear in the documentation as to what is a"},{"line_number":71,"context_line":"backwards compatible change and what is a backwards incompatible one."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_a838b39d","line":68,"range":{"start_line":66,"start_character":60,"end_line":68,"end_character":37},"in_reply_to":"3fa7e38b_6e172af1","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":67,"context_line":"includes semantic changes which may not affect the input or output formats or"},{"line_number":68,"context_line":"even originate in the API code layer. We are not distinguishing between"},{"line_number":69,"context_line":"backwards compatible and backwards incompatible changes in the versioning"},{"line_number":70,"context_line":"system. However, it will be made clear in the documentation as to what is a"},{"line_number":71,"context_line":"backwards compatible change and what is a backwards incompatible one."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Version Discovery"},{"line_number":74,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_cecdfe92","line":71,"range":{"start_line":70,"start_character":8,"end_line":71,"end_character":69},"updated":"2020-01-21 03:01:30.000000000","message":"nit: I would like to see you can mention this in `Documentation Impact`, it makes sense.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":67,"context_line":"includes semantic changes which may not affect the input or output formats or"},{"line_number":68,"context_line":"even originate in the API code layer. We are not distinguishing between"},{"line_number":69,"context_line":"backwards compatible and backwards incompatible changes in the versioning"},{"line_number":70,"context_line":"system. However, it will be made clear in the documentation as to what is a"},{"line_number":71,"context_line":"backwards compatible change and what is a backwards incompatible one."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Version Discovery"},{"line_number":74,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_c83def8d","line":71,"range":{"start_line":70,"start_character":8,"end_line":71,"end_character":69},"in_reply_to":"3fa7e38b_cecdfe92","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":76,"context_line":"are used by the client to discover the API\u0027s supported microversion(s)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Requests to / will get version info for all endpoints. A version response would"},{"line_number":79,"context_line":"look as follows for GET http://host_ip/accelerator/"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":".. code-block:: json"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_aeda0247","line":79,"range":{"start_line":79,"start_character":20,"end_line":79,"end_character":51},"updated":"2020-01-21 03:01:30.000000000","message":"nit: ``GET http://host_ip/accelerator/``","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":76,"context_line":"are used by the client to discover the API\u0027s supported microversion(s)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Requests to / will get version info for all endpoints. A version response would"},{"line_number":79,"context_line":"look as follows for GET http://host_ip/accelerator/"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":".. code-block:: json"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_68463b25","line":79,"range":{"start_line":79,"start_character":20,"end_line":79,"end_character":51},"in_reply_to":"3fa7e38b_aeda0247","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":120,"context_line":"     }"},{"line_number":121,"context_line":"   ],"},{"line_number":122,"context_line":"   \"name\": \"OpenStack Cyborg API\","},{"line_number":123,"context_line":"   \"description\": \"Cyborg (previously known as Nomad) is an OpenStack project that aims to provide a general purpose management framework for acceleration resources (i.e. various types of accelerators such as Crypto cards, GPU, FPGA, NVMe/NOF SSDs, ODP, DPDK/SPDK and so on).\""},{"line_number":124,"context_line":" }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_0eeb16dd","line":123,"range":{"start_line":123,"start_character":18,"end_line":123,"end_character":276},"updated":"2020-01-21 03:01:30.000000000","message":"Please format this.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":120,"context_line":"     }"},{"line_number":121,"context_line":"   ],"},{"line_number":122,"context_line":"   \"name\": \"OpenStack Cyborg API\","},{"line_number":123,"context_line":"   \"description\": \"Cyborg (previously known as Nomad) is an OpenStack project that aims to provide a general purpose management framework for acceleration resources (i.e. various types of accelerators such as Crypto cards, GPU, FPGA, NVMe/NOF SSDs, ODP, DPDK/SPDK and so on).\""},{"line_number":124,"context_line":" }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_88437711","line":123,"range":{"start_line":123,"start_character":18,"end_line":123,"end_character":276},"in_reply_to":"3fa7e38b_0eeb16dd","updated":"2020-01-21 10:53:30.000000000","message":"Done","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"REST API impact"},{"line_number":137,"context_line":"---------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Every API method should be decorated by a version-checking decorator."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_4e8fce2e","line":138,"updated":"2020-01-21 03:01:30.000000000","message":"A question.\n\nDo we need to implement the basic APIs of deployable, ARQs, device_profiles, and devices in v.20? Avoid adding microversion frequently due to the increase of API?\n\nIf so, I would like to display all the basic APIs, \nIf there is no need to update again in the current `api docs`_, I think it can stay the same.\n\n_`api docs`: https://docs.openstack.org/api-ref/accelerator/v2/index.html","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a420457c6c49d2ec3fee5392e2dc714bd35d2c76","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"REST API impact"},{"line_number":137,"context_line":"---------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Every API method should be decorated by a version-checking decorator."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_e85b0bf6","line":138,"in_reply_to":"3fa7e38b_4e8fce2e","updated":"2020-01-21 10:53:30.000000000","message":"thanks for your reminder, I have leave the Cyborg API doc in this section to indicate which API should we change.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f29c92d0c1958c20c0081e73463843dfea246e92","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Documentation Impact"},{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Need a documentation to record microversion history."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_8e1ce666","line":211,"updated":"2020-01-21 03:01:30.000000000","message":"With docs, we also need to tell users what is microversion of Cyborg, and how to discovery, how to interact with cyborgclient.\n\nI think will we write this, can refer Nova, microversion is more mature in Nova. https://docs.openstack.org/api-guide/compute/microversions.html","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b0ca20c56d93da04dc18f425a5614fefe7146437","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Documentation Impact"},{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Need a documentation to record microversion history."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_bd1eb35b","line":211,"in_reply_to":"3fa7e38b_8e1ce666","updated":"2020-01-21 10:50:27.000000000","message":"Yes, we should.","commit_id":"5e0ccd9c128741803dd785a7b0cf45397d9fb3aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"28c265a43322c33a9ca8e69d09ad26bc8bf9e8a8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"want). This means that a deployer who does not upgrade will not break"},{"line_number":35,"context_line":"compatibility, and clients that do not upgrade will also remain compatible."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_efc3038b","line":37,"updated":"2020-01-22 00:22:10.000000000","message":"nit:here two blank line, you can remove one.","commit_id":"29076921da057177f66be4809633c4a919ec2adf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0e1efbf94df1b5d881dc122256b024911033b66e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"increasing semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In these cases, we need a new microversion:"},{"line_number":53,"context_line":"1. If the parameters which API received changes, we need add a new microversion."},{"line_number":54,"context_line":"For example, when we add a new parameter to limit the length of return value"},{"line_number":55,"context_line":"of the device list API."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_6fde336c","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":80},"updated":"2020-01-21 23:55:34.000000000","message":"pep8 failed: This line is too lone, \u003e79 characters.","commit_id":"29076921da057177f66be4809633c4a919ec2adf"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8b70afd0c811a3bc0c8157d5c064bce7f8083090","unresolved":false,"context_lines":[{"line_number":30,"context_line":"available without removing support for prior behaviour as long as there is"},{"line_number":31,"context_line":"support to do this by developers."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Users of the REST API are able to, on a per request basis, decide which version"},{"line_number":34,"context_line":"of the API they want to use (assuming the deployer supports the version they"},{"line_number":35,"context_line":"want). This means that a deployer who does not upgrade will not break"},{"line_number":36,"context_line":"compatibility, and clients that do not upgrade will also remain compatible."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_32a6020f","line":33,"range":{"start_line":33,"start_character":26,"end_line":33,"end_character":65},"updated":"2020-01-29 03:46:31.000000000","message":"able to decide, on a per-request basis, which version ...","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8b70afd0c811a3bc0c8157d5c064bce7f8083090","unresolved":false,"context_lines":[{"line_number":50,"context_line":"increasing semantic version number starting from 2.0."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In these cases, we need a new microversion:"},{"line_number":53,"context_line":"1. If the parameters which API received changes, we need add a new"},{"line_number":54,"context_line":"microversion."},{"line_number":55,"context_line":"For example, when we add a new parameter to limit the length of return value"},{"line_number":56,"context_line":"of the device list API."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_72a0faf2","line":53,"range":{"start_line":53,"start_character":3,"end_line":53,"end_character":60},"updated":"2020-01-29 03:46:31.000000000","message":"If the parameters of an API change, we need to add a new microversion.","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8b70afd0c811a3bc0c8157d5c064bce7f8083090","unresolved":false,"context_lines":[{"line_number":55,"context_line":"For example, when we add a new parameter to limit the length of return value"},{"line_number":56,"context_line":"of the device list API."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"2. No parameters passed to API function changes, but the functionality of API"},{"line_number":59,"context_line":"changed."},{"line_number":60,"context_line":"For example, we already have a device list API with a filter dictionary as the"},{"line_number":61,"context_line":"input param, it currently support list the device filtered by \"attribute_A\" and"},{"line_number":62,"context_line":"\"attribute_B\", now we also want this API to return the device list filtered by"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_12abc6d6","line":59,"range":{"start_line":58,"start_character":3,"end_line":59,"end_character":7},"updated":"2020-01-29 03:46:31.000000000","message":"No parameters to any API has changed, but the functionality of some API has changed.","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4d9192298526b600af1dcc14c4b2249459eb5e04","unresolved":false,"context_lines":[{"line_number":103,"context_line":"     \"id\": \"v2.0\","},{"line_number":104,"context_line":"     \"links\": ["},{"line_number":105,"context_line":"       {"},{"line_number":106,"context_line":"         \"href\": \"http://host_ip/accelerator/v2\","},{"line_number":107,"context_line":"         \"rel\": \"self\""},{"line_number":108,"context_line":"       }"},{"line_number":109,"context_line":"     ]"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_9b5ef176","line":106,"updated":"2020-01-29 10:12:24.000000000","message":"As an FYI: it is okay, and usually easier from an implementation standpoint, for this to be just the absolute path of the URL and leave out the http://host_ip","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8b70afd0c811a3bc0c8157d5c064bce7f8083090","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   },"},{"line_number":111,"context_line":"   \"versions\": ["},{"line_number":112,"context_line":"     {"},{"line_number":113,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":114,"context_line":"       \"min_version\": null,"},{"line_number":115,"context_line":"       \"max_version\": null,"},{"line_number":116,"context_line":"       \"id\": \"v1.0\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_d2b0ce43","line":113,"range":{"start_line":113,"start_character":18,"end_line":113,"end_character":28},"updated":"2020-01-29 03:46:31.000000000","message":"Do we want to report v1 at all? I thought we decided to remove support for it. So, it is not even deprecated, but unsupported.","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"511039425db399f45cfd2e3717a36cbb00c03a4c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   },"},{"line_number":111,"context_line":"   \"versions\": ["},{"line_number":112,"context_line":"     {"},{"line_number":113,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":114,"context_line":"       \"min_version\": null,"},{"line_number":115,"context_line":"       \"max_version\": null,"},{"line_number":116,"context_line":"       \"id\": \"v1.0\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_96822a02","line":113,"range":{"start_line":113,"start_character":18,"end_line":113,"end_character":28},"in_reply_to":"3fa7e38b_13f8967c","updated":"2020-01-30 19:43:10.000000000","message":"Yes, that\u0027s what we did in Train:\nhttps://docs.openstack.org/cyborg/train/api/api.html#v1-0","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b76240d64607cfc01531aa80b7166db82581d4cd","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   },"},{"line_number":111,"context_line":"   \"versions\": ["},{"line_number":112,"context_line":"     {"},{"line_number":113,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":114,"context_line":"       \"min_version\": null,"},{"line_number":115,"context_line":"       \"max_version\": null,"},{"line_number":116,"context_line":"       \"id\": \"v1.0\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_13f8967c","line":113,"range":{"start_line":113,"start_character":18,"end_line":113,"end_character":28},"in_reply_to":"3fa7e38b_3b649d4c","updated":"2020-01-30 09:48:45.000000000","message":"IMO, we should maked v1 was deprecated in Train, and in Ussuri we will be not support it.\n\nMaybe we should show this description at the beginning of the REST API document? Prompt the user, what do you all think?","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"d890ee3adb39ff38a61bbbdc3db1b6e0ff9d1b5b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   },"},{"line_number":111,"context_line":"   \"versions\": ["},{"line_number":112,"context_line":"     {"},{"line_number":113,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":114,"context_line":"       \"min_version\": null,"},{"line_number":115,"context_line":"       \"max_version\": null,"},{"line_number":116,"context_line":"       \"id\": \"v1.0\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_05b10946","line":113,"range":{"start_line":113,"start_character":18,"end_line":113,"end_character":28},"in_reply_to":"3fa7e38b_3c8b05c2","updated":"2020-02-03 03:20:13.000000000","message":"Thanks all, so the conclusion is to remove this v1 api section in this body, right?","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"d467420e5d24a57d7ee224b3dba32bd3c49d0f66","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   },"},{"line_number":111,"context_line":"   \"versions\": ["},{"line_number":112,"context_line":"     {"},{"line_number":113,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":114,"context_line":"       \"min_version\": null,"},{"line_number":115,"context_line":"       \"max_version\": null,"},{"line_number":116,"context_line":"       \"id\": \"v1.0\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_3c8b05c2","line":113,"range":{"start_line":113,"start_character":18,"end_line":113,"end_character":28},"in_reply_to":"3fa7e38b_96822a02","updated":"2020-02-01 09:27:48.000000000","message":"Yeah, that good. And I find it\u0027s already exist in https://docs.openstack.org/api-ref/accelerator/v2/index.html#openstack-acceleration-v2-apis, I am ok with this.","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4d9192298526b600af1dcc14c4b2249459eb5e04","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   },"},{"line_number":111,"context_line":"   \"versions\": ["},{"line_number":112,"context_line":"     {"},{"line_number":113,"context_line":"       \"status\": \"DEPRECATED\","},{"line_number":114,"context_line":"       \"min_version\": null,"},{"line_number":115,"context_line":"       \"max_version\": null,"},{"line_number":116,"context_line":"       \"id\": \"v1.0\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_3b649d4c","line":113,"range":{"start_line":113,"start_character":18,"end_line":113,"end_character":28},"in_reply_to":"3fa7e38b_d2b0ce43","updated":"2020-01-29 10:12:24.000000000","message":"If the decision has been to remove it, then yes, there should be no reference to it, otherwise someone will be inclined to follow the link.","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8b70afd0c811a3bc0c8157d5c064bce7f8083090","unresolved":false,"context_lines":[{"line_number":135,"context_line":"     }"},{"line_number":136,"context_line":"   ],"},{"line_number":137,"context_line":"   \"name\": \"OpenStack Cyborg API\","},{"line_number":138,"context_line":"   \"description\": \"Cyborg (previously known as Nomad) is an OpenStack \""},{"line_number":139,"context_line":"                  \"project that aims to provide a general purpose \""},{"line_number":140,"context_line":"                  \"management framework for acceleration resources \""},{"line_number":141,"context_line":"                  \"(i.e. various types of accelerators such as Crypto \""},{"line_number":142,"context_line":"                  \"cards, GPU, FPGA, NVMe/NOF SSDs, ODP, DPDK/SPDK and so on).\""},{"line_number":143,"context_line":" }"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_d25bee1f","line":142,"range":{"start_line":138,"start_character":19,"end_line":142,"end_character":77},"updated":"2020-01-29 03:46:31.000000000","message":"I suggest dropping the reference to Nomad and introducing the term \u0027lifecycle management\u0027. DPDK and SPDK are not accelerators, and it is not clear that Cyborg will handle SSDs, which should really be under Cinder.\n\nIn short, I\u0027d suggest:\n\n  Cyborg is the OpenStack project for lifecycle management of hardware accelerators, such as GPUs, FPGAs, AI chips, security accelerators, etc.\n\nThis is shorter and hopefully clearer. (I understand what you have here is what we have in the wiki, but I think that needs to be updated too.)","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"d890ee3adb39ff38a61bbbdc3db1b6e0ff9d1b5b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"     }"},{"line_number":136,"context_line":"   ],"},{"line_number":137,"context_line":"   \"name\": \"OpenStack Cyborg API\","},{"line_number":138,"context_line":"   \"description\": \"Cyborg (previously known as Nomad) is an OpenStack \""},{"line_number":139,"context_line":"                  \"project that aims to provide a general purpose \""},{"line_number":140,"context_line":"                  \"management framework for acceleration resources \""},{"line_number":141,"context_line":"                  \"(i.e. various types of accelerators such as Crypto \""},{"line_number":142,"context_line":"                  \"cards, GPU, FPGA, NVMe/NOF SSDs, ODP, DPDK/SPDK and so on).\""},{"line_number":143,"context_line":" }"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_85765992","line":142,"range":{"start_line":138,"start_character":19,"end_line":142,"end_character":77},"in_reply_to":"3fa7e38b_d25bee1f","updated":"2020-02-03 03:20:13.000000000","message":"Agree, if so, we also need to update the cyborg introduction in Cyborg WIKI where I got this info.","commit_id":"bc7d44918c74b738eee4596eb1fac2e7d67fb477"}]}
