)]}'
{"id":"openstack%2Fpython-novaclient~175854","triplet_id":"openstack%2Fpython-novaclient~master~I716be51d7d1825a757934298f06b2f04d64cf0dd","project":"openstack/python-novaclient","branch":"master","topic":"ips","hashtags":[],"change_id":"I716be51d7d1825a757934298f06b2f04d64cf0dd","subject":"refactor functional test base class to no inherit from tempest_lib","status":"MERGED","created":"2015-04-21 13:23:36.000000000","updated":"2015-05-08 19:03:34.000000000","submitted":"2015-05-08 19:03:31.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a268da1ba2f8f8aa329477da4419594d04b62db0","_number":175854,"virtual_id_number":175854,"owner":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},{"value":2,"date":"2015-05-08 19:03:31.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},{"value":0,"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"}],"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":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"all":[{"value":2,"date":"2015-04-30 15:23:01.000000000","_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":2,"date":"2015-04-21 17:22:36.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":2,"date":"2015-05-08 18:14:09.000000000","_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},{"value":1,"date":"2015-05-06 22:44:00.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"}],"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":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"all":[{"value":0,"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":1,"date":"2015-05-08 18:14:09.000000000","_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},{"value":0,"date":"2015-04-30 03:34:09.000000000","_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"value":0,"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},{"value":0,"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"}],"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":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-04-21 17:22:36.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-04-30 03:34:09.000000000","updated_by":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"reviewer":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"state":"REVIEWER"},{"updated":"2015-04-30 15:23:01.000000000","updated_by":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"reviewer":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"state":"REVIEWER"},{"updated":"2015-05-08 18:14:09.000000000","updated_by":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"reviewer":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"state":"REVIEWER"},{"updated":"2015-05-08 19:03:31.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"31c26ad18db6d7855adab7fd7998461fa2c413d8","author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"date":"2015-04-21 13:23:36.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7905bb8c67642d5cab3cb8082a8c75030a4aa1ff","author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"date":"2015-04-21 14:38:42.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"cac1213bc7937e45310dcb0531647c797174ac90","author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"date":"2015-04-21 15:06:04.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"5c5dda016d40d434a5d0c20d9ebfd48d962861c8","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-21 16:13:13.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-novaclient-python26 http://logs.openstack.org/54/175854/3/check/gate-python-novaclient-python26/970b0df/ : SUCCESS in 1m 16s\n- gate-python-novaclient-pep8 http://logs.openstack.org/54/175854/3/check/gate-python-novaclient-pep8/72abe18/ : SUCCESS in 39s\n- gate-python-novaclient-docs http://docs-draft.openstack.org/54/175854/3/check/gate-python-novaclient-docs/d988626//doc/build/html/ : SUCCESS in 1m 04s\n- gate-python-novaclient-python27 http://logs.openstack.org/54/175854/3/check/gate-python-novaclient-python27/274bb1b/ : SUCCESS in 1m 39s\n- gate-python-novaclient-python34 http://logs.openstack.org/54/175854/3/check/gate-python-novaclient-python34/a7b2c2b/ : SUCCESS in 3m 36s\n- gate-python-novaclient-pypy http://logs.openstack.org/54/175854/3/check/gate-python-novaclient-pypy/0baae3e/ : SUCCESS in 2m 55s\n- gate-tempest-dsvm-neutron-src-python-novaclient http://logs.openstack.org/54/175854/3/check/gate-tempest-dsvm-neutron-src-python-novaclient/7b860e3/ : SUCCESS in 1h 04m 46s\n- check-novaclient-dsvm-functional http://logs.openstack.org/54/175854/3/check/check-novaclient-dsvm-functional/6cb6749/ : SUCCESS in 22m 15s","accounts_in_message":[],"_revision_number":3},{"id":"24e0ec2027921c75e5c22c53f59d48324e2e2663","author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"date":"2015-04-21 17:22:36.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"fd8d341881727d4ec88c2bb5b8bef164f93884ec","author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"date":"2015-04-30 03:33:39.000000000","message":"Patch Set 3:\n\nInterested in what Matt things, this pattern has been copied out to a bunch of other clients as well already.","accounts_in_message":[],"_revision_number":3},{"id":"bc2b4585902de950aa57524e119ac3be43a25b4e","author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"date":"2015-04-30 15:23:01.000000000","message":"Patch Set 3: Code-Review+2\n\nNot the Matt referred to, but I personally prefer this method","accounts_in_message":[],"_revision_number":3},{"id":"dcedefe92c2598c1376ef2e897b263ef32880a41","author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"date":"2015-05-06 22:44:00.000000000","message":"Patch Set 3: Code-Review+1\n\n(2 comments)\n\nSo I\u0027m fine with this, you do lose access to 2 assert methods related to cli output and you\u0027re not instantiated a cli parser object (which are things done in the tempest-lib base class) but it doesn\u0027t look like any of the nova tests are using them right now. \n\nI actually have a WIP change from forever ago splitting the base tempest-lib cli test class into a mixin to facilitate doing exactly this so you can retain all of those helpers, but still use your own base test class: \n\nhttps://review.openstack.org/#/c/135108/\n\nWe hit the same issue of overlapping base classes in tempest when I did the initial porting, but were able to work around it. I guess I should revisit that patch to make the api a bit easier to facilitate not requiring using a base test class out of tree. Since it hadn\u0027t come up again since then.","accounts_in_message":[],"_revision_number":3},{"id":"55182c75ca404ff00cdcde32b0b9ec51c1abb306","author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"date":"2015-05-08 18:14:09.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":3},{"id":"e54ab270bf3d1377d89c61993810d96bff061b02","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-08 18:14:14.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"62960c85157ad8c75d1bc6ed7334aaa53058c866","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-08 19:03:31.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-novaclient-python26 http://logs.openstack.org/54/175854/3/gate/gate-python-novaclient-python26/e3b8def/ : SUCCESS in 1m 13s\n- gate-python-novaclient-docs http://docs-draft.openstack.org/54/175854/3/gate/gate-python-novaclient-docs/a24dbfd//doc/build/html/ : SUCCESS in 1m 13s\n- gate-python-novaclient-pep8 http://logs.openstack.org/54/175854/3/gate/gate-python-novaclient-pep8/5759abe/ : SUCCESS in 1m 02s\n- gate-python-novaclient-python27 http://logs.openstack.org/54/175854/3/gate/gate-python-novaclient-python27/7ae3462/ : SUCCESS in 1m 50s\n- gate-python-novaclient-python34 http://logs.openstack.org/54/175854/3/gate/gate-python-novaclient-python34/3564bcb/ : SUCCESS in 2m 02s\n- gate-python-novaclient-pypy http://logs.openstack.org/54/175854/3/gate/gate-python-novaclient-pypy/7ba1d8c/ : SUCCESS in 1m 55s\n- gate-tempest-dsvm-neutron-src-python-novaclient http://logs.openstack.org/54/175854/3/gate/gate-tempest-dsvm-neutron-src-python-novaclient/ff44a28/ : SUCCESS in 49m 02s\n- gate-novaclient-dsvm-functional http://logs.openstack.org/54/175854/3/gate/gate-novaclient-dsvm-functional/c94dadc/ : SUCCESS in 24m 23s","accounts_in_message":[],"_revision_number":3},{"id":"2f57d5bfd4ca876ffae081a667c7768c0511f667","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-08 19:03:34.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"420dc2884ac369924e8e65eba5cf81935b6ffc9d","revisions":{"4866c3b55669b9f50f86dfe8ecc2f04347cd4eff":{"kind":"REWORK","_number":1,"created":"2015-04-21 13:23:36.000000000","uploader":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"ref":"refs/changes/54/175854/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/54/175854/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/1"}}},"commit":{"parents":[{"commit":"5eab1430f2a7a91e2df22405913f328c9870b2e3","subject":"Merge \"Remove all imports from oslo namespace\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/5eab1430f2a7a91e2df22405913f328c9870b2e3"}]}],"author":{"name":"Sean Dague","email":"sean@dague.net","date":"2015-04-21 13:19:13.000000000","tz":-240},"committer":{"name":"Sean Dague","email":"sean@dague.net","date":"2015-04-21 13:23:23.000000000","tz":-240},"subject":"refactor functional test base class to no inherit from tempest_lib","message":"refactor functional test base class to no inherit from tempest_lib\n\nTest base classes inheriting outside the existing source tree to\nanything higher up the stack than testtools is really an anti\npattern. It makes it *far* less clear what is going on. We really need\nto own and understand our base class setup for tests.\n\nThis does that unwind, so that we only now call out to tempest_lib in\nspecific ways (like building clients, using decorators). The timeout\nand log capture pieces are pulled inline.\n\nAt the end of this we end up with a base test that defines:\n\n - self.client - a Nova API client\n - self.flavor - a workable flavor for booting guests\n - self.image - a workable image for booting guests\n - self.cli_clients - tempest_lib cli clients\n\nChange-Id: I716be51d7d1825a757934298f06b2f04d64cf0dd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/4866c3b55669b9f50f86dfe8ecc2f04347cd4eff"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/4866c3b55669b9f50f86dfe8ecc2f04347cd4eff"}]},"branch":"refs/heads/master"},"9ea2bd70255a82027e6a24d09c4fa83033c2b851":{"kind":"REWORK","_number":2,"created":"2015-04-21 14:38:42.000000000","uploader":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"ref":"refs/changes/54/175854/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/54/175854/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/2"}}},"commit":{"parents":[{"commit":"5eab1430f2a7a91e2df22405913f328c9870b2e3","subject":"Merge \"Remove all imports from oslo namespace\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/5eab1430f2a7a91e2df22405913f328c9870b2e3"}]}],"author":{"name":"Sean Dague","email":"sean@dague.net","date":"2015-04-21 13:19:13.000000000","tz":-240},"committer":{"name":"Sean Dague","email":"sean@dague.net","date":"2015-04-21 14:38:34.000000000","tz":-240},"subject":"refactor functional test base class to no inherit from tempest_lib","message":"refactor functional test base class to no inherit from tempest_lib\n\nTest base classes inheriting outside the existing source tree to\nanything higher up the stack than testtools is really an anti\npattern. It makes it *far* less clear what is going on. We really need\nto own and understand our base class setup for tests.\n\nThis does that unwind, so that we only now call out to tempest_lib in\nspecific ways (like building clients, using decorators). The timeout\nand log capture pieces are pulled inline.\n\nAt the end of this we end up with a base test that defines:\n\n - self.client - a Nova API client\n - self.flavor - a workable flavor for booting guests\n - self.image - a workable image for booting guests\n - self.cli_clients - tempest_lib cli clients\n\nChange-Id: I716be51d7d1825a757934298f06b2f04d64cf0dd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/9ea2bd70255a82027e6a24d09c4fa83033c2b851"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/9ea2bd70255a82027e6a24d09c4fa83033c2b851"}]},"branch":"refs/heads/master"},"420dc2884ac369924e8e65eba5cf81935b6ffc9d":{"kind":"REWORK","_number":3,"created":"2015-04-21 15:06:04.000000000","uploader":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"ref":"refs/changes/54/175854/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-novaclient","ref":"refs/changes/54/175854/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-novaclient refs/changes/54/175854/3"}}},"commit":{"parents":[{"commit":"5eab1430f2a7a91e2df22405913f328c9870b2e3","subject":"Merge \"Remove all imports from oslo namespace\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/5eab1430f2a7a91e2df22405913f328c9870b2e3"}]}],"author":{"name":"Sean Dague","email":"sean@dague.net","date":"2015-04-21 13:19:13.000000000","tz":-240},"committer":{"name":"Sean Dague","email":"sean@dague.net","date":"2015-04-21 15:06:00.000000000","tz":-240},"subject":"refactor functional test base class to no inherit from tempest_lib","message":"refactor functional test base class to no inherit from tempest_lib\n\nTest base classes inheriting outside the existing source tree to\nanything higher up the stack than testtools is really an anti\npattern. It makes it *far* less clear what is going on. We really need\nto own and understand our base class setup for tests.\n\nThis does that unwind, so that we only now call out to tempest_lib in\nspecific ways (like building clients, using decorators). The timeout\nand log capture pieces are pulled inline.\n\nAt the end of this we end up with a base test that defines:\n\n - self.client - a Nova API client\n - self.flavor - a workable flavor for booting guests\n - self.image - a workable image for booting guests\n - self.cli_clients - tempest_lib cli clients\n\nChange-Id: I716be51d7d1825a757934298f06b2f04d64cf0dd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/420dc2884ac369924e8e65eba5cf81935b6ffc9d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-novaclient/commit/420dc2884ac369924e8e65eba5cf81935b6ffc9d"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
