)]}'
{"specs/liberty/clients-calls-retry.rst":[{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"be291ec124591329eb94f59892ebea07b8830580","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Retry of all OpenStack client calls"},{"line_number":9,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/sahara/+spec/clients-calls-retry"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_2e7c7e71","line":8,"range":{"start_line":8,"start_character":23,"end_line":8,"end_character":29},"updated":"2015-04-17 12:54:37.000000000","message":"clients","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"fa6883f11ceec382c1016be96487dbb2917d5742","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Retry of all OpenStack client calls"},{"line_number":9,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/sahara/+spec/clients-calls-retry"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_f389ddcb","line":8,"range":{"start_line":8,"start_character":23,"end_line":8,"end_character":29},"in_reply_to":"3ab451fb_2e7c7e71","updated":"2015-04-21 12:11:21.000000000","message":"Done","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"a63fd9f86b7b75693187b01454755624ac88b494","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Nova, Cinder, Heat, Keystone clients don\u0027t offer such functionality at all."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"To retry calls ``execute_with_retries(method, *args, **kwargs)`` method will be"},{"line_number":43,"context_line":"implemented. If after execution of given method (that will be passed with first"},{"line_number":44,"context_line":"param), error occurred, its http_status will be compared with http statuses in"},{"line_number":45,"context_line":"the list of the errors, that can be retried. According to that, client call"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_c43739e2","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":64},"updated":"2015-04-17 13:27:13.000000000","message":"Maybe special decorator for that purpose? This will help us to avoid changing all calls.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"9e0801aa681fbe265f4c86b297d7d36827093bee","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Nova, Cinder, Heat, Keystone clients don\u0027t offer such functionality at all."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"To retry calls ``execute_with_retries(method, *args, **kwargs)`` method will be"},{"line_number":43,"context_line":"implemented. If after execution of given method (that will be passed with first"},{"line_number":44,"context_line":"param), error occurred, its http_status will be compared with http statuses in"},{"line_number":45,"context_line":"the list of the errors, that can be retried. According to that, client call"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_cd0cfb44","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":64},"in_reply_to":"3ab451fb_c43739e2","updated":"2015-04-20 08:52:46.000000000","message":"Agree here. It can be better.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"88f6d15ea05d5f763aeaf657c819be5a5cacac70","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Nova, Cinder, Heat, Keystone clients don\u0027t offer such functionality at all."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"To retry calls ``execute_with_retries(method, *args, **kwargs)`` method will be"},{"line_number":43,"context_line":"implemented. If after execution of given method (that will be passed with first"},{"line_number":44,"context_line":"param), error occurred, its http_status will be compared with http statuses in"},{"line_number":45,"context_line":"the list of the errors, that can be retried. According to that, client call"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_502644bb","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":64},"in_reply_to":"3ab451fb_c43739e2","updated":"2015-04-20 09:39:36.000000000","message":"Do you have an idea how to make it better? It could not be done with decorator. At least I can\u0027t see how it could.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"2f5eb1df0fdffec83ed3d3d3ec32fa062ab9f790","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* ``GATEWAY_TIMEOUT (504)``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_c41a846e","line":59,"updated":"2015-04-20 15:49:08.000000000","message":"I think that we need at least two config options: number of retries and retry interval. Please, add info about config options with descriptions here. Rate limit failures should be retried always?","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"fa6883f11ceec382c1016be96487dbb2917d5742","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* ``GATEWAY_TIMEOUT (504)``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_40d75b23","line":59,"in_reply_to":"dac4157f_c41a846e","updated":"2015-04-21 12:11:21.000000000","message":"Yep, rate limit will always be retried. Config description added.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"2f5eb1df0fdffec83ed3d3d3ec32fa062ab9f790","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Time between retries will not be configurable and will be equal to 3 seconds."},{"line_number":64,"context_line":"Additionally, Nova client provides ``retry_after`` field in ``OverLimit`` and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_a44d5074","line":61,"updated":"2015-04-20 15:49:08.000000000","message":"How it\u0027ll looks like in code?","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"fa6883f11ceec382c1016be96487dbb2917d5742","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Time between retries will not be configurable and will be equal to 3 seconds."},{"line_number":64,"context_line":"Additionally, Nova client provides ``retry_after`` field in ``OverLimit`` and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_a0c9977a","line":61,"in_reply_to":"dac4157f_a44d5074","updated":"2015-04-21 12:11:21.000000000","message":"Done","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"be291ec124591329eb94f59892ebea07b8830580","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Time between retries will not be configurable and will be equal to 3 seconds."},{"line_number":64,"context_line":"Additionally, Nova client provides ``retry_after`` field in ``OverLimit`` and"},{"line_number":65,"context_line":"``RateLimit`` error classes, that can be used instead of constant in this case."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_8ee2729e","line":63,"updated":"2015-04-17 12:54:37.000000000","message":"I\u0027m not sure that it\u0027s ok. why don\u0027t we do it configurable?","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"9e0801aa681fbe265f4c86b297d7d36827093bee","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Time between retries will not be configurable and will be equal to 3 seconds."},{"line_number":64,"context_line":"Additionally, Nova client provides ``retry_after`` field in ``OverLimit`` and"},{"line_number":65,"context_line":"``RateLimit`` error classes, that can be used instead of constant in this case."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_1057ac03","line":63,"in_reply_to":"3ab451fb_691280b6","updated":"2015-04-20 08:52:46.000000000","message":"We can have different cases and configurations for clusters, so we should make time configurable for better results.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"37ecb101a3df196392c0d65dc042a5e6bc28d431","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Time between retries will not be configurable and will be equal to 3 seconds."},{"line_number":64,"context_line":"Additionally, Nova client provides ``retry_after`` field in ``OverLimit`` and"},{"line_number":65,"context_line":"``RateLimit`` error classes, that can be used instead of constant in this case."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_691280b6","line":63,"in_reply_to":"3ab451fb_8ee2729e","updated":"2015-04-17 13:18:01.000000000","message":"I think 2 extra config opts is too much for this","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"88f6d15ea05d5f763aeaf657c819be5a5cacac70","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"All clients calls will be replaced with ``execute_with_retries`` wrapper."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Time between retries will not be configurable and will be equal to 3 seconds."},{"line_number":64,"context_line":"Additionally, Nova client provides ``retry_after`` field in ``OverLimit`` and"},{"line_number":65,"context_line":"``RateLimit`` error classes, that can be used instead of constant in this case."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_d06db433","line":63,"in_reply_to":"3ab451fb_8ee2729e","updated":"2015-04-20 09:39:36.000000000","message":"Ok, lets make everything configurable","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"a63fd9f86b7b75693187b01454755624ac88b494","unresolved":false,"context_lines":[{"line_number":100,"context_line":"None"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Sahara-dashboard / Horizon impact"},{"line_number":103,"context_line":"---------------------------------"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"None"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_0481a14a","line":103,"updated":"2015-04-17 13:27:13.000000000","message":"Do we want to support retries in saharaclient?","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"88f6d15ea05d5f763aeaf657c819be5a5cacac70","unresolved":false,"context_lines":[{"line_number":100,"context_line":"None"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Sahara-dashboard / Horizon impact"},{"line_number":103,"context_line":"---------------------------------"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"None"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_5004047d","line":103,"in_reply_to":"3ab451fb_0481a14a","updated":"2015-04-20 09:39:36.000000000","message":"What do you mean by supporting retries in saharaclient? \nIf you are talking about retries handling implementation in saharaclient, I\u0027m totally for it. Such kind of work should be done by clients I believe. But this change has another purpose and shouldn\u0027t be done in this spec.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"2f5eb1df0fdffec83ed3d3d3ec32fa062ab9f790","unresolved":false,"context_lines":[{"line_number":100,"context_line":"None"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Sahara-dashboard / Horizon impact"},{"line_number":103,"context_line":"---------------------------------"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"None"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_04663ced","line":103,"in_reply_to":"dac4157f_5004047d","updated":"2015-04-20 15:49:08.000000000","message":"It\u0027s for the separated spec and it\u0027s a good idea to implement it. It\u0027ll be useful for our tests.","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"a63fd9f86b7b75693187b01454755624ac88b494","unresolved":false,"context_lines":[{"line_number":116,"context_line":"Work Items"},{"line_number":117,"context_line":"----------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* Adding new option to Sahara config;"},{"line_number":120,"context_line":"* ``execute_with_retries`` method implementation;"},{"line_number":121,"context_line":"* Replacing OpenStack clients call with ``execute_with_retries`` method."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_c4da9978","line":119,"range":{"start_line":119,"start_character":9,"end_line":119,"end_character":19},"updated":"2015-04-17 13:27:13.000000000","message":"Only one option? Which option?","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"fa6883f11ceec382c1016be96487dbb2917d5742","unresolved":false,"context_lines":[{"line_number":116,"context_line":"Work Items"},{"line_number":117,"context_line":"----------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* Adding new option to Sahara config;"},{"line_number":120,"context_line":"* ``execute_with_retries`` method implementation;"},{"line_number":121,"context_line":"* Replacing OpenStack clients call with ``execute_with_retries`` method."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dac4157f_00b4c3ce","line":119,"range":{"start_line":119,"start_character":9,"end_line":119,"end_character":19},"in_reply_to":"3ab451fb_c4da9978","updated":"2015-04-21 12:11:21.000000000","message":"Done","commit_id":"87cda9c2ed0c2a05f2af3eab64aea72c8882ce1b"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"38dc197eb3ef623ed0825dcb356cae74ae053dd0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* ``SERVICE_UNAVAILABLE (503)``"},{"line_number":56,"context_line":"* ``GATEWAY_TIMEOUT (504)``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value (150 seconds by default)."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Time between retries will be configurable (``time_between_retries`` option in"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7ad32947_709a4916","line":58,"updated":"2015-04-28 13:55:16.000000000","message":"Why time_to_retries but not number of retries? IMO its better to set number of retries to do and \"retry after\", which will guarantee number of retries done comparing with no gurantee in proposed way - you could wait in timeout the whole time and have no retry at all...","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"98d167b14db9741fe968db4bcaafad0863b19437","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* ``SERVICE_UNAVAILABLE (503)``"},{"line_number":56,"context_line":"* ``GATEWAY_TIMEOUT (504)``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value (150 seconds by default)."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Time between retries will be configurable (``time_between_retries`` option in"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7ad32947_467c3372","line":58,"in_reply_to":"7ad32947_709a4916","updated":"2015-04-28 14:29:27.000000000","message":"Done","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"f37764e3dcf3fa7074edd9ba6520692723d7d956","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* ``GATEWAY_TIMEOUT (504)``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value (150 seconds by default)."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Time between retries will be configurable (``time_between_retries`` option in"},{"line_number":62,"context_line":"config) and equal to 5 seconds by default. Additionally, Nova client provides"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7ad32947_cb55eec6","line":59,"updated":"2015-04-28 14:00:44.000000000","message":"Another question re configs:\n\nshould we have separated retry configs for each client? is there any profit from supporting it? (it was done in CR for retrying swift client). IMO it\u0027s useless to have an ability to separately configure it for each client.","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"98d167b14db9741fe968db4bcaafad0863b19437","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* ``GATEWAY_TIMEOUT (504)``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Attempts of call execution will last for a time, that will be taken from"},{"line_number":59,"context_line":"``time_for_retries`` config value (150 seconds by default)."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Time between retries will be configurable (``time_between_retries`` option in"},{"line_number":62,"context_line":"config) and equal to 5 seconds by default. Additionally, Nova client provides"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7ad32947_e6f69fd6","line":59,"in_reply_to":"7ad32947_cb55eec6","updated":"2015-04-28 14:29:27.000000000","message":"In this case we shouldn\u0027t. It was done for swift only because of different approach - swiftclient was the only client with \u0027retries_number\u0027 instead of \u0027time_for_retries\u0027.","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"cf6e7c0e970eff76e1c7171418ae3ef6e87d2070","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":".. sourcecode:: python"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    execute_with_retries(nova.client().images.get_registered_image, id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dac4157f_c0ac8b37","line":77,"updated":"2015-04-21 12:18:58.000000000","message":"It can be implemented as a decorator in following way:\nhttp://paste.openstack.org/show/204946/\n\nThis way looks better, and we have small probability of some error like: \"some argument was missed\".","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"},{"author":{"_account_id":12039,"name":"Andrey Pavlov","email":"apavlov@mirantis.com","username":"apavlov"},"change_message_id":"b7c45b293c8e2820656ddb85dccb632d05e00b9b","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":".. sourcecode:: python"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    execute_with_retries(nova.client().images.get_registered_image, id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dac4157f_43e1a5cf","line":77,"in_reply_to":"dac4157f_c0ac8b37","updated":"2015-04-21 12:34:46.000000000","message":"Your suggestion is to implement decorator and hang it on methods, but this methods are clients methods. This change can only be done in this clients code.","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"9e00f151673cbddb8630ede78523ad145d2c819c","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":".. sourcecode:: python"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    execute_with_retries(nova.client().images.get_registered_image, id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dac4157f_63d14957","line":77,"in_reply_to":"dac4157f_c0ac8b37","updated":"2015-04-21 12:26:16.000000000","message":"agreed, but @Andrey might be wondered about ***implemenatation part :D","commit_id":"4f8788bf54fae6ce7118a71194f97df9a7caa91c"}]}
