)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"25a06de6f4e550843ec151079a454ed458092838","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhance error messages for API user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This spec is intended to enhance error message according to the guideline [1]."},{"line_number":10,"context_line":"Formatted and consistent messages with better quality will help users and"},{"line_number":11,"context_line":"developer learn the API quickly and enjoy using the API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[1]: https://review.openstack.org/#/c/167793/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa0719c6_602cb402","line":10,"range":{"start_line":9,"start_character":64,"end_line":10,"end_character":73},"updated":"2016-03-22 21:17:19.000000000","message":"Lines in commit messages should be wrapped at 72 characters. Thanks!\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"24b57f070da69f3129150cf2956f121bc070bc25","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Formatted and consistent messages with better quality will help users and"},{"line_number":11,"context_line":"developer learn the API quickly and enjoy using the API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[1]: https://review.openstack.org/#/c/167793/"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Icb0927a0460eb2888469cae0130602ce3b129bbf"},{"line_number":16,"context_line":"Co-Authored-By: xiexs \u003cxiexs@cn.fujitsu.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1af94dfe_8a57f756","line":13,"updated":"2016-03-18 22:57:58.000000000","message":"Reference the actual guideline rather than the review\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/errors.html","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5efa98d5a3c789d79eb807c9e603f8c72fd3ec8c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhance error messages for API user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This spec is intended to enhance error message according to"},{"line_number":10,"context_line":"the guideline [1]."},{"line_number":11,"context_line":"Formatted and consistent messages with better quality will"},{"line_number":12,"context_line":"help users and developer learn the API quickly and enjoy"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa0719c6_4980948b","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":46},"updated":"2016-03-23 15:15:31.000000000","message":"message-\u003e messages","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"}],"specs/newton/enhance-error-messages.rst":[{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"24b57f070da69f3129150cf2956f121bc070bc25","unresolved":false,"context_lines":[{"line_number":127,"context_line":"---------------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* When error happens, a formatted error list is returned to API users, we need"},{"line_number":130,"context_line":"to start a new microversion as it breaks backward compatibility."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Security impact"},{"line_number":133,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1af94dfe_482e9cfb","line":130,"updated":"2016-03-18 22:57:58.000000000","message":"Notice how the errors guideline specifies a top level \"errors\" key [1]. The current Cinder error format [2] doesn\u0027t contain such a key, you can just add \"errors\" to the old format and have the new and old error format together during a deprecation period.\n\nHowever, if you prefer a backwards incompatible change, that\u0027s up to you.\n\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/errors.html#errors-json-example\n[2] https://wiki.openstack.org/wiki/API_Working_Group/Current_Design/Errors#Volume","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7b4895bc742eaa0622e4f89b424d3d39480f3a55","unresolved":false,"context_lines":[{"line_number":127,"context_line":"---------------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* When error happens, a formatted error list is returned to API users, we need"},{"line_number":130,"context_line":"to start a new microversion as it breaks backward compatibility."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Security impact"},{"line_number":133,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_d0ff76ff","line":130,"in_reply_to":"1af94dfe_482e9cfb","updated":"2016-03-22 10:53:39.000000000","message":"I can see advantages to both the backwards compatible and incompatible styles. I think, however, that the incompatible style is likely to result in easier to manage code. The old style can be in a clear branch of a conditional that can be removed if there is ever a major version change or the minimum version is raised.","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ae4727eaa23eb02dc1b7e970093bb9f44f5b9a58","unresolved":false,"context_lines":[{"line_number":127,"context_line":"---------------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* When error happens, a formatted error list is returned to API users, we need"},{"line_number":130,"context_line":"to start a new microversion as it breaks backward compatibility."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Security impact"},{"line_number":133,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_59a87fdb","line":130,"in_reply_to":"fa0719c6_d0ff76ff","updated":"2016-03-23 08:39:47.000000000","message":"Thanks Everett \u0026 Chris.\nIf add \"errors\" into the old style directly there would be a few duplicated information about the errors which will confuse for new users. And furthermore, we have to come back someday to remove the old format completely.\nSo, we prefer to implement a backwards incompatible model based on a microversion now.","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"25a06de6f4e550843ec151079a454ed458092838","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Add unittests and functional tests"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"* Enhance API doc correspondingly"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_0074d8fa","line":190,"range":{"start_line":190,"start_character":2,"end_line":190,"end_character":33},"updated":"2016-03-22 21:17:19.000000000","message":"Suggest: \"Enhance corresponding API doc\"","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ae4727eaa23eb02dc1b7e970093bb9f44f5b9a58","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Add unittests and functional tests"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"* Enhance API doc correspondingly"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_93ae76e4","line":190,"range":{"start_line":190,"start_character":2,"end_line":190,"end_character":33},"in_reply_to":"fa0719c6_0074d8fa","updated":"2016-03-23 08:39:47.000000000","message":"Done","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"24b57f070da69f3129150cf2956f121bc070bc25","unresolved":false,"context_lines":[{"line_number":188,"context_line":"* Add unittests and functional tests"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"* Enhance API doc correspondingly"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Dependencies"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1af94dfe_2dd35dd6","line":191,"updated":"2016-03-18 22:57:58.000000000","message":"I\u0027d suggest adding a work item for testing the error responses generated against the JSON Schema [1]. \n\n[1] http://git.openstack.org/cgit/openstack/api-wg/plain/guidelines/errors-schema.json","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ae4727eaa23eb02dc1b7e970093bb9f44f5b9a58","unresolved":false,"context_lines":[{"line_number":188,"context_line":"* Add unittests and functional tests"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"* Enhance API doc correspondingly"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Dependencies"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_334cca9d","line":191,"in_reply_to":"1af94dfe_2dd35dd6","updated":"2016-03-23 08:39:47.000000000","message":"Done","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"24b57f070da69f3129150cf2956f121bc070bc25","unresolved":false,"context_lines":[{"line_number":210,"context_line":"References"},{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* [1]: https://review.openstack.org/#/c/167793/"},{"line_number":214,"context_line":"* [2]: https://blueprints.launchpad.net/cinder/+spec/error-codes-support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1af94dfe_e8fde8b1","line":213,"updated":"2016-03-18 22:57:58.000000000","message":"Reference the actual guideline rather than the review\n\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/errors.html","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ae4727eaa23eb02dc1b7e970093bb9f44f5b9a58","unresolved":false,"context_lines":[{"line_number":210,"context_line":"References"},{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* [1]: https://review.openstack.org/#/c/167793/"},{"line_number":214,"context_line":"* [2]: https://blueprints.launchpad.net/cinder/+spec/error-codes-support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_1351c636","line":213,"in_reply_to":"1af94dfe_e8fde8b1","updated":"2016-03-23 08:39:47.000000000","message":"Done","commit_id":"75a1362bf554bb9dc9dd08915b848a8bc9c72566"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5efa98d5a3c789d79eb807c9e603f8c72fd3ec8c","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/cinder/+spec/error-codes-support"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec is intended to enhance error message according to the guideline [1]."},{"line_number":14,"context_line":"Formatted messages with better quality will help users and developer learn the"},{"line_number":15,"context_line":"API quickly. Consistent error messages cross services will make it possible"},{"line_number":16,"context_line":"that one service can transport error messages from dependent services to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_a6051a12","line":13,"range":{"start_line":13,"start_character":39,"end_line":13,"end_character":46},"updated":"2016-03-23 15:15:31.000000000","message":"message-\u003e messages","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"81a3a21972ebad2c44f1a7930fe759c7e9b53493","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/cinder/+spec/error-codes-support"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec is intended to enhance error message according to the guideline [1]."},{"line_number":14,"context_line":"Formatted messages with better quality will help users and developer learn the"},{"line_number":15,"context_line":"API quickly. Consistent error messages cross services will make it possible"},{"line_number":16,"context_line":"that one service can transport error messages from dependent services to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_52881c71","line":13,"range":{"start_line":13,"start_character":39,"end_line":13,"end_character":46},"in_reply_to":"fa0719c6_a6051a12","updated":"2016-03-24 04:18:38.000000000","message":"Done","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5efa98d5a3c789d79eb807c9e603f8c72fd3ec8c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* Tom is a cloud administrator and he always wants to analyze the"},{"line_number":36,"context_line":"  error message easily and finally resolve it as soon as possible,"},{"line_number":37,"context_line":"  while an error encountered. So a detailed and helpful error message"},{"line_number":38,"context_line":"  message will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when a error is related to multiple"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_0624c65d","line":38,"range":{"start_line":38,"start_character":2,"end_line":38,"end_character":9},"updated":"2016-03-23 15:15:31.000000000","message":"Did you mean to have \u0027message\u0027 in here twice?","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"81a3a21972ebad2c44f1a7930fe759c7e9b53493","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* Tom is a cloud administrator and he always wants to analyze the"},{"line_number":36,"context_line":"  error message easily and finally resolve it as soon as possible,"},{"line_number":37,"context_line":"  while an error encountered. So a detailed and helpful error message"},{"line_number":38,"context_line":"  message will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when a error is related to multiple"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_d2c26c84","line":38,"range":{"start_line":38,"start_character":2,"end_line":38,"end_character":9},"in_reply_to":"fa0719c6_0624c65d","updated":"2016-03-24 04:18:38.000000000","message":"Sorry, it\u0027s duplicated. We will fix it in the next version.","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5efa98d5a3c789d79eb807c9e603f8c72fd3ec8c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  message will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when a error is related to multiple"},{"line_number":42,"context_line":"  components, there is a cross-project tracking will be a quite"},{"line_number":43,"context_line":"  friendly feature for Tom."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_c6bbeee3","line":41,"range":{"start_line":41,"start_character":38,"end_line":41,"end_character":39},"updated":"2016-03-23 15:15:31.000000000","message":"a-\u003ean","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"81a3a21972ebad2c44f1a7930fe759c7e9b53493","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  message will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when a error is related to multiple"},{"line_number":42,"context_line":"  components, there is a cross-project tracking will be a quite"},{"line_number":43,"context_line":"  friendly feature for Tom."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_12b98415","line":41,"range":{"start_line":41,"start_character":38,"end_line":41,"end_character":39},"in_reply_to":"fa0719c6_c6bbeee3","updated":"2016-03-24 04:18:38.000000000","message":"Done","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5efa98d5a3c789d79eb807c9e603f8c72fd3ec8c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when a error is related to multiple"},{"line_number":42,"context_line":"  components, there is a cross-project tracking will be a quite"},{"line_number":43,"context_line":"  friendly feature for Tom."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_26f74a8c","line":42,"range":{"start_line":42,"start_character":25,"end_line":42,"end_character":47},"updated":"2016-03-23 15:15:31.000000000","message":"What do you mean a cross-project tracking? Like a tag in the error message when an error is due to more than one cloud component failing?","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"81a3a21972ebad2c44f1a7930fe759c7e9b53493","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when a error is related to multiple"},{"line_number":42,"context_line":"  components, there is a cross-project tracking will be a quite"},{"line_number":43,"context_line":"  friendly feature for Tom."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_78bf0161","line":42,"range":{"start_line":42,"start_character":25,"end_line":42,"end_character":47},"in_reply_to":"fa0719c6_26f74a8c","updated":"2016-03-24 04:18:38.000000000","message":"What we mean is that the full error stack should be tracked crossing multi components, just like the request-id does.\nFor instance:\nIn the case of the calling routine A-\u003eB-\u003eC, the following error message list should be returned while an error raised in C:\n{\n  \"errors\": [\n    {\n      \"request_id\": \"XXX\",\n      \"code\": \"A.action-failed\",\n       ...\n    },\n    {\n      \"request_id\": \"YYY\",\n      \"code\": \"B.action-failed\",\n       ...\n    },\n    {\n      \"request_id\": \"ZZZ\",\n      \"code\": \"C.action-failed\",\n       ...\n    },\n  ]\n}\n\nBut this case is definitely a future or long-term work as it must depend on the implementation of the common error message format mentioned by this specs in the other components.","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5efa98d5a3c789d79eb807c9e603f8c72fd3ec8c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":57,"context_line":"* links: A set of links for more reference about this problem."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"For each error code we implement a subclass of BaseErrorMeta. A ErrorMeta"},{"line_number":60,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":61,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_069de609","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":19},"updated":"2016-03-23 15:15:31.000000000","message":"How many error codes are there? Are we just doing this for Cinder error codes? If so, what happens with the cross project tracking you mentioned earlier? If there needs to be a subclass for each error code in each subproject of OpenStack that is getting a little unruly.","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"81a3a21972ebad2c44f1a7930fe759c7e9b53493","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":57,"context_line":"* links: A set of links for more reference about this problem."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"For each error code we implement a subclass of BaseErrorMeta. A ErrorMeta"},{"line_number":60,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":61,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_a637b64b","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":19},"in_reply_to":"fa0719c6_069de609","updated":"2016-03-24 04:18:38.000000000","message":"The \u0027subclass\u0027 here is only for the error codes of Cinder which should be an one-to-one correspondence with the Cinder Exception.\n\nIn terms of cross-project tracking, the error messages returned by the other components will be appended into the message list (especially, we must keep the sequence of error stack in the list, according to the calling routine).","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"143bc123a30084a035cf090632be24c7f0b12b06","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":57,"context_line":"* links: A set of links for more reference about this problem."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"For each error code we implement a subclass of BaseErrorMeta. A ErrorMeta"},{"line_number":60,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":61,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa0719c6_87638c41","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":19},"in_reply_to":"fa0719c6_a637b64b","updated":"2016-03-24 07:25:23.000000000","message":"Sorry for the words \"The \u0027subclass\u0027 here is only for the error codes of Cinder which should be an one-to-one correspondence with the Cinder Exception.\"\nThe actual thinking of us should be as follows:\n1. There should be a number of error codes.\n   The error code will be derived not only from the type of exception but also from the actual place where it raised. So that the error codes will be different if it is encountered in different places, although they all belong to the same exception. Please refer to example posted in the Line78-96.\n\n2. This specs only aims to the Cinder error codes.\n   As different components should customize their own error codes for their real errors, different subproject should define their own error codes. However, they all should comply with the same common error message format [1].","commit_id":"9be6fb3dd6973ffc57e7f83c0018c6bc47f1be1f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This spec is intended to enhance error messages according to the"},{"line_number":14,"context_line":"guideline [1]. Formatted messages with better quality will help"},{"line_number":15,"context_line":"users and developer learn the API quickly. Consistent error messages"},{"line_number":16,"context_line":"cross services will make it possible that one service can transport"},{"line_number":17,"context_line":"error messages from dependent services to users."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_dd6de905","line":16,"updated":"2016-03-25 18:17:51.000000000","message":"across","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This spec is intended to enhance error messages according to the"},{"line_number":14,"context_line":"guideline [1]. Formatted messages with better quality will help"},{"line_number":15,"context_line":"users and developer learn the API quickly. Consistent error messages"},{"line_number":16,"context_line":"cross services will make it possible that one service can transport"},{"line_number":17,"context_line":"error messages from dependent services to users."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_84077a1b","line":16,"in_reply_to":"da0c15f0_dd6de905","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Currently only limited information, such as \u0027code\u0027 and \u0027message\u0027,"},{"line_number":23,"context_line":"in the response message has been exposed to the users, while an"},{"line_number":24,"context_line":"error occurred. And it only bring few hints about the error to"},{"line_number":25,"context_line":"users so that it is not quite useful for users, if they want"},{"line_number":26,"context_line":"to figure out the root reason for that error."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_9d4a5182","line":24,"range":{"start_line":24,"start_character":28,"end_line":24,"end_character":33},"updated":"2016-03-25 18:17:51.000000000","message":"brings a","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Currently only limited information, such as \u0027code\u0027 and \u0027message\u0027,"},{"line_number":23,"context_line":"in the response message has been exposed to the users, while an"},{"line_number":24,"context_line":"error occurred. And it only bring few hints about the error to"},{"line_number":25,"context_line":"users so that it is not quite useful for users, if they want"},{"line_number":26,"context_line":"to figure out the root reason for that error."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_fbb6d4da","line":24,"range":{"start_line":24,"start_character":28,"end_line":24,"end_character":33},"in_reply_to":"da0c15f0_9d4a5182","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":26,"context_line":"to figure out the root reason for that error."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Furthermore, as the lack of unified format for the error message,"},{"line_number":29,"context_line":"it is hard to share the error message cross multiple projects while"},{"line_number":30,"context_line":"they are calling each other. Thus it is hard to support the"},{"line_number":31,"context_line":"cross-project tracking for the error."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_bd49158e","line":29,"range":{"start_line":29,"start_character":38,"end_line":29,"end_character":43},"updated":"2016-03-25 18:17:51.000000000","message":"across","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":26,"context_line":"to figure out the root reason for that error."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Furthermore, as the lack of unified format for the error message,"},{"line_number":29,"context_line":"it is hard to share the error message cross multiple projects while"},{"line_number":30,"context_line":"they are calling each other. Thus it is hard to support the"},{"line_number":31,"context_line":"cross-project tracking for the error."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_f8fffafe","line":29,"range":{"start_line":29,"start_character":38,"end_line":29,"end_character":43},"in_reply_to":"da0c15f0_bd49158e","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":"* Tom is a cloud administrator and he always wants to analyze the"},{"line_number":36,"context_line":"  error message easily and finally resolve it as soon as possible,"},{"line_number":37,"context_line":"  while an error encountered. So a detailed and helpful error message"},{"line_number":38,"context_line":"  will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_dd3b29ea","line":37,"range":{"start_line":37,"start_character":2,"end_line":37,"end_character":16},"updated":"2016-03-25 18:17:51.000000000","message":"when an error is","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":"* Tom is a cloud administrator and he always wants to analyze the"},{"line_number":36,"context_line":"  error message easily and finally resolve it as soon as possible,"},{"line_number":37,"context_line":"  while an error encountered. So a detailed and helpful error message"},{"line_number":38,"context_line":"  will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_78148a43","line":37,"range":{"start_line":37,"start_character":2,"end_line":37,"end_character":16},"in_reply_to":"da0c15f0_dd3b29ea","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  while an error encountered. So a detailed and helpful error message"},{"line_number":38,"context_line":"  will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when an error is related to multiple"},{"line_number":42,"context_line":"  components, there is a cross-project tracking will be a quite"},{"line_number":43,"context_line":"  friendly feature for Tom. This case is a future work as it has to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_1d0da13e","line":40,"range":{"start_line":40,"start_character":17,"end_line":40,"end_character":47},"updated":"2016-03-25 18:17:51.000000000","message":"care of multiple components in","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  while an error encountered. So a detailed and helpful error message"},{"line_number":38,"context_line":"  will be a great assistant for him."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* Tom also takes care multiple components about the cloud, e.g."},{"line_number":41,"context_line":"  cinder, keystone, and nova. So when an error is related to multiple"},{"line_number":42,"context_line":"  components, there is a cross-project tracking will be a quite"},{"line_number":43,"context_line":"  friendly feature for Tom. This case is a future work as it has to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_d829568b","line":40,"range":{"start_line":40,"start_character":17,"end_line":40,"end_character":47},"in_reply_to":"da0c15f0_1d0da13e","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this specs only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create another specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_7852eb14","line":66,"range":{"start_line":66,"start_character":22,"end_line":66,"end_character":27},"updated":"2016-03-25 18:17:51.000000000","message":"spec","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this specs only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create another specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_783bead1","line":66,"range":{"start_line":66,"start_character":22,"end_line":66,"end_character":27},"in_reply_to":"da0c15f0_7852eb14","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this specs only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create another specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"},{"line_number":70,"context_line":"Add a wrapper class around to the cinder API interfaces to add a list of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_1842cf3e","line":67,"range":{"start_line":67,"start_character":30,"end_line":67,"end_character":37},"updated":"2016-03-25 18:17:51.000000000","message":"other","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this specs only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create another specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"},{"line_number":70,"context_line":"Add a wrapper class around to the cinder API interfaces to add a list of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_f84d3a73","line":67,"range":{"start_line":67,"start_character":30,"end_line":67,"end_character":37},"in_reply_to":"da0c15f0_1842cf3e","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":67,"context_line":"other projects we will create another specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"},{"line_number":70,"context_line":"Add a wrapper class around to the cinder API interfaces to add a list of"},{"line_number":71,"context_line":"BaseErrorMeta according to various real exceptions, and then re-raise the"},{"line_number":72,"context_line":"customised exception again in the wrapper."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_78794b93","line":70,"range":{"start_line":70,"start_character":27,"end_line":70,"end_character":29},"updated":"2016-03-25 18:17:51.000000000","message":"remove \u0027to\u0027","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"other projects we will create another specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"},{"line_number":70,"context_line":"Add a wrapper class around to the cinder API interfaces to add a list of"},{"line_number":71,"context_line":"BaseErrorMeta according to various real exceptions, and then re-raise the"},{"line_number":72,"context_line":"customised exception again in the wrapper."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_b84c6271","line":70,"range":{"start_line":70,"start_character":27,"end_line":70,"end_character":29},"in_reply_to":"da0c15f0_78794b93","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":75,"context_line":"each other, hopefully, every error raised in the API interface should"},{"line_number":76,"context_line":"associate with a unique error code."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"By default, a common type of error code associated the API will be"},{"line_number":79,"context_line":"raised while there is no specific error code specified in the API"},{"line_number":80,"context_line":"interface. For example:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_98825f51","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":54},"updated":"2016-03-25 18:17:51.000000000","message":"associated with the","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"each other, hopefully, every error raised in the API interface should"},{"line_number":76,"context_line":"associate with a unique error code."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"By default, a common type of error code associated the API will be"},{"line_number":79,"context_line":"raised while there is no specific error code specified in the API"},{"line_number":80,"context_line":"interface. For example:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_f8741a9d","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":54},"in_reply_to":"da0c15f0_98825f51","updated":"2016-03-28 02:47:38.000000000","message":"Done","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Alternatives"},{"line_number":123,"context_line":"------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Data model impact"},{"line_number":128,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_f8c1db81","line":125,"range":{"start_line":125,"start_character":0,"end_line":125,"end_character":5},"updated":"2016-03-25 18:17:51.000000000","message":"Do we really have no alternatives here?","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Alternatives"},{"line_number":123,"context_line":"------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Data model impact"},{"line_number":128,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_db50300d","line":125,"range":{"start_line":125,"start_character":0,"end_line":125,"end_character":5},"in_reply_to":"da0c15f0_f8c1db81","updated":"2016-03-28 02:47:38.000000000","message":"No, we will add it in the next version.","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6972d924391580601990758ae7020390539db3be","unresolved":false,"context_lines":[{"line_number":185,"context_line":"* Anyone who wants to design the error-code and provide a help href"},{"line_number":186,"context_line":"link is welcome."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Work Items"},{"line_number":189,"context_line":"----------"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* Introduce BaseErrorMeta into cinder"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_386a3381","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":10},"updated":"2016-03-25 18:17:51.000000000","message":"Given that this would touch many files in Cinder some sort of phased update of exception messages would need to be implemented.  I.E. a patch per directory after the base support is in place, or something similar.  Touches too many files to have it as one large patch.","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"126b67e377551ad5f23984aa31cb11d6fa83209c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"* Anyone who wants to design the error-code and provide a help href"},{"line_number":186,"context_line":"link is welcome."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Work Items"},{"line_number":189,"context_line":"----------"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* Introduce BaseErrorMeta into cinder"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da0c15f0_1b862813","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":10},"in_reply_to":"da0c15f0_386a3381","updated":"2016-03-28 02:47:38.000000000","message":"Yes, we also think so. And that\u0027s why we introduce a few common implementations first (i.e. Step 1-3) and then bring them into all APIs (i.e. Step 4 in the Work Items).\nMaybe one patch per directory is a good suggestion, thanks a lot.","commit_id":"cdcefe00479c9fdb1de18d8158a8c1eac0aa5bb9"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4a1baef18dd97b6c67fdd0d48323b7c0a0bd01c","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Alternatives"},{"line_number":123,"context_line":"------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are no any changes"},{"line_number":128,"context_line":"  to the returning error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_6700bcab","line":126,"range":{"start_line":125,"start_character":1,"end_line":126,"end_character":31},"updated":"2016-03-28 17:00:34.000000000","message":"I am confused, in response to my note in patch set 4 you say there are no alternatives but here you say there is.  Which is correct?","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"f51ebe9ff497b5a389a0ed0634a00c7cfffaad41","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Alternatives"},{"line_number":123,"context_line":"------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are no any changes"},{"line_number":128,"context_line":"  to the returning error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_dfd7bd21","line":126,"range":{"start_line":125,"start_character":1,"end_line":126,"end_character":31},"in_reply_to":"ba0121b8_6700bcab","updated":"2016-03-29 02:15:50.000000000","message":"I\u0027m really sorry for the confusion. The correct answer is \"Yes, we will add it in the next version.\", please forgive me for my poor English.","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4a1baef18dd97b6c67fdd0d48323b7c0a0bd01c","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are no any changes"},{"line_number":128,"context_line":"  to the returning error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_47a3f89e","line":127,"range":{"start_line":127,"start_character":60,"end_line":127,"end_character":62},"updated":"2016-03-28 17:00:34.000000000","message":"not","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"f51ebe9ff497b5a389a0ed0634a00c7cfffaad41","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are no any changes"},{"line_number":128,"context_line":"  to the returning error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_1f2bf531","line":127,"range":{"start_line":127,"start_character":60,"end_line":127,"end_character":62},"in_reply_to":"ba0121b8_47a3f89e","updated":"2016-03-29 02:15:50.000000000","message":"Done","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4a1baef18dd97b6c67fdd0d48323b7c0a0bd01c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are no any changes"},{"line_number":128,"context_line":"  to the returning error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_87ad108b","line":128,"range":{"start_line":128,"start_character":9,"end_line":128,"end_character":18},"updated":"2016-03-28 17:00:34.000000000","message":"existing","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"f51ebe9ff497b5a389a0ed0634a00c7cfffaad41","unresolved":false,"context_lines":[{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are no any changes"},{"line_number":128,"context_line":"  to the returning error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_3f26b968","line":128,"range":{"start_line":128,"start_character":9,"end_line":128,"end_character":18},"in_reply_to":"ba0121b8_87ad108b","updated":"2016-03-29 02:15:50.000000000","message":"Done","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4a1baef18dd97b6c67fdd0d48323b7c0a0bd01c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":"And these both formats will be supported for a long period of time we think."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Data model impact"},{"line_number":137,"context_line":"-----------------"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_67739c4e","line":135,"updated":"2016-03-28 17:00:34.000000000","message":"Sorry, I don\u0027t understand these?  So you are saying that the option is to keep things backward compatible?","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"f51ebe9ff497b5a389a0ed0634a00c7cfffaad41","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":"And these both formats will be supported for a long period of time we think."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Data model impact"},{"line_number":137,"context_line":"-----------------"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba0121b8_3fdd1943","line":135,"in_reply_to":"ba0121b8_67739c4e","updated":"2016-03-29 02:15:50.000000000","message":"Yes, that\u0027s exactly what I meant. But should I remove it, if that makes you confused?","commit_id":"ca368a530e407f547756d4358970cb84931566d6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":48,"context_line":"1. Introduce a new class BaseErrorMeta."},{"line_number":49,"context_line":"A new class BaseErrorMeta is introduced into cinder to collect information"},{"line_number":50,"context_line":"about problems encountered. According to the guideline [1], BaseErrorMeta"},{"line_number":51,"context_line":"class should contain the following attributes:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_a97720d3","line":48,"range":{"start_line":48,"start_character":3,"end_line":48,"end_character":38},"updated":"2016-05-18 11:49:54.000000000","message":"-1: I don\u0027t think we need a new class, we should modify existing CinderException class.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":48,"context_line":"1. Introduce a new class BaseErrorMeta."},{"line_number":49,"context_line":"A new class BaseErrorMeta is introduced into cinder to collect information"},{"line_number":50,"context_line":"about problems encountered. According to the guideline [1], BaseErrorMeta"},{"line_number":51,"context_line":"class should contain the following attributes:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_f33bcd9a","line":48,"range":{"start_line":48,"start_character":3,"end_line":48,"end_character":38},"in_reply_to":"bab6814e_a97720d3","updated":"2016-05-18 13:45:49.000000000","message":"Done. We\u0027ll re-design it in the next version.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"class should contain the following attributes:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* request_id: A unique identifier for the request."},{"line_number":54,"context_line":"* code: A service-specific error code."},{"line_number":55,"context_line":"* status: The HTTP status code applicable to this problem."},{"line_number":56,"context_line":"* title: A short, human-readable summary of the problem."},{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ec1db667","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":6},"updated":"2016-05-18 11:49:54.000000000","message":"If using CinderException class we would use a different attribute name in the class, since code is already taken, ie: cinder_code","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b728befb9ea0a2dfaaa255ac6b1f98e271d9f4aa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"class should contain the following attributes:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* request_id: A unique identifier for the request."},{"line_number":54,"context_line":"* code: A service-specific error code."},{"line_number":55,"context_line":"* status: The HTTP status code applicable to this problem."},{"line_number":56,"context_line":"* title: A short, human-readable summary of the problem."},{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ceb7cdf3","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":6},"in_reply_to":"bab6814e_b352e5db","updated":"2016-05-19 10:18:08.000000000","message":"Yes, that\u0027s the idea, keep as much as possible unchanged in cinder and then change it when generating the output.  :-)","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"class should contain the following attributes:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* request_id: A unique identifier for the request."},{"line_number":54,"context_line":"* code: A service-specific error code."},{"line_number":55,"context_line":"* status: The HTTP status code applicable to this problem."},{"line_number":56,"context_line":"* title: A short, human-readable summary of the problem."},{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_b352e5db","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":6},"in_reply_to":"bab6814e_ec1db667","updated":"2016-05-18 13:45:49.000000000","message":"We can use \u0027cinder_code\u0027 or something like that internally to distinguish it from the existing one, but we must replace it with \u0027code\u0027 while outputting the message, as we should be consistent with the guideline, I think.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* request_id: A unique identifier for the request."},{"line_number":54,"context_line":"* code: A service-specific error code."},{"line_number":55,"context_line":"* status: The HTTP status code applicable to this problem."},{"line_number":56,"context_line":"* title: A short, human-readable summary of the problem."},{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":58,"context_line":"* links: A set of links for more reference about this problem."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_8c37cae2","line":55,"range":{"start_line":55,"start_character":2,"end_line":55,"end_character":8},"updated":"2016-05-18 11:49:54.000000000","message":"This is already existing code attribute.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* request_id: A unique identifier for the request."},{"line_number":54,"context_line":"* code: A service-specific error code."},{"line_number":55,"context_line":"* status: The HTTP status code applicable to this problem."},{"line_number":56,"context_line":"* title: A short, human-readable summary of the problem."},{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":58,"context_line":"* links: A set of links for more reference about this problem."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_135e51e9","line":55,"range":{"start_line":55,"start_character":2,"end_line":55,"end_character":8},"in_reply_to":"bab6814e_8c37cae2","updated":"2016-05-18 13:45:49.000000000","message":"Yes, it should be assigned with the existing code attribute.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* code: A service-specific error code."},{"line_number":55,"context_line":"* status: The HTTP status code applicable to this problem."},{"line_number":56,"context_line":"* title: A short, human-readable summary of the problem."},{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":58,"context_line":"* links: A set of links for more reference about this problem."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"For each error code we implement a subclass of BaseErrorMeta. A ErrorMeta"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ec4bf657","line":57,"updated":"2016-05-18 11:49:54.000000000","message":"This would be current six.text_type(exception)","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":58,"context_line":"* links: A set of links for more reference about this problem."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"For each error code we implement a subclass of BaseErrorMeta. A ErrorMeta"},{"line_number":61,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":62,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_69f3780b","line":60,"range":{"start_line":60,"start_character":62,"end_line":60,"end_character":63},"updated":"2016-05-18 11:49:54.000000000","message":"nit: An","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"* detail: A human-readable explanation of the problem."},{"line_number":58,"context_line":"* links: A set of links for more reference about this problem."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"For each error code we implement a subclass of BaseErrorMeta. A ErrorMeta"},{"line_number":61,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":62,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_53e739e4","line":60,"range":{"start_line":60,"start_character":62,"end_line":60,"end_character":63},"in_reply_to":"bab6814e_69f3780b","updated":"2016-05-18 13:45:49.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":62,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this spec only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create other specs."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_295e90e9","line":64,"range":{"start_line":64,"start_character":50,"end_line":64,"end_character":58},"updated":"2016-05-18 11:49:54.000000000","message":"nit: that","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"should be identified by its error code, which is necessary for services"},{"line_number":62,"context_line":"like nova to distinguish \"What happened?\"."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this spec only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create other specs."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_73cebd5b","line":64,"range":{"start_line":64,"start_character":50,"end_line":64,"end_character":58},"in_reply_to":"bab6814e_295e90e9","updated":"2016-05-18 13:45:49.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this spec only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create other specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_6926d869","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":11},"updated":"2016-05-18 11:49:54.000000000","message":"nit: are raised","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this spec only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create other specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_891dfc11","line":66,"range":{"start_line":66,"start_character":37,"end_line":66,"end_character":43},"updated":"2016-05-18 11:49:54.000000000","message":"nit: to address the","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this spec only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create other specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_93f8817e","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":11},"in_reply_to":"bab6814e_6926d869","updated":"2016-05-18 13:45:49.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Note that there should be a number of error codes as which will be derived"},{"line_number":65,"context_line":"not only from the types of exception but also from the actual places where"},{"line_number":66,"context_line":"they raised. And this spec only aims to the cinder error codes. For the"},{"line_number":67,"context_line":"other projects we will create other specs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Add a wrapper"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_73f51d82","line":66,"range":{"start_line":66,"start_character":37,"end_line":66,"end_character":43},"in_reply_to":"bab6814e_891dfc11","updated":"2016-05-18 13:45:49.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. code:: python"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"+    @error_code(code\u003d\"volume.delete-failed-volume-not-found\")"},{"line_number":85,"context_line":"    def delete(...):"},{"line_number":86,"context_line":"        ...code stuff..."},{"line_number":87,"context_line":"        if not result:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_c99c246c","line":84,"range":{"start_line":84,"start_character":30,"end_line":84,"end_character":60},"updated":"2016-05-18 11:49:54.000000000","message":"-1: I love the decorator idea, as it could add request_id, code, request API version, etc, but I disagree with the codes.  We should not be adding additional information to the error code.  In guideline example you can see that this would be:\n\n volume.delete-failed\n\nThe Not found we be specified by the http status code that goes in the \"status\" field.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b728befb9ea0a2dfaaa255ac6b1f98e271d9f4aa","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. code:: python"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"+    @error_code(code\u003d\"volume.delete-failed-volume-not-found\")"},{"line_number":85,"context_line":"    def delete(...):"},{"line_number":86,"context_line":"        ...code stuff..."},{"line_number":87,"context_line":"        if not result:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ee5a9182","line":84,"range":{"start_line":84,"start_character":30,"end_line":84,"end_character":60},"in_reply_to":"bab6814e_8c5863fc","updated":"2016-05-19 10:18:08.000000000","message":"As I see it, each part of the error gives you additional information, and you need to look at it all to get the complete picture.\n\nSo with the code you would get where it failed, with the status you would get the type of error it was, with the title a generic human readable text and with detail you would get all the detail.\n\nAdding the not-found information to the code doesn\u0027t give us anything, since that information is already in status.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. code:: python"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"+    @error_code(code\u003d\"volume.delete-failed-volume-not-found\")"},{"line_number":85,"context_line":"    def delete(...):"},{"line_number":86,"context_line":"        ...code stuff..."},{"line_number":87,"context_line":"        if not result:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_8c5863fc","line":84,"range":{"start_line":84,"start_character":30,"end_line":84,"end_character":60},"in_reply_to":"bab6814e_c99c246c","updated":"2016-05-18 13:45:49.000000000","message":"But in this way you suggested, only one error code would be returned, so that we\u0027re hard to expose more detailed information for each error spots. Just like line74~76 said.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"8ee50070c761037c28819cf6d54e41ffff5c38b2","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. code:: python"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"+    @error_code(code\u003d\"volume.delete-failed-volume-not-found\")"},{"line_number":85,"context_line":"    def delete(...):"},{"line_number":86,"context_line":"        ...code stuff..."},{"line_number":87,"context_line":"        if not result:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_2f757063","line":84,"range":{"start_line":84,"start_character":30,"end_line":84,"end_character":60},"in_reply_to":"bab6814e_ee5a9182","updated":"2016-05-20 11:29:05.000000000","message":"Done.\nWe re-design it with spitting the code into prefix and suffix:\nprefix is passed by here which will include: \u003cmodule info\u003e.\u003cfunction\u003e, for instance volume.delete or snapshots.delete.\nand the suffix will be defined in the subclasses of CinderException, for instance:\nclass NotFound(...):\n   code \u003d \"not-found\".\nAt last in the wrapper the whole error code will be concatenated as volume.delete.not-found or snapshots.delete.not-found.\n\nDoes this make sense to you?","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            LOG.info(msg)"},{"line_number":92,"context_line":"-            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":93,"context_line":"+            raise exception.InvalidVolume(reason\u003dmsg,"},{"line_number":94,"context_line":"+                code\u003d\u0027volume.delete-failed-volume-invalid-state\u0027)"},{"line_number":95,"context_line":"        ...code stuff..."},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            self.key_manager.delete_key(context, encryption_key_id)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_69b098de","line":94,"updated":"2016-05-18 11:49:54.000000000","message":"If we generate codes as guideline suggests (read above comment) we don\u0027t need to modify raised exceptions with the code, as the decorator would add it, greatly reducing required code changes.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            LOG.info(msg)"},{"line_number":92,"context_line":"-            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":93,"context_line":"+            raise exception.InvalidVolume(reason\u003dmsg,"},{"line_number":94,"context_line":"+                code\u003d\u0027volume.delete-failed-volume-invalid-state\u0027)"},{"line_number":95,"context_line":"        ...code stuff..."},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            self.key_manager.delete_key(context, encryption_key_id)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ccf9cbca","line":94,"in_reply_to":"bab6814e_69b098de","updated":"2016-05-18 13:45:49.000000000","message":"Please refer to the answer above.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b728befb9ea0a2dfaaa255ac6b1f98e271d9f4aa","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            LOG.info(msg)"},{"line_number":92,"context_line":"-            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":93,"context_line":"+            raise exception.InvalidVolume(reason\u003dmsg,"},{"line_number":94,"context_line":"+                code\u003d\u0027volume.delete-failed-volume-invalid-state\u0027)"},{"line_number":95,"context_line":"        ...code stuff..."},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            self.key_manager.delete_key(context, encryption_key_id)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_2edc99e3","line":94,"in_reply_to":"bab6814e_ccf9cbca","updated":"2016-05-19 10:18:08.000000000","message":"As I mention above, invalid state is just a BadRequest, which is the HTTP status code that the error would contain.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"c689218c4b0c12dc44f913e44ba0feffb7909009","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            msg \u003d _(\"Unable to delete encrypted volume: %s.\") % e.msg"},{"line_number":100,"context_line":"-        raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":101,"context_line":"+        raise exception.InvalidVolume(reason\u003dmsg,"},{"line_number":102,"context_line":"+            code\u003d\u0027olume.delete-failed-volume-been-encrypted\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note that if the exception contains a list of BaseErrorMeta, all of them"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a122d0e_5389b2c9","line":102,"range":{"start_line":102,"start_character":19,"end_line":102,"end_character":24},"updated":"2016-04-22 23:50:00.000000000","message":"volume","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            msg \u003d _(\"Unable to delete encrypted volume: %s.\") % e.msg"},{"line_number":100,"context_line":"-        raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":101,"context_line":"+        raise exception.InvalidVolume(reason\u003dmsg,"},{"line_number":102,"context_line":"+            code\u003d\u0027olume.delete-failed-volume-been-encrypted\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note that if the exception contains a list of BaseErrorMeta, all of them"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ec000fad","line":102,"range":{"start_line":102,"start_character":19,"end_line":102,"end_character":24},"in_reply_to":"1a122d0e_5389b2c9","updated":"2016-05-18 13:45:49.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note that if the exception contains a list of BaseErrorMeta, all of them"},{"line_number":106,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"3. Enhance the wsgi interface"},{"line_number":109,"context_line":"The wsgi interface should be enhanced to support the output for the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_8c486a2f","line":106,"updated":"2016-05-18 11:49:54.000000000","message":"I don\u0027t think we currently have any case like this, do we?\nBut I think this mechanism of aggregating exceptions could be easily added to CinderException as well.\n\nOne place where I think this could come in handy is in the cases where we are doing `save_and_reraise_exception`, as we could add any additional exception that is raised in that context.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"8ee50070c761037c28819cf6d54e41ffff5c38b2","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note that if the exception contains a list of BaseErrorMeta, all of them"},{"line_number":106,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"3. Enhance the wsgi interface"},{"line_number":109,"context_line":"The wsgi interface should be enhanced to support the output for the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ef5528fa","line":106,"in_reply_to":"bab6814e_0e8555ac","updated":"2016-05-20 11:29:05.000000000","message":"Our original design is that a metas property (List type) will be added into CinderException to hold the exception list. And while an exception will be raised, the last exception will be appended into the metas firstly, then raise the exception.\n\nBut now if all properties are appended into CinderException and meanwhile there is no change to every spot where the exception raised, I\u0027m not sure if there is good solution to record the exception list.\nOr do you have any good idea? Thanks in advance.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note that if the exception contains a list of BaseErrorMeta, all of them"},{"line_number":106,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"3. Enhance the wsgi interface"},{"line_number":109,"context_line":"The wsgi interface should be enhanced to support the output for the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_cf96dd93","line":106,"in_reply_to":"bab6814e_8c486a2f","updated":"2016-05-18 13:45:49.000000000","message":"The reason why we consider this description is to cover the cross-project cases.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b728befb9ea0a2dfaaa255ac6b1f98e271d9f4aa","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note that if the exception contains a list of BaseErrorMeta, all of them"},{"line_number":106,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"3. Enhance the wsgi interface"},{"line_number":109,"context_line":"The wsgi interface should be enhanced to support the output for the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_0e8555ac","line":106,"in_reply_to":"bab6814e_cf96dd93","updated":"2016-05-19 10:18:08.000000000","message":"Of course, in the cross-project case Cinder could append Glance exceptions to its own exceptions, return them to Nova which could add it\u0027s own exception.  Pretty neat.  :-)","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Note that for backward compatibility we have to differ the error message"},{"line_number":113,"context_line":"after formatted from the original ones with two different output formats"},{"line_number":114,"context_line":"respectively."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"What this specification does not solve"},{"line_number":117,"context_line":"--------------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_2c317e0c","line":114,"updated":"2016-05-18 11:49:54.000000000","message":"If we try to move code to raise our own exceptions instead of webob status codes (I\u0027m already working on it [1]), we also use CinderException to store everything, and the decorator adds the API version call, the data to output would be decided by the exception (since it knows the API microversion) and at the wsgi level we would just be requesting the exception to give us the data and then serialize it to JSON.\n\nI think this would result in less changes to the code, it would also be backwards compatible, and would be easy to understand.\n\n\n[1] https://review.openstack.org/314193/","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Note that for backward compatibility we have to differ the error message"},{"line_number":113,"context_line":"after formatted from the original ones with two different output formats"},{"line_number":114,"context_line":"respectively."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"What this specification does not solve"},{"line_number":117,"context_line":"--------------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_afcb9971","line":114,"in_reply_to":"bab6814e_2c317e0c","updated":"2016-05-18 13:45:49.000000000","message":"Thanks, good suggestion.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are not any changes"},{"line_number":128,"context_line":"  to the existing error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"},{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data model impact"},{"line_number":136,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_1fff7a02","line":133,"range":{"start_line":127,"start_character":0,"end_line":133,"end_character":27},"updated":"2016-05-18 11:49:54.000000000","message":"I don\u0027t really understand this alternative.  r:-(","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are not any changes"},{"line_number":128,"context_line":"  to the existing error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"},{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data model impact"},{"line_number":136,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_d23a00cd","line":133,"range":{"start_line":127,"start_character":0,"end_line":133,"end_character":27},"in_reply_to":"bab6814e_1fff7a02","updated":"2016-05-18 13:45:49.000000000","message":"Two types of error format can be output. And with this alternative, there\u0027s nothing to be changed for the existing applications which already are using the old error format.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b728befb9ea0a2dfaaa255ac6b1f98e271d9f4aa","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are not any changes"},{"line_number":128,"context_line":"  to the existing error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"},{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data model impact"},{"line_number":136,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_ce3eadd9","line":133,"range":{"start_line":127,"start_character":0,"end_line":133,"end_character":27},"in_reply_to":"bab6814e_8cffb833","updated":"2016-05-19 10:18:08.000000000","message":"scottda is correct, that is the purpose of this section, that\u0027s why I didn\u0027t understand what you were saying, because that didn\u0027t sound like a different approach to solve the same problem.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"8ee50070c761037c28819cf6d54e41ffff5c38b2","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are not any changes"},{"line_number":128,"context_line":"  to the existing error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"},{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data model impact"},{"line_number":136,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_9cc13857","line":133,"range":{"start_line":127,"start_character":0,"end_line":133,"end_character":27},"in_reply_to":"bab6814e_ce3eadd9","updated":"2016-05-20 11:29:05.000000000","message":"Done. Thanks, I\u0027ll fix it in the next version.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"49fa1be0cebfbf0dcbfa89207cea21e08bdf9632","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There is an alternative for the error message format returned by the APIs"},{"line_number":126,"context_line":"if some errors are encountered."},{"line_number":127,"context_line":"* Keep the existing error message format. So that there are not any changes"},{"line_number":128,"context_line":"  to the existing error messages if API consumers still adopt the old"},{"line_number":129,"context_line":"  error message format."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Since the microversion, which is going to be introduced by some"},{"line_number":132,"context_line":"  patches associated with this spec, the APIs would return the common"},{"line_number":133,"context_line":"  error message format [1]."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data model impact"},{"line_number":136,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_8cffb833","line":133,"range":{"start_line":127,"start_character":0,"end_line":133,"end_character":27},"in_reply_to":"bab6814e_d23a00cd","updated":"2016-05-18 16:23:15.000000000","message":"I believe this section on alternatives refers to different ways to solve this same problem, or not solving it at all.\nFor example, you might state:\nOne alternative is to keep the existing Error handling and not support the new format from the API-WG.\nAnother alternative is to output both the old format and new for users of the new microversion.\netc.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"49fa1be0cebfbf0dcbfa89207cea21e08bdf9632","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"None."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Developer impact"},{"line_number":176,"context_line":"----------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* Developer should follow this error-code format"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_e2f92b4f","line":175,"updated":"2016-05-18 16:23:15.000000000","message":"There is a Nova impact, since Nova is a user of the cinder API and has logic in the nova volume/cinder.py code that deals with cinder exceptions. The details will need to be looked at, and Changes will need to go into Nova.\nNote that Nova is not yet aware of Cinder API microversions, and at this time there is no cap to the cinderclient version used by older Nova, so care will need to be taken to preserver compatibility.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"8ee50070c761037c28819cf6d54e41ffff5c38b2","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"None."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Developer impact"},{"line_number":176,"context_line":"----------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* Developer should follow this error-code format"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_7c0294b5","line":175,"in_reply_to":"bab6814e_e2f92b4f","updated":"2016-05-20 11:29:05.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Add unittests and functional tests"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"* Enhance corresponding API doc"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_7f37a6e3","line":209,"updated":"2016-05-18 11:49:54.000000000","message":"-1: This is missing changes to the clients (cinder and openstack).","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Add unittests and functional tests"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"* Enhance corresponding API doc"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab6814e_f25f440c","line":209,"in_reply_to":"bab6814e_7f37a6e3","updated":"2016-05-18 13:45:49.000000000","message":"Done. We\u0027ll add them in the next version.","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ef7a315d79450d4c3edc019b3da92441bebcde2","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* Unit-tests should be implemented"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* Functional tests on python-cinderclient gates will be implemented"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Documentation Impact"},{"line_number":225,"context_line":"\u003d\u003d\u003d\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":7,"id":"bab6814e_5f6e22ca","line":222,"range":{"start_line":222,"start_character":22,"end_line":222,"end_character":41},"updated":"2016-05-18 11:49:54.000000000","message":"?: Why on python-cinderclient and not the server side?","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"e2c3f7b900f60c3c91159a973c88b0df5ff8d14e","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* Unit-tests should be implemented"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* Functional tests on python-cinderclient gates will be implemented"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Documentation Impact"},{"line_number":225,"context_line":"\u003d\u003d\u003d\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":7,"id":"bab6814e_d2afa0e1","line":222,"range":{"start_line":222,"start_character":22,"end_line":222,"end_character":41},"in_reply_to":"bab6814e_5f6e22ca","updated":"2016-05-18 13:45:49.000000000","message":"Done","commit_id":"0f9905de66ba27a07ea243ac8b4b63da882bfb24"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d51d19265ae7918134e6fc497c800eb49542e402","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":48,"context_line":"1. Add a new class ErrorMixin."},{"line_number":49,"context_line":"Add a new class of ErrorMinin into cinder to handle the error materials"},{"line_number":50,"context_line":"specified by the guideline [1], which will be mixed into the other"},{"line_number":51,"context_line":"exception class later."},{"line_number":52,"context_line":"According to the guideline, the following properties should be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_48f6d1f9","line":49,"updated":"2016-05-20 21:13:25.000000000","message":"Minin -\u003e Mixin","commit_id":"8165cd857158aec09df36a443c1eb9b35e597a36"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"eafaff29ec6f059d9e094a5943a5ee6ef7c8df7e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":48,"context_line":"1. Add a new class ErrorMixin."},{"line_number":49,"context_line":"Add a new class of ErrorMinin into cinder to handle the error materials"},{"line_number":50,"context_line":"specified by the guideline [1], which will be mixed into the other"},{"line_number":51,"context_line":"exception class later."},{"line_number":52,"context_line":"According to the guideline, the following properties should be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_641da765","line":49,"in_reply_to":"bab6814e_48f6d1f9","updated":"2016-05-23 01:08:17.000000000","message":"Done","commit_id":"8165cd857158aec09df36a443c1eb9b35e597a36"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d51d19265ae7918134e6fc497c800eb49542e402","unresolved":false,"context_lines":[{"line_number":64,"context_line":"For instance, there is already a \"code\" property in the CinderException"},{"line_number":65,"context_line":"class, and also there are \"title\", \"code\", \"detail\" properties in"},{"line_number":66,"context_line":"the HTTPExceptions. However, to be consistent with the guideline,"},{"line_number":67,"context_line":"the \"err_\" prefix will be removed while output the new message."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Make CinderException also inherit the ErrorMixin class."},{"line_number":70,"context_line":"In addition to the Exception class, now the CinderException class"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_48cd31b6","line":67,"updated":"2016-05-20 21:13:25.000000000","message":"\"while output\" -\u003e for the output","commit_id":"8165cd857158aec09df36a443c1eb9b35e597a36"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"eafaff29ec6f059d9e094a5943a5ee6ef7c8df7e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"For instance, there is already a \"code\" property in the CinderException"},{"line_number":65,"context_line":"class, and also there are \"title\", \"code\", \"detail\" properties in"},{"line_number":66,"context_line":"the HTTPExceptions. However, to be consistent with the guideline,"},{"line_number":67,"context_line":"the \"err_\" prefix will be removed while output the new message."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. Make CinderException also inherit the ErrorMixin class."},{"line_number":70,"context_line":"In addition to the Exception class, now the CinderException class"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_44186375","line":67,"in_reply_to":"bab6814e_48cd31b6","updated":"2016-05-23 01:08:17.000000000","message":"Done","commit_id":"8165cd857158aec09df36a443c1eb9b35e597a36"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d51d19265ae7918134e6fc497c800eb49542e402","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if not result:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exception contains a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_c85001d7","line":142,"updated":"2016-05-20 21:13:25.000000000","message":"exception-\u003eexceptions","commit_id":"8165cd857158aec09df36a443c1eb9b35e597a36"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"eafaff29ec6f059d9e094a5943a5ee6ef7c8df7e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if not result:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exception contains a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_a4294f8c","line":142,"in_reply_to":"bab6814e_c85001d7","updated":"2016-05-23 01:08:17.000000000","message":"Done","commit_id":"8165cd857158aec09df36a443c1eb9b35e597a36"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Add a new class of ErrorMixin into cinder to handle the error materials"},{"line_number":50,"context_line":"specified by the guideline [1], which will be mixed into the other"},{"line_number":51,"context_line":"exception class later."},{"line_number":52,"context_line":"According to the guideline, the following properties should be"},{"line_number":53,"context_line":"contained in the ErrorMixin class:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* err_request_id: A unique identifier for the request."},{"line_number":56,"context_line":"* err_code: A service-specific error code."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_5f23e955","line":53,"range":{"start_line":52,"start_character":59,"end_line":53,"end_character":9},"updated":"2016-06-27 09:53:39.000000000","message":"nit: I don\u0027t think that\u0027s correct, 5 of those properties *must* be there and 1 *may* be there (since it\u0027s not required).","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Add a new class of ErrorMixin into cinder to handle the error materials"},{"line_number":50,"context_line":"specified by the guideline [1], which will be mixed into the other"},{"line_number":51,"context_line":"exception class later."},{"line_number":52,"context_line":"According to the guideline, the following properties should be"},{"line_number":53,"context_line":"contained in the ErrorMixin class:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* err_request_id: A unique identifier for the request."},{"line_number":56,"context_line":"* err_code: A service-specific error code."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_550ce53a","line":53,"range":{"start_line":52,"start_character":59,"end_line":53,"end_character":9},"in_reply_to":"3aaa91ec_5f23e955","updated":"2016-06-29 13:34:49.000000000","message":"Done.\nYes, The request_id is optional.","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6dba52f5726140026bd8338f08a9bab8039ccbfc","unresolved":false,"context_lines":[{"line_number":78,"context_line":".. code:: python"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    class CinderException(Exception, ErrorMixin):"},{"line_number":81,"context_line":"        ...code staff..."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    class NotFound(CinderException):"},{"line_number":84,"context_line":"        message \u003d _(\"Resource could not be found.\")"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bab6814e_0c5ca17b","line":81,"range":{"start_line":81,"start_character":15,"end_line":81,"end_character":21},"updated":"2016-05-23 15:15:01.000000000","message":"stuff","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":78,"context_line":".. code:: python"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    class CinderException(Exception, ErrorMixin):"},{"line_number":81,"context_line":"        ...code staff..."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    class NotFound(CinderException):"},{"line_number":84,"context_line":"        message \u003d _(\"Resource could not be found.\")"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_f534f1de","line":81,"range":{"start_line":81,"start_character":15,"end_line":81,"end_character":21},"in_reply_to":"bab6814e_0c5ca17b","updated":"2016-06-29 13:34:49.000000000","message":"Done","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        code \u003d 404"},{"line_number":86,"context_line":"        safe \u003d True"},{"line_number":87,"context_line":"        err_code \u003d \"not-found\""},{"line_number":88,"context_line":"        err_status \u003d code"},{"line_number":89,"context_line":"        err_title \u003d \"No valide resource found\""},{"line_number":90,"context_line":"        err_links \u003d [{"},{"line_number":91,"context_line":"            \"rel\": \"help\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_9ffb9146","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":25},"updated":"2016-06-27 09:53:39.000000000","message":"-1: I don\u0027t think it makes sense to have this in all our exceptions.  I see multiple solutions:\n\n- Add that line to ErrorMixin\n- Use `code` attribute instead of `err_status`\n- Rename attribute code to err_code everywhere","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        code \u003d 404"},{"line_number":86,"context_line":"        safe \u003d True"},{"line_number":87,"context_line":"        err_code \u003d \"not-found\""},{"line_number":88,"context_line":"        err_status \u003d code"},{"line_number":89,"context_line":"        err_title \u003d \"No valide resource found\""},{"line_number":90,"context_line":"        err_links \u003d [{"},{"line_number":91,"context_line":"            \"rel\": \"help\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_15153d9a","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":25},"in_reply_to":"3aaa91ec_9ffb9146","updated":"2016-06-29 13:34:49.000000000","message":"Thanks for your nice advice, I prefer to 1 as it will result in less changes to our code.","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        safe \u003d True"},{"line_number":87,"context_line":"        err_code \u003d \"not-found\""},{"line_number":88,"context_line":"        err_status \u003d code"},{"line_number":89,"context_line":"        err_title \u003d \"No valide resource found\""},{"line_number":90,"context_line":"        err_links \u003d [{"},{"line_number":91,"context_line":"            \"rel\": \"help\","},{"line_number":92,"context_line":"            \"href\": \"http://docs.openstack.org/\"}]"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_1f0b217e","line":89,"range":{"start_line":89,"start_character":24,"end_line":89,"end_character":30},"updated":"2016-06-27 09:53:39.000000000","message":"nit: valid","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        safe \u003d True"},{"line_number":87,"context_line":"        err_code \u003d \"not-found\""},{"line_number":88,"context_line":"        err_status \u003d code"},{"line_number":89,"context_line":"        err_title \u003d \"No valide resource found\""},{"line_number":90,"context_line":"        err_links \u003d [{"},{"line_number":91,"context_line":"            \"rel\": \"help\","},{"line_number":92,"context_line":"            \"href\": \"http://docs.openstack.org/\"}]"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_750c8194","line":89,"range":{"start_line":89,"start_character":24,"end_line":89,"end_character":30},"in_reply_to":"3aaa91ec_1f0b217e","updated":"2016-06-29 13:34:49.000000000","message":"Done","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        err_title \u003d \"No valide resource found\""},{"line_number":90,"context_line":"        err_links \u003d [{"},{"line_number":91,"context_line":"            \"rel\": \"help\","},{"line_number":92,"context_line":"            \"href\": \"http://docs.openstack.org/\"}]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Note that the \"err_code\" property here only contains partial information,"},{"line_number":95,"context_line":"indeed here is the suffix of \"err_code\", and the prefix will be added by"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_df65191e","line":92,"updated":"2016-06-27 09:53:39.000000000","message":"-1: What about err_detail?  That is also a required field, and I believe this should be defined in the ErrorMixin as:\n\n @property\n def err_detail(self):\n     return self.__unicode__()","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        err_title \u003d \"No valide resource found\""},{"line_number":90,"context_line":"        err_links \u003d [{"},{"line_number":91,"context_line":"            \"rel\": \"help\","},{"line_number":92,"context_line":"            \"href\": \"http://docs.openstack.org/\"}]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Note that the \"err_code\" property here only contains partial information,"},{"line_number":95,"context_line":"indeed here is the suffix of \"err_code\", and the prefix will be added by"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_6bfe646c","line":92,"in_reply_to":"3aaa91ec_df65191e","updated":"2016-06-29 13:34:49.000000000","message":"Thanks, we omitted it.","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":116,"context_line":"is still in process by the patch [4], so that in this spec we won\u0027t"},{"line_number":117,"context_line":"cover them."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"3. Add a wrapper"},{"line_number":120,"context_line":"Add a wrapper class around the cinder API interfaces to add a list of"},{"line_number":121,"context_line":"exception according to various real exceptions, and then re-raise the"},{"line_number":122,"context_line":"customized exception again in the wrapper."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_91fb8546","line":119,"updated":"2016-06-27 09:53:39.000000000","message":"?: Any reason why we don\u0027t want to do this automatically at the wsgi level using the exception that has been raised?","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":116,"context_line":"is still in process by the patch [4], so that in this spec we won\u0027t"},{"line_number":117,"context_line":"cover them."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"3. Add a wrapper"},{"line_number":120,"context_line":"Add a wrapper class around the cinder API interfaces to add a list of"},{"line_number":121,"context_line":"exception according to various real exceptions, and then re-raise the"},{"line_number":122,"context_line":"customized exception again in the wrapper."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_0b98801a","line":119,"in_reply_to":"3aaa91ec_91fb8546","updated":"2016-06-29 13:34:49.000000000","message":"Done.","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":117,"context_line":"cover them."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"3. Add a wrapper"},{"line_number":120,"context_line":"Add a wrapper class around the cinder API interfaces to add a list of"},{"line_number":121,"context_line":"exception according to various real exceptions, and then re-raise the"},{"line_number":122,"context_line":"customized exception again in the wrapper."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Just like the step-2 said, in this wrapper a complete \"err_code\" will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_318731b6","line":121,"range":{"start_line":120,"start_character":55,"end_line":121,"end_character":10},"updated":"2016-06-27 09:53:39.000000000","message":"-1: We don\u0027t add a list of exceptions, we have one internal exception that may have a list of exceptions that has been received from another component, right?","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":117,"context_line":"cover them."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"3. Add a wrapper"},{"line_number":120,"context_line":"Add a wrapper class around the cinder API interfaces to add a list of"},{"line_number":121,"context_line":"exception according to various real exceptions, and then re-raise the"},{"line_number":122,"context_line":"customized exception again in the wrapper."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Just like the step-2 said, in this wrapper a complete \"err_code\" will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_fc17b9eb","line":121,"range":{"start_line":120,"start_character":55,"end_line":121,"end_character":10},"in_reply_to":"3aaa91ec_318731b6","updated":"2016-06-29 13:34:49.000000000","message":"Maybe we don\u0027t need to implement this list in the first step, as other components haven\u0027t unified their error message yet.\nJust as you said in PS7, we can do it until we meet real demands i.e. formatted error message are landed in other components.\nWhat do you think?","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if not result:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exceptions contain a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_f121299f","line":142,"range":{"start_line":142,"start_character":17,"end_line":142,"end_character":27},"updated":"2016-06-27 09:53:39.000000000","message":"nit: exception","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if not result:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exceptions contain a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_513d9dc2","line":142,"range":{"start_line":142,"start_character":46,"end_line":142,"end_character":55},"updated":"2016-06-27 09:53:39.000000000","message":"nit: exceptions","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if not result:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exceptions contain a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_3cd4a11e","line":142,"range":{"start_line":142,"start_character":46,"end_line":142,"end_character":55},"in_reply_to":"3aaa91ec_513d9dc2","updated":"2016-06-29 13:34:49.000000000","message":"Done","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if not result:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exceptions contain a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_1cd9e557","line":142,"range":{"start_line":142,"start_character":17,"end_line":142,"end_character":27},"in_reply_to":"3aaa91ec_f121299f","updated":"2016-06-29 13:34:49.000000000","message":"Done","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exceptions contain a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"},{"line_number":146,"context_line":"The wsgi interface should be enhanced to support the output for the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_3193b15c","line":143,"updated":"2016-06-27 09:53:39.000000000","message":"-1: You are not explaining how this list of exceptions are being passed.  And as I understand it you really just have an internal exception with a possible list of exceptions from other components, so you would need an additional field like `external_exceptions`, so when we want to construct the resulting error in this component we just return a list with our internal exception as the first element and then the external exception list we have received.","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Note that if the exceptions contain a list of exception, all of them"},{"line_number":143,"context_line":"should be included into the formatted message to re-raise together."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"4. Enhance the wsgi interface"},{"line_number":146,"context_line":"The wsgi interface should be enhanced to support the output for the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_dc991d7b","line":143,"in_reply_to":"3aaa91ec_3193b15c","updated":"2016-06-29 13:34:49.000000000","message":"Just like my answer above, we can delay to implement it now.","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Other deployer impact"},{"line_number":199,"context_line":"---------------------"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"There are two different error message format will be output by cinder"},{"line_number":202,"context_line":"APIs with different microversion. When other projects call cinder APIs,"},{"line_number":203,"context_line":"deployers should need to be aware of it."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_d4285b88","line":201,"range":{"start_line":201,"start_character":30,"end_line":201,"end_character":37},"updated":"2016-06-27 09:53:39.000000000","message":"nit: messages","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cbbc27fd2c6b3fa61a2e3cc0ea98f3edf9d16533","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Other deployer impact"},{"line_number":199,"context_line":"---------------------"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"There are two different error message format will be output by cinder"},{"line_number":202,"context_line":"APIs with different microversion. When other projects call cinder APIs,"},{"line_number":203,"context_line":"deployers should need to be aware of it."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_543d8bc2","line":201,"range":{"start_line":201,"start_character":45,"end_line":201,"end_character":49},"updated":"2016-06-27 09:53:39.000000000","message":"nit: that will","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Other deployer impact"},{"line_number":199,"context_line":"---------------------"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"There are two different error message format will be output by cinder"},{"line_number":202,"context_line":"APIs with different microversion. When other projects call cinder APIs,"},{"line_number":203,"context_line":"deployers should need to be aware of it."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_fc73394c","line":201,"range":{"start_line":201,"start_character":45,"end_line":201,"end_character":49},"in_reply_to":"3aaa91ec_543d8bc2","updated":"2016-06-29 13:34:49.000000000","message":"Done","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"312f33ef80a74755fcf46ea3124ceb4534e3e278","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Other deployer impact"},{"line_number":199,"context_line":"---------------------"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"There are two different error message format will be output by cinder"},{"line_number":202,"context_line":"APIs with different microversion. When other projects call cinder APIs,"},{"line_number":203,"context_line":"deployers should need to be aware of it."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_7c7f4917","line":201,"range":{"start_line":201,"start_character":30,"end_line":201,"end_character":37},"in_reply_to":"3aaa91ec_d4285b88","updated":"2016-06-29 13:34:49.000000000","message":"Done","commit_id":"1ba3ce784447b2dcb8466d1aa4b187da21f12f89"},{"author":{"_account_id":22025,"name":"James Conroy","email":"jayryanconroy@gmail.com","username":"jayconroy"},"change_message_id":"ddc3b606d83586db1d2d3c5bcb9ce8ed21f26794","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec is intended to enhance error messages according to the"},{"line_number":14,"context_line":"guideline [1]. Formatted messages with better quality will help"},{"line_number":15,"context_line":"users and developer learn the API quickly. Consistent error messages"},{"line_number":16,"context_line":"across services will make it possible that one service can transport"},{"line_number":17,"context_line":"error messages from dependent services to users."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_057af887","line":15,"range":{"start_line":15,"start_character":19,"end_line":15,"end_character":20},"updated":"2016-07-12 14:10:58.000000000","message":"Developer should be developers (plural)","commit_id":"a4eaecff0e34f7c75fae1f65233e9d241fd4d0ba"}]}
