)]}'
{"doc/source/devref/exceptions.rst":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"d62d28eec79819196b716bce2f7be4c7883131df","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This document proposes a structure with severity levels and logical "},{"line_number":21,"context_line":"inheritance to better reflect the cause of and action taken for exceptions. "},{"line_number":22,"context_line":""},{"line_number":23,"context_line":".. image:: ../../images/exceptions.svg"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_1531890b","line":20,"range":{"start_line":20,"start_character":67,"end_line":20,"end_character":68},"updated":"2019-11-22 09:17:03.000000000","message":"remove end line extra spaces","commit_id":"b69173cf4255e80a30c2137dfc443364a2a02a06"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This document proposes a structure with severity levels and logical "},{"line_number":21,"context_line":"inheritance to better reflect the cause of and the action required for"},{"line_number":22,"context_line":"exceptions."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_6553433a","line":20,"updated":"2020-04-02 08:23:26.000000000","message":"trailing space :)","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"00b364d7ed5d81d3e0807525f3dc010f6c8dbc8d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This document proposes a structure with severity levels and logical "},{"line_number":21,"context_line":"inheritance to better reflect the cause of and the action required for"},{"line_number":22,"context_line":"exceptions."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_f1d19431","line":20,"in_reply_to":"df33271e_6553433a","updated":"2020-04-06 01:33:15.000000000","message":"Done","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":22,"context_line":"exceptions."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":".. image:: ../../images/exceptions.svg"},{"line_number":25,"context_line":"    :alt: Exceptions class diagram"},{"line_number":26,"context_line":"    :align: center"},{"line_number":27,"context_line":"    :width: 100%"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_e53c73e2","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":4},"updated":"2020-04-02 08:23:26.000000000","message":"Indentation for rest documents can be somehow confusing. Here should be exactly three spaces indent, so that it aligned with the name of the directive (which is \"image\" in this case).","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"00b364d7ed5d81d3e0807525f3dc010f6c8dbc8d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"exceptions."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":".. image:: ../../images/exceptions.svg"},{"line_number":25,"context_line":"    :alt: Exceptions class diagram"},{"line_number":26,"context_line":"    :align: center"},{"line_number":27,"context_line":"    :width: 100%"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_d1d61028","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":4},"in_reply_to":"df33271e_e53c73e2","updated":"2020-04-06 01:33:15.000000000","message":"Done","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":31,"context_line":"the exceptions can be classified into three categories:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"- Fatal: This includes the most severe errors and this would block the"},{"line_number":34,"context_line":"  controller/cni in doing the basic tasks that it supposed to do."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Transient: This class of exceptions are temporary errors like unreachable"},{"line_number":37,"context_line":"  api\u0027s (k8s, keystone, neutron, ovs) which might recover in some time. But we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_45627ed9","line":34,"range":{"start_line":34,"start_character":13,"end_line":34,"end_character":16},"updated":"2020-04-02 08:23:26.000000000","message":"Please, capitalize abbreviations.","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"00b364d7ed5d81d3e0807525f3dc010f6c8dbc8d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"the exceptions can be classified into three categories:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"- Fatal: This includes the most severe errors and this would block the"},{"line_number":34,"context_line":"  controller/cni in doing the basic tasks that it supposed to do."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Transient: This class of exceptions are temporary errors like unreachable"},{"line_number":37,"context_line":"  api\u0027s (k8s, keystone, neutron, ovs) which might recover in some time. But we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_31dc9c45","line":34,"range":{"start_line":34,"start_character":13,"end_line":34,"end_character":16},"in_reply_to":"df33271e_45627ed9","updated":"2020-04-06 01:33:15.000000000","message":"Done","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  controller/cni in doing the basic tasks that it supposed to do."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Transient: This class of exceptions are temporary errors like unreachable"},{"line_number":37,"context_line":"  api\u0027s (k8s, keystone, neutron, ovs) which might recover in some time. But we"},{"line_number":38,"context_line":"  also need to take actions for this error if they happen for more than a"},{"line_number":39,"context_line":"  threshold amount of times."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_c555eefb","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":37},"updated":"2020-04-02 08:23:26.000000000","message":"(Kubernetes, Keystone, Neutron, OVS)\n\nIn documentation, I\u0027d expect to have full names, instead of slang short names, so that it would be absolutely clear, what we are referring to.","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  controller/cni in doing the basic tasks that it supposed to do."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Transient: This class of exceptions are temporary errors like unreachable"},{"line_number":37,"context_line":"  api\u0027s (k8s, keystone, neutron, ovs) which might recover in some time. But we"},{"line_number":38,"context_line":"  also need to take actions for this error if they happen for more than a"},{"line_number":39,"context_line":"  threshold amount of times."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_451b9e71","line":37,"range":{"start_line":37,"start_character":2,"end_line":37,"end_character":5},"updated":"2020-04-02 08:23:26.000000000","message":"APIs.","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"00b364d7ed5d81d3e0807525f3dc010f6c8dbc8d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  controller/cni in doing the basic tasks that it supposed to do."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Transient: This class of exceptions are temporary errors like unreachable"},{"line_number":37,"context_line":"  api\u0027s (k8s, keystone, neutron, ovs) which might recover in some time. But we"},{"line_number":38,"context_line":"  also need to take actions for this error if they happen for more than a"},{"line_number":39,"context_line":"  threshold amount of times."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_11e198ff","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":37},"in_reply_to":"df33271e_c555eefb","updated":"2020-04-06 01:33:15.000000000","message":"Done","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":49,"context_line":"release scenario."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**CNIBindingFailure**: This is the common exception class for errors that occur"},{"line_number":52,"context_line":"in cni while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompained with"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_65a062f5","line":52,"range":{"start_line":52,"start_character":3,"end_line":52,"end_character":6},"updated":"2020-04-02 08:23:26.000000000","message":"CNI.","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"00b364d7ed5d81d3e0807525f3dc010f6c8dbc8d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"release scenario."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**CNIBindingFailure**: This is the common exception class for errors that occur"},{"line_number":52,"context_line":"in cni while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompained with"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_71e5840a","line":52,"range":{"start_line":52,"start_character":3,"end_line":52,"end_character":6},"in_reply_to":"df33271e_65a062f5","updated":"2020-04-06 01:33:15.000000000","message":"Done","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f537323a0e24d7edc08adc8cc26d84f56b6974ba","unresolved":false,"context_lines":[{"line_number":52,"context_line":"in cni while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompained with"},{"line_number":56,"context_line":"a fixed number of retries after which a Fatal exception is raised."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"**BadRequestError**: This refers to all those errors which involves user input"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_e594728d","line":55,"range":{"start_line":55,"start_character":63,"end_line":55,"end_character":74},"updated":"2020-04-02 08:23:26.000000000","message":"Accompanied.","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"00b364d7ed5d81d3e0807525f3dc010f6c8dbc8d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"in cni while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompained with"},{"line_number":56,"context_line":"a fixed number of retries after which a Fatal exception is raised."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"**BadRequestError**: This refers to all those errors which involves user input"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df33271e_51e20003","line":55,"range":{"start_line":55,"start_character":63,"end_line":55,"end_character":74},"in_reply_to":"df33271e_e594728d","updated":"2020-04-06 01:33:15.000000000","message":"Done","commit_id":"14b8b2995bb65330212b2de0e3a829a3dcb4b9a3"},{"author":{"_account_id":24604,"name":"Danil Golov","email":"d.golov@samsung.com","username":"d.golov"},"change_message_id":"530747cd52918e00ce5d2c90e822560344b50455","unresolved":false,"context_lines":[{"line_number":48,"context_line":"**VIFReleaseFailure**: This is similar to VIFRequestFailure, but for the"},{"line_number":49,"context_line":"release scenario."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**CNIBindingFailure**: This is the common exception class for errors that occur"},{"line_number":52,"context_line":"in CNI while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompanied with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_e9ed248c","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":70},"updated":"2020-04-06 09:53:46.000000000","message":"as I understand \"CNIBindingFailure\" will have this error type. So does it mean that after some attempts to bind/unbind an interface CNI will fail? Or what kind of \"action\" expects to be done for this case?","commit_id":"1408bbf297170d0a45f244f9909f91c6fc1956ae"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"1797d54a7631e5c086670e369424ecc7f21d2b69","unresolved":false,"context_lines":[{"line_number":48,"context_line":"**VIFReleaseFailure**: This is similar to VIFRequestFailure, but for the"},{"line_number":49,"context_line":"release scenario."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**CNIBindingFailure**: This is the common exception class for errors that occur"},{"line_number":52,"context_line":"in CNI while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompanied with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_d9c1fce6","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":70},"in_reply_to":"df33271e_9ee0fa98","updated":"2020-04-07 06:43:50.000000000","message":"All of those exceptions might be treated differently depending on a case. I might\u0027ve missed that, but even in this document, there is no explanation, why we do need this.\n\nI guess the blueprint/spec is an overkill here, so that I\u0027d expect, there is a solid use case/purpose of this structured exceptions hierarchy covered.\n\nCould you elaborate on that a little bit please? Example of usage would be beneficial too.","commit_id":"1408bbf297170d0a45f244f9909f91c6fc1956ae"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"c92fba2dbe71a99dc9c1f478e4baf155a7052b24","unresolved":false,"context_lines":[{"line_number":48,"context_line":"**VIFReleaseFailure**: This is similar to VIFRequestFailure, but for the"},{"line_number":49,"context_line":"release scenario."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**CNIBindingFailure**: This is the common exception class for errors that occur"},{"line_number":52,"context_line":"in CNI while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompanied with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_f9931f5b","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":70},"in_reply_to":"df33271e_d9c1fce6","updated":"2020-04-07 07:15:30.000000000","message":"The main idea behind this patch is to avoid restarting controller/CNI pod. There are various cases in the code where an exception is raised, but the same is not caught anywhere. This will lead to a restart of the container. The restarting of container has various side effects like leak of neutron resources. \n\nSure for some cases a restart is inevitable but for other cases it could be avoided. For e.g. in mulit_vif.py we raise InvalidKuryrNetworkAnnotation which is not caught anywhere and will lead to the restart of the kuryr controller. But in this case we could have avoided a restart as this is not an error related to controller per say. You can find similar cases in CNI as well.\n\nThe idea behind the spec is that we should have a agreed upon way in which the drivers can raise exceptions and same are caught in the handlers and depending on their severity are handled accordingly.","commit_id":"1408bbf297170d0a45f244f9909f91c6fc1956ae"},{"author":{"_account_id":29615,"name":"Nayan Deshmukh","email":"n.deshmukh@samsung.com","username":"n.deshmukh"},"change_message_id":"d8036154fbf7aab60aa6cfb2c84eaedf5488f433","unresolved":false,"context_lines":[{"line_number":48,"context_line":"**VIFReleaseFailure**: This is similar to VIFRequestFailure, but for the"},{"line_number":49,"context_line":"release scenario."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**CNIBindingFailure**: This is the common exception class for errors that occur"},{"line_number":52,"context_line":"in CNI while binding/unbinding the network interface to the container."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**ResourceNotReady**: This is a Transient type of error which occurs when the"},{"line_number":55,"context_line":"resource we need for consumption is not ready. This is usually accompanied with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_9ee0fa98","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":70},"in_reply_to":"df33271e_e9ed248c","updated":"2020-04-07 05:14:21.000000000","message":"This should be used as both NonFatal and Transient type. For  e.g. in case of a delete request, the tap interface might be already gone as the network namespace of the container is deleted, in this case we should raise the error with type as NonFatal. But let\u0027s say a case when ADD commands fails can be a Transient type which will eventually lead to a CNI restart.","commit_id":"1408bbf297170d0a45f244f9909f91c6fc1956ae"}]}
