)]}'
{"id":"openstack%2Fpython-novaclient~15600","triplet_id":"openstack%2Fpython-novaclient~master~Ic1e223a9173546131e742506897f585f4ac65767","project":"openstack/python-novaclient","branch":"master","topic":"discover-extensions","hashtags":[],"change_id":"Ic1e223a9173546131e742506897f585f4ac65767","subject":"discover extensions via entry points","status":"MERGED","created":"2012-11-07 23:30:24.000000000","updated":"2012-11-14 16:42:36.000000000","submitted":"2012-11-14 16:42:36.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"c743aa4a32a82a87d8539482b4d91314cc211e2c","_number":15600,"virtual_id_number":15600,"owner":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},{"value":0,"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":2,"date":"2012-11-14 16:42:36.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"}],"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":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"all":[{"value":2,"date":"2012-11-14 16:21:35.000000000","_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},{"value":2,"date":"2012-11-09 15:57:09.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"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":{"approved":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"all":[{"value":1,"date":"2012-11-14 16:21:35.000000000","_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},{"value":0,"date":"2012-11-09 15:57:09.000000000","permitted_voting_range":{"min":0,"max":1},"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},{"value":0,"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"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":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2012-11-09 15:57:09.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":"2012-11-14 16:21:35.000000000","updated_by":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"reviewer":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"state":"REVIEWER"},{"updated":"2012-11-14 16:42:36.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"93b55e6594f50f14cffca1f69bd79f0abc244985","author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"date":"2012-11-07 23:34:31.000000000","message":"Patch Set 1:\n\nCan you add a test with this?","accounts_in_message":[],"_revision_number":1},{"id":"50202b87150aaea4aa155f63e9a4f36c7accd0d2","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2012-11-07 23:59:09.000000000","message":"Patch Set 1: Works for me\n\nBuild successful\n\n- http://logs.openstack.org/15600/1/check/gate-python-novaclient-merge/631 : SUCCESS\n- http://logs.openstack.org/15600/1/check/gate-python-novaclient-docs/310 : SUCCESS\n- http://logs.openstack.org/15600/1/check/gate-python-novaclient-pep8/618 : SUCCESS\n- http://logs.openstack.org/15600/1/check/gate-python-novaclient-python26/417 : SUCCESS\n- http://logs.openstack.org/15600/1/check/gate-python-novaclient-python27/630 : SUCCESS\n- http://logs.openstack.org/15600/1/check/gate-tempest-devstack-vm/17592 : SUCCESS\n","accounts_in_message":[],"_revision_number":1},{"id":"bf22fe83d099329c5e2a0e0faa9e237d1845f64a","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2012-11-08 02:28:33.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"cbb6ff685de5f80e1a9c43bf57d391e5f168b217","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2012-11-08 02:43:32.000000000","message":"Patch Set 2: Works for me\n\nBuild successful\n\n- http://logs.openstack.org/15600/2/check/gate-python-novaclient-merge/632 : SUCCESS\n- http://logs.openstack.org/15600/2/check/gate-python-novaclient-docs/311 : SUCCESS\n- http://logs.openstack.org/15600/2/check/gate-python-novaclient-pep8/619 : SUCCESS\n- http://logs.openstack.org/15600/2/check/gate-python-novaclient-python26/418 : SUCCESS\n- http://logs.openstack.org/15600/2/check/gate-python-novaclient-python27/631 : SUCCESS\n- http://logs.openstack.org/15600/2/check/gate-tempest-devstack-vm/17613 : SUCCESS\n","accounts_in_message":[],"_revision_number":2},{"id":"fcaf86e87ea3e151ce672d65bd14cf32cc2ca05d","author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"date":"2012-11-08 16:14:29.000000000","message":"Patch Set 2: I would prefer that you didn\u0027t merge this\n\n(2 inline comments)\n\nSorry, you need to put the copyright header on test_discover.py.  The other inline is just a discussion of your approach…","accounts_in_message":[],"_revision_number":2},{"id":"9dcac51996900f9ad31cc5ef34735003f2774fe7","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2012-11-08 19:29:28.000000000","message":"Patch Set 2:\n\nWill put the copyright header. I had unfortunately looked at https://github.com/openstack/python-novaclient/blob/master/tests/test_shell.py as an example and it happens not to have one.\n\nI guess it was obvious I wasn\u0027t sure how to test this. I\u0027ll rework the test based on your example -- I wasn\u0027t my intention to overdo it.","accounts_in_message":[],"_revision_number":2},{"id":"6d6e073a146ec5ccef4ee40918ce38daf8ebe9a9","author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"date":"2012-11-08 21:01:40.000000000","message":"Patch Set 2:\n\nHeh, no, I understand; testing is hard to do, and novaclient is under-tested :)","accounts_in_message":[],"_revision_number":2},{"id":"275efcf7b7a155fb60fd7b5dacfadeb6e8a96fc9","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2012-11-09 01:58:02.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"e4fa7b5f0d928f4ec807bbfaec10463e33dc03ae","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2012-11-09 02:28:08.000000000","message":"Patch Set 3: Works for me\n\nBuild successful\n\n- http://logs.openstack.org/15600/3/check/gate-python-novaclient-merge/641 : SUCCESS\n- http://logs.openstack.org/15600/3/check/gate-python-novaclient-docs/320 : SUCCESS\n- http://logs.openstack.org/15600/3/check/gate-python-novaclient-pep8/628 : SUCCESS\n- http://logs.openstack.org/15600/3/check/gate-python-novaclient-python26/427 : SUCCESS\n- http://logs.openstack.org/15600/3/check/gate-python-novaclient-python27/640 : SUCCESS\n- http://logs.openstack.org/15600/3/check/gate-tempest-devstack-vm/17815 : SUCCESS\n","accounts_in_message":[],"_revision_number":3},{"id":"22509a981d0bfc19522e6b8288dc623feefa9c54","author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"date":"2012-11-09 15:57:09.000000000","message":"Patch Set 3: Looks good to me (core reviewer)\n\n","accounts_in_message":[],"_revision_number":3},{"id":"e6b4f0d61a3feb8e31f8579f2d600eba9b24525e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2012-11-14 16:21:35.000000000","message":"Patch Set 3: No score\n\nStarting gate jobs.\nhttps://jenkins.openstack.org/zuul/status","accounts_in_message":[],"_revision_number":3},{"id":"85ecb2a6470be27103d4d9458e516077a2b0fc06","author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"date":"2012-11-14 16:21:35.000000000","message":"Patch Set 3: Looks good to me (core reviewer); Approved\n\nNice, much cleaner approach.","accounts_in_message":[],"_revision_number":3},{"id":"bd095cb6de054fd4a247c39139bce8e6a9b92db1","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2012-11-14 16:42:36.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":3},{"id":"47cbd7de83da6f14806e672ebe2e537967a18049","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2012-11-14 16:42:36.000000000","message":"Patch Set 3: Verified\n\nBuild successful\n\n- http://logs.openstack.org/15600/3/gate/gate-python-novaclient-merge/649 : SUCCESS\n- http://logs.openstack.org/15600/3/gate/gate-python-novaclient-docs/328 : SUCCESS\n- http://logs.openstack.org/15600/3/gate/gate-python-novaclient-pep8/636 : SUCCESS\n- http://logs.openstack.org/15600/3/gate/gate-python-novaclient-python26/435 : SUCCESS\n- http://logs.openstack.org/15600/3/gate/gate-python-novaclient-python27/648 : SUCCESS\n- http://logs.openstack.org/15600/3/gate/gate-tempest-devstack-vm/18436 : SUCCESS\n","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"aa5622147faa0de137f67c6be45dbdb3e11320f6","revisions":{"09d5d41586c3f3ff900b4e618bb97ac92b6ec16c":{"kind":"REWORK","_number":1,"created":"2012-11-07 23:30:24.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/00/15600/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/00/15600/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/1"}}},"commit":{"parents":[{"commit":"a84300f020e79adcaad313aff7f7ee11d9c18d1a","subject":"Merge \"Allows deletion of multiple servers through CLI\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/a84300f020e79adcaad313aff7f7ee11d9c18d1a"}]}],"author":{"name":"melwitt","email":"melwitt@yahoo-inc.com","date":"2012-11-07 22:58:32.000000000","tz":0},"committer":{"name":"melwitt","email":"melwitt@yahoo-inc.com","date":"2012-11-07 23:29:06.000000000","tz":0},"subject":"discover extensions via entry points","message":"discover extensions via entry points\n\nCurrently, nova client can only discover extensions in two ways:\n\n1. Installing the extension in the novaclient/v1_1/contrib/ directory.\n2. Installing the extension in the top-level python path or modifying\n   the path to be picked up by pkgutils.iter_modules()\n\nThis patch allows a third, more flexible option of discovering\nextensions via entry points. This means the extension can be\ninstalled anywhere and entry points can be registered with python\nto be picked up by pkg_resources.iter_entry_points().\nTo register an entry point, simply add the extension module to\nthe setup() call in setup.py like this:\n\nsetuptools.setup(\n    name\u003d\u0027mydistribution\u0027,\n    packages\u003dsetuptools.find_packages(),\n    entry_points\u003d{\n        \u0027novaclient.extension\u0027 : [\n            \u0027foo \u003d mydistribution.mynovaclientexts.foo\u0027\n        ]\n    },\n)\n\nChange-Id: Ic1e223a9173546131e742506897f585f4ac65767\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/09d5d41586c3f3ff900b4e618bb97ac92b6ec16c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/09d5d41586c3f3ff900b4e618bb97ac92b6ec16c"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"a84300f020e79adcaad313aff7f7ee11d9c18d1a","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"d4cc31de0d862f6a37d1e59a67cbeb1db450f8d2":{"kind":"REWORK","_number":2,"created":"2012-11-08 02:28:33.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/00/15600/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/00/15600/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/2"}}},"commit":{"parents":[{"commit":"a84300f020e79adcaad313aff7f7ee11d9c18d1a","subject":"Merge \"Allows deletion of multiple servers through CLI\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/a84300f020e79adcaad313aff7f7ee11d9c18d1a"}]}],"author":{"name":"melwitt","email":"melwitt@yahoo-inc.com","date":"2012-11-07 22:58:32.000000000","tz":0},"committer":{"name":"melwitt","email":"melwitt@yahoo-inc.com","date":"2012-11-08 02:27:51.000000000","tz":0},"subject":"discover extensions via entry points","message":"discover extensions via entry points\n\nCurrently, nova client can only discover extensions in two ways:\n\n1. Installing the extension in the novaclient/v1_1/contrib/ directory.\n2. Installing the extension in the top-level python path or modifying\n   the path to be picked up by pkgutils.iter_modules()\n\nThis patch allows a third, more flexible option of discovering\nextensions via entry points. This means the extension can be\ninstalled anywhere and entry points can be registered with python\nto be picked up by pkg_resources.iter_entry_points().\nTo register an entry point, simply add the extension module to\nthe setup() call in setup.py like this:\n\nsetuptools.setup(\n    name\u003d\u0027mydistribution\u0027,\n    packages\u003dsetuptools.find_packages(),\n    entry_points\u003d{\n        \u0027novaclient.extension\u0027 : [\n            \u0027foo \u003d mydistribution.mynovaclientexts.foo\u0027\n        ]\n    },\n)\n\nChange-Id: Ic1e223a9173546131e742506897f585f4ac65767\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/d4cc31de0d862f6a37d1e59a67cbeb1db450f8d2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/d4cc31de0d862f6a37d1e59a67cbeb1db450f8d2"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"a84300f020e79adcaad313aff7f7ee11d9c18d1a","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"aa5622147faa0de137f67c6be45dbdb3e11320f6":{"kind":"REWORK","_number":3,"created":"2012-11-09 01:58:02.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/00/15600/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/00/15600/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/00/15600/3"}}},"commit":{"parents":[{"commit":"4ad512b50e0c2190fbd4ef077256faf808496e2b","subject":"show help when calling without arguments","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/4ad512b50e0c2190fbd4ef077256faf808496e2b"}]}],"author":{"name":"melwitt","email":"melwitt@yahoo-inc.com","date":"2012-11-07 22:58:32.000000000","tz":0},"committer":{"name":"Melanie Witt","email":"melwitt@yahoo-inc.com","date":"2012-11-09 01:57:53.000000000","tz":0},"subject":"discover extensions via entry points","message":"discover extensions via entry points\n\nCurrently, nova client can only discover extensions in two ways:\n\n1. Installing the extension in the novaclient/v1_1/contrib/ directory.\n2. Installing the extension in the top-level python path or modifying\n   the path to be picked up by pkgutils.iter_modules()\n\nThis patch allows a third, more flexible option of discovering\nextensions via entry points. This means the extension can be\ninstalled anywhere and entry points can be registered with python\nto be picked up by pkg_resources.iter_entry_points().\nTo register an entry point, simply add the extension module to\nthe setup() call in setup.py like this:\n\nsetuptools.setup(\n    name\u003d\u0027mydistribution\u0027,\n    packages\u003dsetuptools.find_packages(),\n    entry_points\u003d{\n        \u0027novaclient.extension\u0027 : [\n            \u0027foo \u003d mydistribution.mynovaclientexts.foo\u0027\n        ]\n    },\n)\n\nChange-Id: Ic1e223a9173546131e742506897f585f4ac65767\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/aa5622147faa0de137f67c6be45dbdb3e11320f6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/aa5622147faa0de137f67c6be45dbdb3e11320f6"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"4ad512b50e0c2190fbd4ef077256faf808496e2b","is_merged_in_target_branch":true,"change_id":"Id14f0292ad00e6e45ad66dd010f449c3abbf3871","change_number":15665,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
