)]}'
{"id":"openstack%2Fpython-openstackclient~243977","triplet_id":"openstack%2Fpython-openstackclient~master~I12eb876cbebab064773df7b5dd612de69bbf3f01","project":"openstack/python-openstackclient","branch":"master","topic":"bp/osc-unit-test-framework-improvement","hashtags":[],"change_id":"I12eb876cbebab064773df7b5dd612de69bbf3f01","subject":"Enable FakeResource to fake methods.","status":"MERGED","created":"2015-11-11 06:52:45.000000000","updated":"2015-11-19 21:19:52.000000000","submitted":"2015-11-19 21:19:50.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"101b678fe5a133f4fb79b2825fbdfb20f7249f47","_number":243977,"virtual_id_number":243977,"owner":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":2,"date":"2015-11-19 21:19:50.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"date":"2015-11-19 05:50:40.000000000","_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},{"value":0,"date":"2015-11-19 07:33:35.000000000","_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},{"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"},"all":[{"value":2,"date":"2015-11-18 10:32:25.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":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},{"value":0,"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},{"value":2,"date":"2015-11-19 19:41:42.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":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"all":[{"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,"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},{"value":0,"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},{"value":1,"date":"2015-11-19 19:41:42.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":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-11-16 21:50:36.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":"2015-11-19 05:50:40.000000000","updated_by":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"reviewer":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"state":"REVIEWER"},{"updated":"2015-11-19 19:41:42.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":"2015-11-19 21:19:50.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"a3a5952203e2b3ac0fa04c40cf05caf06c261f3b","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-11 06:52:45.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"d144caf97a1ff8245be10421bfb6356a4c694cb8","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-11 07:54:56.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-python26 http://logs.openstack.org/77/243977/1/check/gate-python-openstackclient-python26/7ea5ce2/ : FAILURE in 1m 16s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/77/243977/1/check/gate-python-openstackclient-pep8/e3c5c27/ : SUCCESS in 1m 07s\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/77/243977/1/check/gate-python-openstackclient-docs/7ce6e1c//doc/build/html/ : SUCCESS in 2m 05s\n- gate-python-openstackclient-python27 http://logs.openstack.org/77/243977/1/check/gate-python-openstackclient-python27/8da3777/ : FAILURE in 2m 30s\n- gate-python-openstackclient-python34 http://logs.openstack.org/77/243977/1/check/gate-python-openstackclient-python34/2123515/ : FAILURE in 1m 42s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/77/243977/1/check/gate-tempest-dsvm-neutron-src-python-openstackclient/7c12caa/ : FAILURE in 1h 01m 26s\n- gate-osc-dsvm-functional http://logs.openstack.org/77/243977/1/check/gate-osc-dsvm-functional/707508a/ : SUCCESS in 20m 46s","accounts_in_message":[],"_revision_number":1},{"id":"a8fd48dc065a43ddde1fae8ddb39b6d51bb6e7de","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-11 15:09:53.000000000","message":"Patch Set 1:\n\nI think lots of tests are using FakeResource, and the influence is too huge. So maybe introduce a FakeServer class for server tests first, and leave the other tests untouched.","accounts_in_message":[],"_revision_number":1},{"id":"e758671264e607bb6be8c1c23afc56c02e617649","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-13 05:34:52.000000000","message":"Abandoned\n\nAbandon for now because I cannot figure out a proper way to handle all the problems of shifting from Object to Mock. Every test case is using FakeResource now, and the influence is too large. \n\nWill reopen it when I find a good way to use Mock.","accounts_in_message":[],"_revision_number":1},{"id":"0a1fb3945cb6a6ed32ac2db2a8f9a6adcd4fd6e5","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-13 06:38:11.000000000","message":"Restored\n\nWill update patch soon.","accounts_in_message":[],"_revision_number":1},{"id":"03a00b835834a9d47de2222dcab369c59ba1a488","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-13 07:52:34.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"40d96a9ba5e6e275f0c4fd4df86cca83e7425732","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-13 07:55:07.000000000","message":"Patch Set 2:\n\nHi Steve, Cheng, Dean,\n\nI don\u0027t like my previous version. It introduced a new class FakeServer which can fake servers only. I think this version could enhance FakeResource a lot.\n\nPlease help to review. \n\nThx. :)","accounts_in_message":[],"_revision_number":2},{"id":"aa0c499b8ec157106db59ebaf6f8e6d9518ab900","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-13 09:03:29.000000000","message":"Patch Set 2: 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-python26 http://logs.openstack.org/77/243977/2/check/gate-python-openstackclient-python26/5f3074b/ : SUCCESS in 1m 16s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/77/243977/2/check/gate-python-openstackclient-pep8/14d36b4/ : FAILURE in 1m 05s\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/77/243977/2/check/gate-python-openstackclient-docs/6fb9c5a//doc/build/html/ : SUCCESS in 1m 34s\n- gate-python-openstackclient-python27 http://logs.openstack.org/77/243977/2/check/gate-python-openstackclient-python27/aa79847/ : SUCCESS in 1m 03s\n- gate-python-openstackclient-python34 http://logs.openstack.org/77/243977/2/check/gate-python-openstackclient-python34/c63d427/ : SUCCESS in 1m 47s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/77/243977/2/check/gate-tempest-dsvm-neutron-src-python-openstackclient/b768117/ : SUCCESS in 1h 09m 46s\n- gate-osc-dsvm-functional http://logs.openstack.org/77/243977/2/check/gate-osc-dsvm-functional/5eeea7e/ : SUCCESS in 27m 55s","accounts_in_message":[],"_revision_number":2},{"id":"91c3a618739725d2a5e4e5faa5bd6b3df7d7d61b","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-13 09:23:30.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"67b49ea4194b4ab3dacadb1750eb0d5f49fbb84e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-13 10:30:33.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-openstackclient-python26 http://logs.openstack.org/77/243977/3/check/gate-python-openstackclient-python26/e92a4a0/ : SUCCESS in 1m 29s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/77/243977/3/check/gate-python-openstackclient-pep8/ab22e40/ : SUCCESS in 53s\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/77/243977/3/check/gate-python-openstackclient-docs/9e49eca//doc/build/html/ : SUCCESS in 1m 27s\n- gate-python-openstackclient-python27 http://logs.openstack.org/77/243977/3/check/gate-python-openstackclient-python27/5bc0a31/ : SUCCESS in 2m 21s\n- gate-python-openstackclient-python34 http://logs.openstack.org/77/243977/3/check/gate-python-openstackclient-python34/0de69de/ : SUCCESS in 2m 20s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/77/243977/3/check/gate-tempest-dsvm-neutron-src-python-openstackclient/88c6138/ : SUCCESS in 58m 18s\n- gate-osc-dsvm-functional http://logs.openstack.org/77/243977/3/check/gate-osc-dsvm-functional/748d1d7/ : SUCCESS in 28m 54s","accounts_in_message":[],"_revision_number":3},{"id":"830241ab058d60b13d43d363ea06f433a8cd2988","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-16 13:20:19.000000000","message":"Patch Set 3:\n\nHi Steve, Cheng, Dean,\n\nCould you please help to review this series of patches ?\nI think they are import to unit tests of \"server xxx\" commands.\n\nThx. :)","accounts_in_message":[],"_revision_number":3},{"id":"8d4ca55387b4059bb2ab3851fbf3479b9f0929d8","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2015-11-16 21:50:36.000000000","message":"Patch Set 3: Code-Review+2\n\ni\u0027m okay with this, excited to see how it looks in additional patches","accounts_in_message":[],"_revision_number":3},{"id":"c676ca14bcceb744a7bd1ee3ea8f7ae29f7f760f","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-18 10:32:25.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"9bb07064c923a5468f5c48cce8d2eadaad873e98","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-18 11:49:57.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-openstackclient-python26 http://logs.openstack.org/77/243977/4/check/gate-python-openstackclient-python26/2e2564d/ : SUCCESS in 1m 23s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/77/243977/4/check/gate-python-openstackclient-pep8/e73b1d3/ : SUCCESS in 1m 03s\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/77/243977/4/check/gate-python-openstackclient-docs/b1e2750//doc/build/html/ : SUCCESS in 2m 15s\n- gate-python-openstackclient-python27 http://logs.openstack.org/77/243977/4/check/gate-python-openstackclient-python27/7e905f6/ : SUCCESS in 1m 24s\n- gate-python-openstackclient-python34 http://logs.openstack.org/77/243977/4/check/gate-python-openstackclient-python34/9ab1f9b/ : SUCCESS in 1m 49s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/77/243977/4/check/gate-tempest-dsvm-neutron-src-python-openstackclient/e13c6cd/ : SUCCESS in 1h 10m 58s\n- gate-osc-dsvm-functional http://logs.openstack.org/77/243977/4/check/gate-osc-dsvm-functional/40e17e1/ : SUCCESS in 33m 55s","accounts_in_message":[],"_revision_number":4},{"id":"0e9710998e7d535e02052b9c42e938c461f70c71","author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"date":"2015-11-19 05:50:40.000000000","message":"Patch Set 4:\n\nhow will this work if the mocked method has arguments?","accounts_in_message":[],"_revision_number":4},{"id":"9b289a285ef3e8219595359a1a4742b3c7f6a1c0","author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"date":"2015-11-19 07:33:35.000000000","message":"Patch Set 4:\n\nHi, Cheng,\n\nFor methods with parameters, the mock will work fine. Just specify the return_value, and use assert_called_with() to check if the method is called with the proper parameters.\n\nPlease refer to class TestServerDelete, delete() method has parameters, and mock is able to handle this.\n\nThanks.","accounts_in_message":[],"_revision_number":4},{"id":"0de4bf60e8e6a8eca1dc1ef6c00703f73011505a","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2015-11-19 19:41:42.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1\n\nThis series is a great addition, thanks!","accounts_in_message":[],"_revision_number":4},{"id":"215711650344717d39e4f9d609279d60a39bb532","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-19 19:56:28.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":4},{"id":"23a0fc605cd4ee2ec98f91fd277222f209a575f6","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-19 21:19:50.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-openstackclient-python26 http://logs.openstack.org/77/243977/4/gate/gate-python-openstackclient-python26/276064d/ : SUCCESS in 1m 33s\n- gate-python-openstackclient-docs http://docs-draft.openstack.org/77/243977/4/gate/gate-python-openstackclient-docs/7689099//doc/build/html/ : SUCCESS in 2m 08s\n- gate-python-openstackclient-pep8 http://logs.openstack.org/77/243977/4/gate/gate-python-openstackclient-pep8/5220d6f/ : SUCCESS in 1m 04s\n- gate-python-openstackclient-python27 http://logs.openstack.org/77/243977/4/gate/gate-python-openstackclient-python27/943be13/ : SUCCESS in 1m 20s\n- gate-python-openstackclient-python34 http://logs.openstack.org/77/243977/4/gate/gate-python-openstackclient-python34/86ae197/ : SUCCESS in 1m 48s\n- gate-tempest-dsvm-neutron-src-python-openstackclient http://logs.openstack.org/77/243977/4/gate/gate-tempest-dsvm-neutron-src-python-openstackclient/d6351ba/ : SUCCESS in 1h 17m 09s\n- gate-osc-dsvm-functional http://logs.openstack.org/77/243977/4/gate/gate-osc-dsvm-functional/43a3776/ : SUCCESS in 26m 46s","accounts_in_message":[],"_revision_number":4},{"id":"4382db2ee367e9406f697155f4bd62f19d1bd5f7","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-19 21:19:52.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"20bf1ef6757258619678e5ee00b8a2c6d742e1f1","revisions":{"a710861d213a3d84efa818864a31cebdf3cf25d6":{"kind":"REWORK","_number":1,"created":"2015-11-11 06:52:45.000000000","uploader":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"ref":"refs/changes/77/243977/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/77/243977/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/1"}}},"commit":{"parents":[{"commit":"4a76b4dd51d13c64759447d1184e696914eadb0e","subject":"Merge \"Trivial cleanup: Use plural format for \"server delete\" doc.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/4a76b4dd51d13c64759447d1184e696914eadb0e"}]}],"author":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-11 08:13:48.000000000","tz":480},"committer":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-12 02:02:19.000000000","tz":480},"subject":"Make FakeResource inherit from Mock.","message":"Make FakeResource inherit from Mock.\n\nThe current unit test framework uses class FakeResource to fake a server,\nwhich inherits from class Object. That means, if we fake a server like this:\n\nserver \u003d FakeResource(......)\n\nwe cannnot do this kind of call:\n\nserver.start(), server.stop(), server.pause(), ......\n\nThis is because it is not a Mock instance. This is also the reason why there\nis no such test cases in the current osc. This patch make FakeResource inherit\nfrom Mock.\n\nDoing this will bring us two merits:\n1. we can test server.xxx() functions\n2. we can use Moxk.side_effect to fake multiple servers at one time\n\n\nNOTE:\n1. We should call super.__init__() in the __init__() of FakeResource.\n   Otherwise we may occur an error like this: AttributeError: _mock_methods\n\n2. All parameters in __init__() of FakeResource should have default value.\n   And it should also take **kwargs parameter. Otherwise Mock will fail to\n   get child mock object. Please refer to the following call trace:\n\n    Traceback (most recent call last):\n      File \"openstackclient/tests/volume/v1/test_volume.py\", line 574, in test_volume_list_no_options\n        self.assertEqual(datalist, tuple(data))\n      File \"openstackclient/volume/v1/volume.py\", line 314, in \u003cgenexpr\u003e\n        ) for s in data))\n      File \"openstackclient/common/utils.py\", line 195, in get_item_properties\n        data \u003d getattr(item, field_name, \u0027\u0027)\n      File \"/opt/stack/python-openstackclient/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py\", line 736, in __getattr__\n        _new_parent\u003dself\n      File \"/opt/stack/python-openstackclient/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py\", line 1023, in _get_child_mock\n        return klass(**kw)\n    TypeError: __init__() got an unexpected keyword argument \u0027_new_name\u0027\n\nChange-Id: I12eb876cbebab064773df7b5dd612de69bbf3f01\nImplements: blueprint osc-unit-test-framework-improvement\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/a710861d213a3d84efa818864a31cebdf3cf25d6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/a710861d213a3d84efa818864a31cebdf3cf25d6"}]},"branch":"refs/heads/master"},"e93b1589df1cc06f0b7ff54567e26fadab7c8bdb":{"kind":"REWORK","_number":2,"created":"2015-11-13 07:52:34.000000000","uploader":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"ref":"refs/changes/77/243977/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/77/243977/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/2"}}},"commit":{"parents":[{"commit":"6e1ad737230f6a087afe2c20317156c633a5c80f","subject":"Merge \"validate non-ascii values for swift properties\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/6e1ad737230f6a087afe2c20317156c633a5c80f"}]}],"author":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-14 06:38:12.000000000","tz":480},"committer":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-14 06:38:12.000000000","tz":480},"subject":"Enable FakeResource to fake methods.","message":"Enable FakeResource to fake methods.\n\nUse MagicMock to fake a method in FakeResource. A new function:\n\n    add_method(name, return_value)\n\nis added to FakeResource. The caller specifies method @name and @return_value,\nthe function will add an attribute with @name, which is a callable MagicMock\nobject whose return value is @return_value.\n\nWhen user access the attribute with a (), @return_value will be returned by\nMagicMock, which looks like a function call.\n\nChange-Id: I12eb876cbebab064773df7b5dd612de69bbf3f01\nImplements: blueprint osc-unit-test-framework-improvement\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/e93b1589df1cc06f0b7ff54567e26fadab7c8bdb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/e93b1589df1cc06f0b7ff54567e26fadab7c8bdb"}]},"branch":"refs/heads/master"},"52c17d7adaa30e22b9b6702ed1691d86598127bd":{"kind":"REWORK","_number":3,"created":"2015-11-13 09:23:30.000000000","uploader":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"ref":"refs/changes/77/243977/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/77/243977/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/3"}}},"commit":{"parents":[{"commit":"6e1ad737230f6a087afe2c20317156c633a5c80f","subject":"Merge \"validate non-ascii values for swift properties\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/6e1ad737230f6a087afe2c20317156c633a5c80f"}]}],"author":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-14 06:38:12.000000000","tz":480},"committer":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-14 06:38:12.000000000","tz":480},"subject":"Enable FakeResource to fake methods.","message":"Enable FakeResource to fake methods.\n\nUse MagicMock to fake a method in FakeResource. A new function:\n\n    add_method(name, return_value)\n\nis added to FakeResource. The caller specifies method @name and @return_value,\nthe function will add an attribute with @name, which is a callable MagicMock\nobject whose return value is @return_value.\n\nWhen user access the attribute with a (), @return_value will be returned by\nMagicMock, which looks like a function call.\n\nChange-Id: I12eb876cbebab064773df7b5dd612de69bbf3f01\nImplements: blueprint osc-unit-test-framework-improvement\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/52c17d7adaa30e22b9b6702ed1691d86598127bd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/52c17d7adaa30e22b9b6702ed1691d86598127bd"}]},"branch":"refs/heads/master"},"20bf1ef6757258619678e5ee00b8a2c6d742e1f1":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2015-11-18 10:32:25.000000000","uploader":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"ref":"refs/changes/77/243977/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/77/243977/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/77/243977/4"}}},"commit":{"parents":[{"commit":"5f6f456bfd388c199d837371fe11bb041fa2cfd9","subject":"Merge \"Add release notes for 1.9.0\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/5f6f456bfd388c199d837371fe11bb041fa2cfd9"}]}],"author":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-14 06:38:12.000000000","tz":480},"committer":{"name":"Tang Chen","email":"tangchen@cn.fujitsu.com","date":"2015-11-19 10:23:08.000000000","tz":480},"subject":"Enable FakeResource to fake methods.","message":"Enable FakeResource to fake methods.\n\nUse MagicMock to fake a method in FakeResource. A new function:\n\n    add_method(name, return_value)\n\nis added to FakeResource. The caller specifies method @name and @return_value,\nthe function will add an attribute with @name, which is a callable MagicMock\nobject whose return value is @return_value.\n\nWhen user access the attribute with a (), @return_value will be returned by\nMagicMock, which looks like a function call.\n\nChange-Id: I12eb876cbebab064773df7b5dd612de69bbf3f01\nImplements: blueprint osc-unit-test-framework-improvement\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/20bf1ef6757258619678e5ee00b8a2c6d742e1f1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/20bf1ef6757258619678e5ee00b8a2c6d742e1f1"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
