)]}'
{"id":"openstack%2Fpython-novaclient~188620","triplet_id":"openstack%2Fpython-novaclient~master~I5fc8a3123857e20acac3fdee17a760f457ab0b91","project":"openstack/python-novaclient","branch":"master","topic":"403-on-quota","hashtags":[],"change_id":"I5fc8a3123857e20acac3fdee17a760f457ab0b91","subject":"Handle retry-after headers in 403 errors","status":"ABANDONED","created":"2015-06-04 22:53:38.000000000","updated":"2015-06-05 01:32:41.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"7686641afccf6925940e402f6915af7801788769","_number":188620,"virtual_id_number":188620,"owner":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":1,"date":"2015-06-05 00:26:45.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"date":"2015-06-04 23:05:41.000000000","_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"date":"2015-06-05 01:32:18.000000000","_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":0,"max":2},"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-06-04 23:05:41.000000000","updated_by":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"reviewer":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"state":"REVIEWER"},{"updated":"2015-06-05 00:26:45.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"42b5118cd7c8927109cf927deaf5e1aa4c748001","author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"date":"2015-06-04 22:53:38.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7c3d7b10cc5b24cda4201c9a47be784cca315be1","author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"date":"2015-06-04 23:05:41.000000000","message":"Patch Set 1:\n\nI don\u0027t understand your explanation.  As far as I can determine, we only try to do something with the retry_after attribute on an exception if it descends from RetryAfterException, and nothing in novaclient (other than tests) ever references the retry_after attribute on an exception after it\u0027s set.  Where is this secondary traceback occurring?  What is the original traceback?\n\nI have no trouble with the idea of making Forbidden extend RetryAfterException, since we are sending a Retry-After header; I just don\u0027t have enough information from the commit message to understand the problem this is intended to solve…","accounts_in_message":[],"_revision_number":1},{"id":"801af0108a40050ae496e8ab42173a68a4d57e07","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-06-05 00:26:45.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-novaclient-python26 http://logs.openstack.org/20/188620/1/check/gate-python-novaclient-python26/c9602b8/ : SUCCESS in 1m 31s\n- gate-python-novaclient-pep8 http://logs.openstack.org/20/188620/1/check/gate-python-novaclient-pep8/152719b/ : SUCCESS in 57s\n- gate-python-novaclient-docs http://docs-draft.openstack.org/20/188620/1/check/gate-python-novaclient-docs/3b1233a//doc/build/html/ : SUCCESS in 1m 22s\n- gate-python-novaclient-python27 http://logs.openstack.org/20/188620/1/check/gate-python-novaclient-python27/322e2ad/ : SUCCESS in 1m 38s\n- gate-python-novaclient-python34 http://logs.openstack.org/20/188620/1/check/gate-python-novaclient-python34/38e6cd9/ : SUCCESS in 1m 46s\n- gate-python-novaclient-pypy http://logs.openstack.org/20/188620/1/check/gate-python-novaclient-pypy/9f4b627/ : SUCCESS in 2m 24s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-novaclient http://logs.openstack.org/20/188620/1/check/gate-tempest-dsvm-neutron-src-python-novaclient/992a442/ : SUCCESS in 1h 13m 44s\n- check-novaclient-dsvm-functional http://logs.openstack.org/20/188620/1/check/check-novaclient-dsvm-functional/7e053ed/ : SUCCESS in 46m 48s","accounts_in_message":[],"_revision_number":1},{"id":"6ed40847c2a16cc3334c234666953f68b682d1ca","author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"date":"2015-06-05 01:32:18.000000000","message":"Patch Set 1:\n\nTurns out I should have done a git log. There was a fix for what I\u0027m seeing already done: https://github.com/openstack/python-novaclient/commit/310b87ecbb8cd4c82a460781cf7b4e9e79c604d9\n\nWe may be operating with too old a novaclient, will check.","accounts_in_message":[],"_revision_number":1},{"id":"a62593044ddb9a7b2d2e522bb9615eb2bf422ecf","author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"date":"2015-06-05 01:32:41.000000000","message":"Abandoned\n\nThis change is already made elsewhere.","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"eb6ffb6f9113440bfafa3df5e0494c45d9dc2db6","revisions":{"eb6ffb6f9113440bfafa3df5e0494c45d9dc2db6":{"kind":"REWORK","_number":1,"created":"2015-06-04 22:53:38.000000000","uploader":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"ref":"refs/changes/20/188620/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/20/188620/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/20/188620/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/20/188620/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/20/188620/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/20/188620/1"}}},"commit":{"parents":[{"commit":"072ab6cd5aa129bb052def9a1ae3e3480227ccf5","subject":"Merge \"add ips to novaclient server manager\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/072ab6cd5aa129bb052def9a1ae3e3480227ccf5"}]}],"author":{"name":"Jesse Keating","email":"jlk@bluebox.net","date":"2015-06-04 22:53:30.000000000","tz":-420},"committer":{"name":"Jesse Keating","email":"jlk@bluebox.net","date":"2015-06-04 22:53:30.000000000","tz":-420},"subject":"Handle retry-after headers in 403 errors","message":"Handle retry-after headers in 403 errors\n\nNova will send a retry-after header when dealing with Over Quota\nsituations. Client code was not prepared to handle this and would cause\na secondary traceback to happen and would mask the original error. Move\nForbidden (the 403) handler to subclass from RetryAfterException so that\nthe retry-after header is properly processed.\n\nChange-Id: I5fc8a3123857e20acac3fdee17a760f457ab0b91\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/eb6ffb6f9113440bfafa3df5e0494c45d9dc2db6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/eb6ffb6f9113440bfafa3df5e0494c45d9dc2db6"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
