)]}'
{"id":"openstack%2Fwatcher~723194","triplet_id":"openstack%2Fwatcher~master~Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a","project":"openstack/watcher","branch":"master","topic":"unittest.mock","hashtags":[],"change_id":"Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a","subject":"Use unittest.mock instead of third party mock","status":"MERGED","created":"2020-04-26 09:06:13.000000000","updated":"2020-05-14 03:54:57.000000000","submitted":"2020-05-14 03:53:39.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"723194-1589428419612-eaedcf2a","meta_rev_id":"918919205b4ab83fdeda6187e423f236f54ef9d7","_number":723194,"virtual_id_number":723194,"owner":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},{"value":0,"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},{"value":0,"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":0,"date":"2020-05-13 07:43:53.000000000","_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},{"value":0,"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2020-05-14 03:53:39.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"}],"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":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":2,"date":"2020-05-13 10:59:16.000000000","_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},{"value":0,"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},{"value":0,"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":0,"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},{"value":2,"date":"2020-05-14 03:14:14.000000000","_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"}],"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":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},{"value":0,"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},{"value":0,"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":0,"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},{"value":1,"date":"2020-05-14 03:14:14.000000000","_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},{"value":0,"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},{"value":0,"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":0,"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},{"value":0,"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"}],"values":{" 0":"Standard Change","+1":"Important Change","+2":"High Priority Change"},"default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2020-04-26 09:51:33.000000000","updated_by":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"reviewer":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"state":"REVIEWER"},{"updated":"2020-04-28 15:37:37.000000000","updated_by":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"reviewer":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"state":"REVIEWER"},{"updated":"2020-04-29 08:31:17.000000000","updated_by":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"reviewer":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"state":"REVIEWER"},{"updated":"2020-04-30 10:05:35.000000000","updated_by":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"reviewer":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"state":"REVIEWER"},{"updated":"2020-05-13 10:59:16.000000000","updated_by":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"reviewer":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"state":"REVIEWER"},{"updated":"2020-05-14 03:14:14.000000000","updated_by":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"reviewer":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"state":"REVIEWER"},{"updated":"2020-05-14 03:53:39.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"4eed701e2bfcdee41df49f782adacd89aeb1cee6","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-04-26 09:06:13.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"dd123f1a9cd70deb1f4a19249fa21eed2f24ef1b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-04-26 10:04:38.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/016f38dc02f84936811e29ace5b9955d : SUCCESS in 4m 56s\n- requirements-check https://zuul.opendev.org/t/openstack/build/7710fc8a4d564573b2f06776c0ed6bdf : SUCCESS in 3m 14s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/78ea50cb66b2462c9b906bc27e811e7a : SUCCESS in 6m 43s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/50aa7c626dda464f9d0494668b4b335d : SUCCESS in 6m 03s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/92be2e7bd82d40e393b08e5cced847b4 : SUCCESS in 5m 59s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/18a5cee8a9514de3bb42c7c7aaddfd2d : SUCCESS in 5m 57s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/1a410351067641abb7c209350469ce66 : SUCCESS in 5m 54s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3a5bacc4eea6458b9b95e6e2dcb6bfbb : SUCCESS in 9m 06s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/613b3821c89b4b4a806409324146a2b1 : SUCCESS in 5m 14s\n- watcher-tempest-functional https://zuul.opendev.org/t/openstack/build/2638930113cb4b438b360eb879f58651 : SUCCESS in 38m 06s\n- watcher-tempest-strategies https://zuul.opendev.org/t/openstack/build/9ed6c7a6373343b0a311e998b7ce3e89 : SUCCESS in 49m 54s\n- watcher-tempest-actuator https://zuul.opendev.org/t/openstack/build/3799ccd0845c4b3bbe873c2e773fad08 : SUCCESS in 55m 50s\n- watcherclient-tempest-functional https://zuul.opendev.org/t/openstack/build/a43182bb2341482b82147d4b8c51f7a1 : SUCCESS in 42m 06s\n- watcher-tls-test https://zuul.opendev.org/t/openstack/build/062bcc3d52944be0a7558a906ef7caf0 : SUCCESS in 43m 15s\n- watcher-tempest-functional-ipv6-only https://zuul.opendev.org/t/openstack/build/964c9e4683e644cea4fbc04475214854 : SUCCESS in 41m 41s","accounts_in_message":[],"_revision_number":1},{"id":"ce05505c25c024e4fe610a832056f403a247fb92","author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"date":"2020-04-28 15:37:37.000000000","message":"Patch Set 1:\n\nThe same patch was also submitted earlier by Sean McGinnis in https://review.opendev.org/#/c/721028/ but that was done without manual tweaks and fails on alphabetical import.\n\nI don\u0027t know what would be fair, maybe add co-authored-by?","accounts_in_message":[],"_revision_number":1},{"id":"331b2a1d9f09517fc5df4c3cf750639c407b7d2c","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-04-29 03:18:33.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"b22dc74fe1a1498868f7fe5ba773489521d52c48","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-04-29 04:09:56.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/19ac6830b4d74325bcbb5689237dc885 : SUCCESS in 3m 59s\n- requirements-check https://zuul.opendev.org/t/openstack/build/9fb5dce312c3453c9ea69ae9f7803782 : SUCCESS in 2m 34s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/43948b1e05504ce6bc9fb8ac0b7daf4b : SUCCESS in 6m 08s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/e263dc357d704118bda70a9d8b16989d : SUCCESS in 4m 50s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3e1da074c2744d9cb3b34732c1007449 : SUCCESS in 4m 23s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/52cafe5a2ad04428a5c6932de92c4973 : SUCCESS in 4m 57s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/98c343a2009d49a184c0a9aa61049590 : SUCCESS in 5m 28s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7b9c26f6fc704286b4218a0fbdf921be : SUCCESS in 7m 14s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/49bc9e32377149d6b2d559def549e339 : SUCCESS in 4m 45s\n- watcher-tempest-functional https://zuul.opendev.org/t/openstack/build/370fc6bc5cb945bf991adc17e38fa6e6 : SUCCESS in 39m 00s\n- watcher-tempest-strategies https://zuul.opendev.org/t/openstack/build/01e9df42d5f04656b20db8422f944c7a : SUCCESS in 48m 42s\n- watcher-tempest-actuator https://zuul.opendev.org/t/openstack/build/04be5237716b447cb9b9a787b2792572 : SUCCESS in 39m 57s\n- watcherclient-tempest-functional https://zuul.opendev.org/t/openstack/build/777c8013dfaa42eaa293d47f8910c1ec : SUCCESS in 31m 16s\n- watcher-tls-test https://zuul.opendev.org/t/openstack/build/a454da8254db4bf88face70dee3a7760 : SUCCESS in 45m 46s\n- watcher-tempest-functional-ipv6-only https://zuul.opendev.org/t/openstack/build/cd65318567a44880b6c6d7df130f3a3e : SUCCESS in 28m 30s","accounts_in_message":[],"_revision_number":2},{"id":"6365e43d6c2179828f266d0ccae3e6f57d6ee5c9","author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"date":"2020-04-29 08:31:12.000000000","message":"Patch Set 2:\n\n\u003e The same patch was also submitted earlier by Sean McGinnis in\n \u003e https://review.opendev.org/#/c/721028/ but that was done without\n \u003e manual tweaks and fails on alphabetical import.\n \u003e \n \u003e I don\u0027t know what would be fair, maybe add co-authored-by?\n\nYe. Agree with Dantalin. First thanks for helping watcher. But seems this patch had done about the same question. Maybe co-author?","accounts_in_message":[],"_revision_number":2},{"id":"dc1081d08dcd433aee919820e09c053dd6eeb5e5","author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"date":"2020-04-29 08:31:17.000000000","message":"Patch Set 2:\n\nhttps://review.opendev.org/#/c/721028/","accounts_in_message":[],"_revision_number":2},{"id":"d495c11e9b41bc67415ef6351a7468596bff9eef","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-04-30 10:02:59.000000000","message":"Patch Set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"8f440ac254a7e602ac1f8c03f00c010d3e3d2da7","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-04-30 10:05:21.000000000","message":"Patch Set 3:\n\n\u003e The same patch was also submitted earlier by Sean McGinnis in\n \u003e https://review.opendev.org/#/c/721028/ but that was done without\n \u003e manual tweaks and fails on alphabetical import.\n \u003e \n \u003e I don\u0027t know what would be fair, maybe add co-authored-by?\n\nYeah, I think Co-Authored-By: Sean McGinnis \u003csean.mcginnis@gmail.com\u003e is ok, hope Sean can forgive me for not reviewing it before submitting the patch.","accounts_in_message":[],"_revision_number":3},{"id":"72cb2a3eab1abd756e3bc6c66bf5759837741228","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-04-30 11:03:24.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/e75c353ca446445ab6af4ca3b3c83c3e : SUCCESS in 5m 17s\n- requirements-check https://zuul.opendev.org/t/openstack/build/07cdad22710942f1921cc161f6c772a8 : SUCCESS in 2m 32s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c4d8be30231840c4ae143e0af940e35e : SUCCESS in 6m 06s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/587b8d0cb82947719e319b3726eb3d2b : SUCCESS in 5m 26s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3852b0ef7dde42c0b147784f497d258b : SUCCESS in 5m 01s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/418650a8703544a1a5f222e273d9cad9 : SUCCESS in 5m 18s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/bf1d8e1b893743d1bdb2d6ec83fde637 : SUCCESS in 7m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6c789030df7944d0906881d82d8deb8c : SUCCESS in 6m 29s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/78b8464b457a46ba92244ba84b622427 : SUCCESS in 7m 09s\n- watcher-tempest-functional https://zuul.opendev.org/t/openstack/build/deadc1aa0acb4538934a6562f7e580ce : SUCCESS in 36m 34s\n- watcher-tempest-strategies https://zuul.opendev.org/t/openstack/build/02a3d73fbfa2469c9a28721f6636817e : SUCCESS in 51m 09s\n- watcher-tempest-actuator https://zuul.opendev.org/t/openstack/build/ef1f57828d344a608da2e77e8ef1e659 : SUCCESS in 59m 03s\n- watcherclient-tempest-functional https://zuul.opendev.org/t/openstack/build/da99735fb36a4dd0a1d3061fec4bf4a0 : SUCCESS in 40m 04s\n- watcher-tls-test https://zuul.opendev.org/t/openstack/build/f0fefc182ac14c388bde8f6c4c269dfc : SUCCESS in 43m 50s\n- watcher-tempest-functional-ipv6-only https://zuul.opendev.org/t/openstack/build/e12f3a849a1240d786651a5351d85b1e : SUCCESS in 36m 10s","accounts_in_message":[],"_revision_number":3},{"id":"3b7dbfecbc1872f56299cb9b1732714c641bb746","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-05-02 00:34:09.000000000","message":"Patch Set 4: Patch Set 3 was rebased","accounts_in_message":[],"_revision_number":4},{"id":"a74ff3602dc6b4aa0bf1c9b83b7b2ffe0a350382","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-05-02 01:30:07.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/ce23dc42908247b2b8443443e00f53c9 : SUCCESS in 5m 17s\n- requirements-check https://zuul.opendev.org/t/openstack/build/10a09b2a36cd4da09433e18155101ee3 : SUCCESS in 2m 15s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c08402f5330543aabab110d2037868bb : SUCCESS in 4m 52s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/6085fb2398654d308ded7a23f43132a1 : SUCCESS in 4m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1b14d70ed6e9443c96f8f80938f0a2fd : SUCCESS in 4m 08s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/c31c85d16acc47319b6064dcb87d360d : SUCCESS in 4m 33s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/2fbe5baa5ab4483cb071aa3ac95556d3 : SUCCESS in 4m 36s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/38b96367224445ab98272380bfd228ba : SUCCESS in 5m 44s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/e5cc9b94e1734506bd2d600a4b22974a : SUCCESS in 4m 05s\n- watcher-tempest-functional https://zuul.opendev.org/t/openstack/build/20529f0e64404b88bdbb7eff95b8ee3d : SUCCESS in 32m 06s\n- watcher-tempest-strategies https://zuul.opendev.org/t/openstack/build/f3c27f5bd7374a159b8c034a3a8c01f1 : SUCCESS in 50m 19s\n- watcher-tempest-actuator https://zuul.opendev.org/t/openstack/build/d838c3e1a64f468dbc79fd00dfa0f8ef : SUCCESS in 38m 27s\n- watcherclient-tempest-functional https://zuul.opendev.org/t/openstack/build/dfc2bd8ea30f4cf38da8008f92ce422d : SUCCESS in 35m 21s\n- watcher-tls-test https://zuul.opendev.org/t/openstack/build/fe12630332bf499497b58ca44bd7c8d8 : SUCCESS in 47m 15s\n- watcher-tempest-functional-ipv6-only https://zuul.opendev.org/t/openstack/build/576f52e820e84ee4833e435961ceba48 : SUCCESS in 35m 12s","accounts_in_message":[],"_revision_number":4},{"id":"8941e582d7d684062796f0e4affe4bbc68c5094f","author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"date":"2020-05-13 07:04:11.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"646797ca516c7b52af6a7a881f77cbda6078a598","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-05-13 07:43:02.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"965b266a15a8df9cd3b7a6faa3024470cd85a39b","author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"date":"2020-05-13 07:43:53.000000000","message":"Patch Set 5:\n\n\u003e Uploaded patch set 5.\n\nJust resolve the conflict with https://review.opendev.org/#/c/727599/","accounts_in_message":[],"_revision_number":5},{"id":"cd97142080a34ee033b3c4cb636095678a1ce5c0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-05-13 08:59:25.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/4aed6ba66eff450981667757e0cc35dc : SUCCESS in 6m 02s\n- requirements-check https://zuul.opendev.org/t/openstack/build/e51b3e93e3cf4b8d9a073a1af1a5bb9c : SUCCESS in 2m 48s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/60d8ce71cbcd4230a4a4b588e70eb8dd : SUCCESS in 10m 37s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/bfac141fabc54a1f8421b30af9d99a07 : SUCCESS in 10m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/fb3139653c1b43e5b0f86c9325c36dda : SUCCESS in 6m 15s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/9487f7a4ddcb4247ac49a823dc7351d2 : SUCCESS in 6m 48s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/2e38af29f28340feac6f5989ad98755d : SUCCESS in 7m 18s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/095096ed7cf0421482b2c779edbd8cbd : SUCCESS in 7m 07s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/68689ca35e994654b958e1fd76719b03 : SUCCESS in 4m 29s\n- watcher-tempest-functional https://zuul.opendev.org/t/openstack/build/3e180c70b4c748a98d888911968c4bf7 : SUCCESS in 32m 44s\n- watcher-tempest-strategies https://zuul.opendev.org/t/openstack/build/ccdccc3780de41d4aa8c50158d256a43 : SUCCESS in 51m 33s\n- watcher-tempest-actuator https://zuul.opendev.org/t/openstack/build/2dafe90b55114236aa14d7bb0a920e6a : SUCCESS in 1h 03m 12s\n- watcherclient-tempest-functional https://zuul.opendev.org/t/openstack/build/fbd6ef09319744828973d9bddadfb6d9 : SUCCESS in 38m 22s\n- watcher-tls-test https://zuul.opendev.org/t/openstack/build/67f6127a01974869b7df30b9bee94c9f : SUCCESS in 52m 07s\n- watcher-tempest-functional-ipv6-only https://zuul.opendev.org/t/openstack/build/fd643f95e5054c9da0a2f59f20c0491e : SUCCESS in 25m 10s","accounts_in_message":[],"_revision_number":5},{"id":"aa0b31abbe10dd4e62654eb4ff469c19ab2c6872","author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"date":"2020-05-13 10:59:16.000000000","message":"Patch Set 5: Code-Review+2","accounts_in_message":[],"_revision_number":5},{"id":"719aa09184400eaf67922c700e37f60e5bdb68ec","author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"date":"2020-05-14 03:14:14.000000000","message":"Patch Set 5: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":5},{"id":"e03592f02172f9a65c090f5702e59454a272342e","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-05-14 03:14:25.000000000","message":"Patch Set 5: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":5},{"id":"b8a6b9429986b5345aab5b1df3483be0e339ba3c","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-05-14 03:53:39.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":5},{"id":"159a90a7111a5a3cc7907550762f62a461fae3a1","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-05-14 03:53:39.000000000","message":"Patch Set 5: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/ad5715752d58423f862b426bdf691ba8 : SUCCESS in 4m 45s\n- requirements-check https://zuul.opendev.org/t/openstack/build/c6bfc4e4b4154ddf86a8580139b7354c : SUCCESS in 2m 19s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/9d4d9d8c0e3845f5a047e3a14412e4c3 : SUCCESS in 4m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/81457444960a49119414765e3ea4a5e0 : SUCCESS in 4m 17s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/52d0cf9054e54a2fbc2dfbae033b1301 : SUCCESS in 5m 01s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/55557b8166fa4f8e8b0a2883a696fb35 : SUCCESS in 5m 22s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ab76b592ed554173b565b71ed6686ad8 : SUCCESS in 6m 33s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a39d7b35a994411690dbca52b444a9ea : SUCCESS in 4m 32s\n- watcher-tempest-functional https://zuul.opendev.org/t/openstack/build/a4a34d5466ec49adb6b1e080520285b3 : SUCCESS in 28m 36s\n- watcher-tempest-functional-ipv6-only https://zuul.opendev.org/t/openstack/build/5984ff693c1c437b82b74cdd548e27c4 : SUCCESS in 34m 21s","accounts_in_message":[],"_revision_number":5},{"id":"d326ce384975208eef5a0f58d020d6ac778e14d6","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-05-14 03:54:57.000000000","message":"Patch Set 5:\n\nBuild succeeded (promote pipeline).\n\n- promote-api-ref https://zuul.opendev.org/t/openstack/build/20822a41db834a25933b3fdcae5b011a : SUCCESS in 1m 02s\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c13475fbdf5f47b89c3473e938d19112 : SUCCESS in 1m 03s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/baf928b49632436b8b001b3f18ed46ff : SUCCESS in 1m 00s","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"8a36ad5f878add69c434c4e72c06bb198cfa3f7f","revisions":{"eae2a5d01706e13c19280256390cb920e399e3eb":{"kind":"REWORK","_number":1,"created":"2020-04-26 09:06:13.000000000","uploader":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"ref":"refs/changes/94/723194/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/94/723194/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/94/723194/1"}}},"commit":{"parents":[{"commit":"c7b185954a13b0bfebbc7d4cb6e239902b63765d","subject":"Remove future imports","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/c7b185954a13b0bfebbc7d4cb6e239902b63765d"}]}],"author":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-26 09:03:13.000000000","tz":480},"committer":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-26 09:03:15.000000000","tz":480},"subject":"Use unittest.mock instead of third party mock","message":"Use unittest.mock instead of third party mock\n\nNow that we no longer support py27, we can use the standard library\nunittest.mock module instead of the third party mock lib.\n\nThe remainder was auto-generated with the following (hacky) script, with\none or two manual tweaks after the fact:\n\n  import glob\n\n  for path in glob.glob(\u0027watcher/tests/**/*.py\u0027, recursive\u003dTrue):\n      with open(path) as fh:\n          lines \u003d fh.readlines()\n      if \u0027import mock\\n\u0027 not in lines:\n          continue\n      import_group_found \u003d False\n      create_first_party_group \u003d False\n      for num, line in enumerate(lines):\n          line \u003d line.strip()\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              for lib in (\n                  \u0027ddt\u0027, \u0027six\u0027, \u0027webob\u0027, \u0027fixtures\u0027, \u0027testtools\u0027\n                  \u0027neutron\u0027, \u0027cinder\u0027, \u0027ironic\u0027, \u0027keystone\u0027, \u0027oslo\u0027,\n              ):\n                  if lib in tokens[1]:\n                      create_first_party_group \u003d True\n                      break\n              if create_first_party_group:\n                  break\n              import_group_found \u003d True\n          if not import_group_found:\n              continue\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              if tokens[1] \u003e \u0027unittest\u0027:\n                  break\n              elif tokens[1] \u003d\u003d \u0027unittest\u0027 and (\n                  len(tokens) \u003d\u003d 2 or tokens[4] \u003e \u0027mock\u0027\n              ):\n                  break\n          elif not line:\n              break\n      if create_first_party_group:\n          lines.insert(num, \u0027from unittest import mock\\n\\n\u0027)\n      else:\n          lines.insert(num, \u0027from unittest import mock\\n\u0027)\n      del lines[lines.index(\u0027import mock\\n\u0027)]\n      with open(path, \u0027w+\u0027) as fh:\n          fh.writelines(lines)\n\nChange-Id: Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/eae2a5d01706e13c19280256390cb920e399e3eb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/eae2a5d01706e13c19280256390cb920e399e3eb"}]},"branch":"refs/heads/master"},"dcf763a261e6ab6e3abbf11968d14d0bfa221c18":{"kind":"REWORK","_number":2,"created":"2020-04-29 03:18:33.000000000","uploader":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"ref":"refs/changes/94/723194/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/94/723194/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/94/723194/2"}}},"commit":{"parents":[{"commit":"35dc8b1d5cb56ffa1935561ec44b463eeb277d3a","subject":"Remove future imports","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/35dc8b1d5cb56ffa1935561ec44b463eeb277d3a"}]}],"author":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-26 09:03:13.000000000","tz":480},"committer":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-29 03:18:14.000000000","tz":480},"subject":"Use unittest.mock instead of third party mock","message":"Use unittest.mock instead of third party mock\n\nNow that we no longer support py27, we can use the standard library\nunittest.mock module instead of the third party mock lib.\n\nThe remainder was auto-generated with the following (hacky) script, with\none or two manual tweaks after the fact:\n\n  import glob\n\n  for path in glob.glob(\u0027watcher/tests/**/*.py\u0027, recursive\u003dTrue):\n      with open(path) as fh:\n          lines \u003d fh.readlines()\n      if \u0027import mock\\n\u0027 not in lines:\n          continue\n      import_group_found \u003d False\n      create_first_party_group \u003d False\n      for num, line in enumerate(lines):\n          line \u003d line.strip()\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              for lib in (\n                  \u0027ddt\u0027, \u0027six\u0027, \u0027webob\u0027, \u0027fixtures\u0027, \u0027testtools\u0027\n                  \u0027neutron\u0027, \u0027cinder\u0027, \u0027ironic\u0027, \u0027keystone\u0027, \u0027oslo\u0027,\n              ):\n                  if lib in tokens[1]:\n                      create_first_party_group \u003d True\n                      break\n              if create_first_party_group:\n                  break\n              import_group_found \u003d True\n          if not import_group_found:\n              continue\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              if tokens[1] \u003e \u0027unittest\u0027:\n                  break\n              elif tokens[1] \u003d\u003d \u0027unittest\u0027 and (\n                  len(tokens) \u003d\u003d 2 or tokens[4] \u003e \u0027mock\u0027\n              ):\n                  break\n          elif not line:\n              break\n      if create_first_party_group:\n          lines.insert(num, \u0027from unittest import mock\\n\\n\u0027)\n      else:\n          lines.insert(num, \u0027from unittest import mock\\n\u0027)\n      del lines[lines.index(\u0027import mock\\n\u0027)]\n      with open(path, \u0027w+\u0027) as fh:\n          fh.writelines(lines)\n\nChange-Id: Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/dcf763a261e6ab6e3abbf11968d14d0bfa221c18"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/dcf763a261e6ab6e3abbf11968d14d0bfa221c18"}]},"branch":"refs/heads/master"},"d01a3f7f8825cfad3d19221d64a3d3c99fb2ca65":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2020-04-30 10:02:59.000000000","uploader":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"ref":"refs/changes/94/723194/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/94/723194/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/94/723194/3"}}},"commit":{"parents":[{"commit":"35dc8b1d5cb56ffa1935561ec44b463eeb277d3a","subject":"Remove future imports","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/35dc8b1d5cb56ffa1935561ec44b463eeb277d3a"}]}],"author":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-26 09:03:13.000000000","tz":480},"committer":{"name":"Brin Zhang","email":"zhangbailin@inspur.com","date":"2020-04-30 10:02:53.000000000","tz":0},"subject":"Use unittest.mock instead of third party mock","message":"Use unittest.mock instead of third party mock\n\nNow that we no longer support py27, we can use the standard library\nunittest.mock module instead of the third party mock lib.\n\nThe remainder was auto-generated with the following (hacky) script, with\none or two manual tweaks after the fact:\n\n  import glob\n\n  for path in glob.glob(\u0027watcher/tests/**/*.py\u0027, recursive\u003dTrue):\n      with open(path) as fh:\n          lines \u003d fh.readlines()\n      if \u0027import mock\\n\u0027 not in lines:\n          continue\n      import_group_found \u003d False\n      create_first_party_group \u003d False\n      for num, line in enumerate(lines):\n          line \u003d line.strip()\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              for lib in (\n                  \u0027ddt\u0027, \u0027six\u0027, \u0027webob\u0027, \u0027fixtures\u0027, \u0027testtools\u0027\n                  \u0027neutron\u0027, \u0027cinder\u0027, \u0027ironic\u0027, \u0027keystone\u0027, \u0027oslo\u0027,\n              ):\n                  if lib in tokens[1]:\n                      create_first_party_group \u003d True\n                      break\n              if create_first_party_group:\n                  break\n              import_group_found \u003d True\n          if not import_group_found:\n              continue\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              if tokens[1] \u003e \u0027unittest\u0027:\n                  break\n              elif tokens[1] \u003d\u003d \u0027unittest\u0027 and (\n                  len(tokens) \u003d\u003d 2 or tokens[4] \u003e \u0027mock\u0027\n              ):\n                  break\n          elif not line:\n              break\n      if create_first_party_group:\n          lines.insert(num, \u0027from unittest import mock\\n\\n\u0027)\n      else:\n          lines.insert(num, \u0027from unittest import mock\\n\u0027)\n      del lines[lines.index(\u0027import mock\\n\u0027)]\n      with open(path, \u0027w+\u0027) as fh:\n          fh.writelines(lines)\n\nCo-Authored-By: Sean McGinnis \u003csean.mcginnis@gmail.com\u003e\n\nChange-Id: Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/d01a3f7f8825cfad3d19221d64a3d3c99fb2ca65"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/d01a3f7f8825cfad3d19221d64a3d3c99fb2ca65"}]},"branch":"refs/heads/master"},"3ba760750c8b7b1ab7b794a98ef26b6f990e3bed":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2020-05-02 00:34:09.000000000","uploader":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"ref":"refs/changes/94/723194/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/94/723194/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/94/723194/4"}}},"commit":{"parents":[{"commit":"f0f15f89c68c0baaa70d093aba8d8e80a5255034","subject":"Remove future imports","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f0f15f89c68c0baaa70d093aba8d8e80a5255034"}]}],"author":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-26 09:03:13.000000000","tz":480},"committer":{"name":"Brin Zhang","email":"zhangbailin@inspur.com","date":"2020-05-02 00:34:09.000000000","tz":0},"subject":"Use unittest.mock instead of third party mock","message":"Use unittest.mock instead of third party mock\n\nNow that we no longer support py27, we can use the standard library\nunittest.mock module instead of the third party mock lib.\n\nThe remainder was auto-generated with the following (hacky) script, with\none or two manual tweaks after the fact:\n\n  import glob\n\n  for path in glob.glob(\u0027watcher/tests/**/*.py\u0027, recursive\u003dTrue):\n      with open(path) as fh:\n          lines \u003d fh.readlines()\n      if \u0027import mock\\n\u0027 not in lines:\n          continue\n      import_group_found \u003d False\n      create_first_party_group \u003d False\n      for num, line in enumerate(lines):\n          line \u003d line.strip()\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              for lib in (\n                  \u0027ddt\u0027, \u0027six\u0027, \u0027webob\u0027, \u0027fixtures\u0027, \u0027testtools\u0027\n                  \u0027neutron\u0027, \u0027cinder\u0027, \u0027ironic\u0027, \u0027keystone\u0027, \u0027oslo\u0027,\n              ):\n                  if lib in tokens[1]:\n                      create_first_party_group \u003d True\n                      break\n              if create_first_party_group:\n                  break\n              import_group_found \u003d True\n          if not import_group_found:\n              continue\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              if tokens[1] \u003e \u0027unittest\u0027:\n                  break\n              elif tokens[1] \u003d\u003d \u0027unittest\u0027 and (\n                  len(tokens) \u003d\u003d 2 or tokens[4] \u003e \u0027mock\u0027\n              ):\n                  break\n          elif not line:\n              break\n      if create_first_party_group:\n          lines.insert(num, \u0027from unittest import mock\\n\\n\u0027)\n      else:\n          lines.insert(num, \u0027from unittest import mock\\n\u0027)\n      del lines[lines.index(\u0027import mock\\n\u0027)]\n      with open(path, \u0027w+\u0027) as fh:\n          fh.writelines(lines)\n\nCo-Authored-By: Sean McGinnis \u003csean.mcginnis@gmail.com\u003e\n\nChange-Id: Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3ba760750c8b7b1ab7b794a98ef26b6f990e3bed"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3ba760750c8b7b1ab7b794a98ef26b6f990e3bed"}]},"branch":"refs/heads/master"},"8a36ad5f878add69c434c4e72c06bb198cfa3f7f":{"kind":"REWORK","_number":5,"created":"2020-05-13 07:43:02.000000000","uploader":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"ref":"refs/changes/94/723194/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/94/723194/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/94/723194/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/94/723194/5"}}},"commit":{"parents":[{"commit":"6ff95efaf6aa4ce477ce66d15587bb4c9fc7c710","subject":"Fix hacking min version to 3.0.1","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/6ff95efaf6aa4ce477ce66d15587bb4c9fc7c710"}]}],"author":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-04-26 09:03:13.000000000","tz":480},"committer":{"name":"zhangbailin","email":"zhangbailin@inspur.com","date":"2020-05-13 07:41:55.000000000","tz":480},"subject":"Use unittest.mock instead of third party mock","message":"Use unittest.mock instead of third party mock\n\nNow that we no longer support py27, we can use the standard library\nunittest.mock module instead of the third party mock lib.\n\nThe remainder was auto-generated with the following (hacky) script, with\none or two manual tweaks after the fact:\n\n  import glob\n\n  for path in glob.glob(\u0027watcher/tests/**/*.py\u0027, recursive\u003dTrue):\n      with open(path) as fh:\n          lines \u003d fh.readlines()\n      if \u0027import mock\\n\u0027 not in lines:\n          continue\n      import_group_found \u003d False\n      create_first_party_group \u003d False\n      for num, line in enumerate(lines):\n          line \u003d line.strip()\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              for lib in (\n                  \u0027ddt\u0027, \u0027six\u0027, \u0027webob\u0027, \u0027fixtures\u0027, \u0027testtools\u0027\n                  \u0027neutron\u0027, \u0027cinder\u0027, \u0027ironic\u0027, \u0027keystone\u0027, \u0027oslo\u0027,\n              ):\n                  if lib in tokens[1]:\n                      create_first_party_group \u003d True\n                      break\n              if create_first_party_group:\n                  break\n              import_group_found \u003d True\n          if not import_group_found:\n              continue\n          if line.startswith(\u0027import \u0027) or line.startswith(\u0027from \u0027):\n              tokens \u003d line.split()\n              if tokens[1] \u003e \u0027unittest\u0027:\n                  break\n              elif tokens[1] \u003d\u003d \u0027unittest\u0027 and (\n                  len(tokens) \u003d\u003d 2 or tokens[4] \u003e \u0027mock\u0027\n              ):\n                  break\n          elif not line:\n              break\n      if create_first_party_group:\n          lines.insert(num, \u0027from unittest import mock\\n\\n\u0027)\n      else:\n          lines.insert(num, \u0027from unittest import mock\\n\u0027)\n      del lines[lines.index(\u0027import mock\\n\u0027)]\n      with open(path, \u0027w+\u0027) as fh:\n          fh.writelines(lines)\n\nCo-Authored-By: Sean McGinnis \u003csean.mcginnis@gmail.com\u003e\n\nChange-Id: Icf35d3a6c10c529e07d1a4edaa36f504e5bf553a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/8a36ad5f878add69c434c4e72c06bb198cfa3f7f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/8a36ad5f878add69c434c4e72c06bb198cfa3f7f"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
