)]}'
{"id":"openstack%2Fpython-openstackclient~306091","triplet_id":"openstack%2Fpython-openstackclient~master~I0eee7eba6eccc6d471a699a381185c4e76da10bd","project":"openstack/python-openstackclient","branch":"master","hashtags":[],"change_id":"I0eee7eba6eccc6d471a699a381185c4e76da10bd","subject":"Propagate AttributeErrors when lazily loading plugins","status":"MERGED","created":"2016-04-14 21:44:38.000000000","updated":"2016-04-18 17:01:42.000000000","submitted":"2016-04-18 17:01:42.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"5c5f9f13a530f655842a8c4985e7f62e809d6df6","_number":306091,"virtual_id_number":306091,"owner":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"value":0,"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":2,"date":"2016-04-18 17:01:42.000000000","post_submit":true,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},{"value":0,"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"recommended":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"all":[{"value":1,"date":"2016-04-18 04:59:08.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"value":2,"date":"2016-04-17 02:06:56.000000000","_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},{"value":2,"date":"2016-04-18 15:40:01.000000000","_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"}],"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":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"all":[{"value":0,"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"value":0,"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"date":"2016-04-15 13:31:41.000000000","_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},{"value":1,"date":"2016-04-18 15:40:01.000000000","_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2016-04-15 13:31:41.000000000","updated_by":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"reviewer":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"state":"REVIEWER"},{"updated":"2016-04-17 02:06:56.000000000","updated_by":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"reviewer":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"state":"REVIEWER"},{"updated":"2016-04-18 04:59:08.000000000","updated_by":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"reviewer":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"state":"REVIEWER"},{"updated":"2016-04-18 15:40:01.000000000","updated_by":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"reviewer":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"state":"REVIEWER"},{"updated":"2016-04-18 17:01:42.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"4000c068e1e48aacaf3ad87b8cd30de7e4cb8dc1","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-04-14 21:44:38.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"0a77f8dd28d02db216832dcc1a563749e5ff8def","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-04-14 22:49:48.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/91/306091/1/check/gate-python-openstackclient-docs/d1f9022//doc/build/html/ : SUCCESS in 4m 06s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/91/306091/1/check/gate-python-openstackclient-pep8/e569a32/ : FAILURE in 3m 05s\n- gate-python-openstackclient-python27 http://logs.openstack.org/91/306091/1/check/gate-python-openstackclient-python27/39994bc/ : SUCCESS in 2m 59s\n- gate-python-openstackclient-python34 http://logs.openstack.org/91/306091/1/check/gate-python-openstackclient-python34/33e69e9/ : FAILURE in 5m 15s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/91/306091/1/check/gate-tempest-dsvm-neutron-src-python-openstackclient/5c433d9/ : SUCCESS in 1h 03m 37s\n- check-osc-plugins http://logs.openstack.org/91/306091/1/check/check-osc-plugins/9f9fa47/ : SUCCESS in 5m 49s (non-voting)\n- gate-osc-dsvm-functional http://logs.openstack.org/91/306091/1/check/gate-osc-dsvm-functional/29fe95e/ : SUCCESS in 24m 25s","accounts_in_message":[],"_revision_number":1},{"id":"b70e2e05a4f73815e31abcb622f2c1660cc23412","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-04-15 04:16:50.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"879eb3812aeb9d7a09ef9bcf1651a126064a59b6","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-04-15 05:14:45.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/91/306091/2/check/gate-python-openstackclient-docs/f6c7a06//doc/build/html/ : SUCCESS in 3m 18s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/91/306091/2/check/gate-python-openstackclient-pep8/88f1b8f/ : SUCCESS in 2m 13s\n- gate-python-openstackclient-python27 http://logs.openstack.org/91/306091/2/check/gate-python-openstackclient-python27/fbb6d32/ : SUCCESS in 4m 37s\n- gate-python-openstackclient-python34 http://logs.openstack.org/91/306091/2/check/gate-python-openstackclient-python34/422eb6b/ : SUCCESS in 5m 22s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/91/306091/2/check/gate-tempest-dsvm-neutron-src-python-openstackclient/911332b/ : SUCCESS in 56m 50s\n- check-osc-plugins http://logs.openstack.org/91/306091/2/check/check-osc-plugins/983f836/ : SUCCESS in 6m 09s (non-voting)\n- gate-osc-dsvm-functional http://logs.openstack.org/91/306091/2/check/gate-osc-dsvm-functional/412933d/ : SUCCESS in 24m 37s","accounts_in_message":[],"_revision_number":2},{"id":"a434c719c92dd8a1c7344794db5d1a7bc05389d3","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2016-04-17 02:06:56.000000000","message":"Patch Set 2: Code-Review+2\n\nslick, i like it","accounts_in_message":[],"_revision_number":2},{"id":"46d115b871d421699a05b03eecd55bcc0b8ed46c","author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"date":"2016-04-18 04:59:08.000000000","message":"Patch Set 2: Code-Review+1","accounts_in_message":[],"_revision_number":2},{"id":"da919ee329a4b344da4359e29ddbdcc694e9489f","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2016-04-18 15:40:01.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"aa0a748c10f5aecf589f826a15739b72eadd6515","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-04-18 15:48:19.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":2},{"id":"c007b23c65eaa9ba1a1ad9e28399bf36ab9c83ad","date":"2016-04-18 17:01:42.000000000","message":"Change has been successfully merged into the git repository by Jenkins","accounts_in_message":[],"_revision_number":2},{"id":"5c5f9f13a530f655842a8c4985e7f62e809d6df6","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-04-18 17:01:42.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/91/306091/2/gate/gate-python-openstackclient-docs/e223b7a//doc/build/html/ : SUCCESS in 3m 18s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/91/306091/2/gate/gate-python-openstackclient-pep8/5b75ea8/ : SUCCESS in 2m 11s\n- gate-python-openstackclient-python27 http://logs.openstack.org/91/306091/2/gate/gate-python-openstackclient-python27/506b1c7/ : SUCCESS in 2m 11s\n- gate-python-openstackclient-python34 http://logs.openstack.org/91/306091/2/gate/gate-python-openstackclient-python34/a55a8ee/ : SUCCESS in 3m 45s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/91/306091/2/gate/gate-tempest-dsvm-neutron-src-python-openstackclient/56f22f4/ : SUCCESS in 59m 46s\n- gate-osc-dsvm-functional http://logs.openstack.org/91/306091/2/gate/gate-osc-dsvm-functional/8e7db77/ : SUCCESS in 26m 00s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"926330d3726e9ce7001190730c69bf6ee45b422a","revisions":{"3486130a9ab9542c44cf03f29768a7079ec0ffa3":{"kind":"REWORK","_number":1,"created":"2016-04-14 21:44:38.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/91/306091/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/91/306091/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/1"}}},"commit":{"parents":[{"commit":"ef68f23de3886cac3e92a45537d5eb2136ae150a","subject":"Merge \"Add network options to security group rule create\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/ef68f23de3886cac3e92a45537d5eb2136ae150a"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-04-14 21:18:16.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-04-14 21:43:52.000000000","tz":-420},"subject":"Propagate AttributeErrors when lazily loading plugins","message":"Propagate AttributeErrors when lazily loading plugins\n\nPreviously, if an AttributeError was raised in a plugin\u0027s make_client\nmethod, the plugin simply wouldn\u0027t be an attribute of the ClientManager,\nproducing tracebacks like\n\nTraceback (most recent call last):\n  File \".../openstackclient/shell.py\", line 118, in run\n    ret_val \u003d super(OpenStackShell, self).run(argv)\n\n  ...\n\n  File \".../openstackclient/object/v1/container.py\", line 150, in take_action\n    data \u003d self.app.client_manager.object_store.container_list(\n  File \".../openstackclient/common/clientmanager.py\", line 66, in __getattr__\n    raise AttributeError(name)\nAttributeError: object_store\n\nThis made writing minimal third-party auth plugins difficult, as it\nobliterated the original AttributeError.\n\nNow, AttributeErrors that are raised during plugin initialization will\nbe re-raised as PluginAttributeErrors, and the original traceback will\nbe preserved. This gives much more useful information to plugin\ndevelopers, as in\n\nTraceback (most recent call last):\n  File \".../openstackclient/shell.py\", line 118, in run\n    ret_val \u003d super(OpenStackShell, self).run(argv)\n\n  ...\n\n  File \".../openstackclient/object/v1/container.py\", line 150, in take_action\n    data \u003d self.app.client_manager.object_store.container_list(\n  File \".../openstackclient/common/clientmanager.py\", line 57, in __get__\n    err_val, err_tb)\n  File \".../openstackclient/common/clientmanager.py\", line 51, in __get__\n    self._handle \u003d self.factory(instance)\n  File \".../openstackclient/object/client.py\", line 35, in make_client\n    interface\u003dinstance._interface,\n  File \".../openstackclient/common/clientmanager.py\", line 258,\n  in get_endpoint_for_service_type\n    endpoint \u003d self.auth_ref.service_catalog.url_for(\nPluginAttributeError: \u0027NoneType\u0027 object has no attribute \u0027url_for\u0027\n\nChange-Id: I0eee7eba6eccc6d471a699a381185c4e76da10bd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/3486130a9ab9542c44cf03f29768a7079ec0ffa3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/3486130a9ab9542c44cf03f29768a7079ec0ffa3"}]},"branch":"refs/heads/master"},"926330d3726e9ce7001190730c69bf6ee45b422a":{"kind":"REWORK","_number":2,"created":"2016-04-15 04:16:50.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/91/306091/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/91/306091/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/91/306091/2"}}},"commit":{"parents":[{"commit":"ef68f23de3886cac3e92a45537d5eb2136ae150a","subject":"Merge \"Add network options to security group rule create\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/ef68f23de3886cac3e92a45537d5eb2136ae150a"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-04-14 21:18:16.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-04-15 04:12:35.000000000","tz":-420},"subject":"Propagate AttributeErrors when lazily loading plugins","message":"Propagate AttributeErrors when lazily loading plugins\n\nPreviously, if an AttributeError was raised in a plugin\u0027s make_client\nmethod, the plugin simply wouldn\u0027t be an attribute of the ClientManager,\nproducing tracebacks like\n\nTraceback (most recent call last):\n  File \".../openstackclient/shell.py\", line 118, in run\n    ret_val \u003d super(OpenStackShell, self).run(argv)\n\n  ...\n\n  File \".../openstackclient/object/v1/container.py\", line 150, in take_action\n    data \u003d self.app.client_manager.object_store.container_list(\n  File \".../openstackclient/common/clientmanager.py\", line 66, in __getattr__\n    raise AttributeError(name)\nAttributeError: object_store\n\nThis made writing minimal third-party auth plugins difficult, as it\nobliterated the original AttributeError.\n\nNow, AttributeErrors that are raised during plugin initialization will\nbe re-raised as PluginAttributeErrors, and the original traceback will\nbe preserved. This gives much more useful information to plugin\ndevelopers, as in\n\nTraceback (most recent call last):\n  File \".../openstackclient/shell.py\", line 118, in run\n    ret_val \u003d super(OpenStackShell, self).run(argv)\n\n  ...\n\n  File \".../openstackclient/object/v1/container.py\", line 150, in take_action\n    data \u003d self.app.client_manager.object_store.container_list(\n  File \".../openstackclient/common/clientmanager.py\", line 57, in __get__\n    err_val, err_tb)\n  File \".../openstackclient/common/clientmanager.py\", line 51, in __get__\n    self._handle \u003d self.factory(instance)\n  File \".../openstackclient/object/client.py\", line 35, in make_client\n    interface\u003dinstance._interface,\n  File \".../openstackclient/common/clientmanager.py\", line 258,\n  in get_endpoint_for_service_type\n    endpoint \u003d self.auth_ref.service_catalog.url_for(\nPluginAttributeError: \u0027NoneType\u0027 object has no attribute \u0027url_for\u0027\n\nChange-Id: I0eee7eba6eccc6d471a699a381185c4e76da10bd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/926330d3726e9ce7001190730c69bf6ee45b422a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/926330d3726e9ce7001190730c69bf6ee45b422a"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
