)]}'
{"id":"openstack%2Fcyborg~681005","triplet_id":"openstack%2Fcyborg~master~I4e7d14e271aa26f19da3605b20cb4fd72eef4312","project":"openstack/cyborg","branch":"master","topic":"async-1","hashtags":[],"change_id":"I4e7d14e271aa26f19da3605b20cb4fd72eef4312","subject":"async job for bind","status":"MERGED","created":"2019-09-09 13:28:09.000000000","updated":"2019-10-14 14:58:48.000000000","submitted":"2019-10-08 06:19:56.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":62,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"681005-1570515597058-8e81ebfc","meta_rev_id":"1dff387993c15e2283dac4a12472d3712a5a2a87","_number":681005,"virtual_id_number":681005,"owner":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"date":"2019-10-08 05:07:01.000000000","_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},{"value":0,"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},{"value":0,"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":0,"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":0,"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2019-10-08 06:19:56.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"all":[{"value":0,"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},{"value":0,"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},{"value":2,"date":"2019-10-04 18:42:36.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":0,"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":2,"date":"2019-09-30 07:48:04.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"all":[{"value":0,"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},{"value":0,"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},{"value":0,"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":1,"date":"2019-10-08 04:17:35.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"value":0,"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-09-09 13:47:38.000000000","updated_by":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"reviewer":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"state":"REVIEWER"},{"updated":"2019-09-30 07:48:04.000000000","updated_by":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"reviewer":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"state":"REVIEWER"},{"updated":"2019-10-04 18:42:36.000000000","updated_by":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"reviewer":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"state":"REVIEWER"},{"updated":"2019-10-08 04:17:35.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":"2019-10-08 06:19:56.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":"8600bf4628fdaca596745ecac9852cd3e008c070","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-09 13:28:09.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"cc210b7e11abd2371721c4bd606230acb446f702","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-09 13:36:06.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"067c5cab3585620c34a1b8b455d6567e044bf501","author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"date":"2019-09-09 13:47:38.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"ebdb99430ad99d8e2f00edad8486a87a6c7518e6","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-09 13:55:17.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"f1f2eb60f135cac003b42f65ebf1ac86cb31dbff","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-09 14:03:05.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3c28dce89b5e44508eee9fac4ef0bf02 : FAILURE in 2m 59s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/b4568aa414564d4e85134d1a7b998447 : FAILURE in 5m 11s\n- requirements-check https://zuul.opendev.org/t/openstack/build/39ecb715f0054ea19c78c0c4472c365e : FAILURE in 2m 51s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2f28362ae0fe42988d03fe7e4a8a1301 : SUCCESS in 5m 21s\n- cyborg-devstack https://zuul.opendev.org/t/openstack/build/0908e74e06084941b7e8add6496ed755 : FAILURE in 30m 36s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"6e35b4ab388fed7489c6792183cef50c8640bd97","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-10 10:21:59.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"b835a1116d508e12bac81ed2e822e29d30cb3e2f","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-10 10:34:48.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"929b356f5c59736da92581c206cc18f1fe519a36","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-10 11:16:52.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/636b36cc7ab445faae6dda48fd8341dd : FAILURE in 3m 05s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/85e7fb9868e341e8b45ac67c4401c5c6 : FAILURE in 3m 43s\n- requirements-check https://zuul.opendev.org/t/openstack/build/50da441e90594a1aa760561f239db1cd : FAILURE in 2m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4164f8f826a34274a81cb8ec4c7025cd : SUCCESS in 4m 43s\n- cyborg-devstack https://zuul.opendev.org/t/openstack/build/df33fe3d52ad460ea8e32cfc52d0b9b6 : FAILURE in 34m 53s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"8bfa229e2bfb639f5301c658a187609d28ddef58","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-10 11:52:46.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"50fb1c7fa42f57457f055a0ba431fc2ef1bb5770","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-10 12:40:40.000000000","message":"Patch Set 4: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f88af6697aef459bb778ab88cae0eaa5 : FAILURE in 3m 44s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/be951d5475574f8cb5a84735a2c278ec : FAILURE in 4m 42s\n- requirements-check https://zuul.opendev.org/t/openstack/build/7026d7f8effb412399817a40d5600337 : FAILURE in 2m 17s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c81427390d0048e090d713b7cb9e760c : SUCCESS in 4m 16s\n- cyborg-devstack https://zuul.opendev.org/t/openstack/build/6c8b237ee858449a8dc6100b6d253fe9 : FAILURE in 39m 14s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"24050c436b576199a8b4638d328a578aa7d1e89f","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-10 13:27:13.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"da8f1a6979ebf36771a06fe03d92570cfc905f34","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-10 14:01:55.000000000","message":"Patch Set 5: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9721d456a8b04a45a3959dc835653660 : SUCCESS in 3m 17s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/617766f761f240e8be35138d478aaf51 : SUCCESS in 4m 27s\n- requirements-check https://zuul.opendev.org/t/openstack/build/64e471498be84f098241211264f0c105 : FAILURE in 2m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6103be523fc44d9b865dae429994ef32 : SUCCESS in 4m 28s\n- cyborg-devstack https://zuul.opendev.org/t/openstack/build/0e82331b7fba47de891a539a545898bc : SUCCESS in 29m 52s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"bca96fb470f2def7cebc327241a778a07d856d26","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-10 14:37:21.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"6abe7adb81729c0c3739c314771e8c7cfc791e85","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-10 15:29:43.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cad3f08e8700453ea69c70007422c885 : SUCCESS in 2m 51s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/e0935a7e13954259b1976fa2ea759010 : SUCCESS in 3m 23s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ca02fef11fc04d9ba24e86cc536e0d98 : SUCCESS in 3m 51s\n- cyborg-devstack https://zuul.opendev.org/t/openstack/build/20f5fcd22033401dae3f39a09434a435 : SUCCESS in 43m 44s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"e966eedde77a414c5f6b005d664435eadf732827","author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"date":"2019-09-11 07:37:00.000000000","message":"Patch Set 6: Code-Review-1\n\n(3 comments)\n\nHi Shaohe, please see my comments inline.","accounts_in_message":[],"_revision_number":6},{"id":"e84b0c5ebda7f39552255460ab6ab9e58665f777","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-11 10:06:54.000000000","message":"Patch Set 7: Published edit on patch set 6.","accounts_in_message":[],"_revision_number":7},{"id":"b1e3f28e0b87ac40c14420f251ced3f39193f9a3","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-11 10:44:54.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/72999103390e4835bf20e5e9818871f5 : SUCCESS in 4m 01s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/0e2898fdab514f338621e6c911096a36 : SUCCESS in 3m 30s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0dad38e20d724ed2be1831e802a672d8 : SUCCESS in 4m 14s\n- cyborg-devstack https://zuul.opendev.org/t/openstack/build/7584905560734cde98bb0f2b135899fc : SUCCESS in 31m 52s (non-voting)","accounts_in_message":[],"_revision_number":7},{"id":"1de2b4681d33e52125668912afe43e131d6930d1","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-13 11:56:53.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"dd396a8bedbb44750d2af8bd92b946b0de8314f3","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-13 12:31:24.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2cb6995a50e2499aae6ba4447461b50c : SUCCESS in 3m 43s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/d3652a91e51148e8be7d75856689c34a : SUCCESS in 3m 34s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/26d1824a162c405cbcb10784d4b2a3b9 : SUCCESS in 3m 18s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/82e54311e213426ba644ffce370cf8c4 : SUCCESS in 30m 45s (non-voting)","accounts_in_message":[],"_revision_number":8},{"id":"de82a884d3f05d40da82406893e3ac9aed35b9cb","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-13 20:24:27.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"0841cae08a7f64c7a168cb22d1f6319b01a3659a","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-13 20:27:15.000000000","message":"Uploaded patch set 10.","accounts_in_message":[],"_revision_number":10},{"id":"472c9bbe4c7943cc8c6f25cfddd3d44e811dda91","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-13 21:13:33.000000000","message":"Patch Set 10: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/976993fb9e834d919bbcb7e604a7952e : SUCCESS in 2m 54s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/bae6e8e4a8e14e7fa0681151d2e7b5ff : FAILURE in 2m 46s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/b093102a88394a3198645d0df89a6103 : FAILURE in 2m 51s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/e6be91801e7d46f0bde956a36b44fc43 : FAILURE in 3m 09s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4b46e85d944645c285f9102f89ab254b : SUCCESS in 5m 06s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/cddceff01ec14a66b88f48e83321ec4a : SUCCESS in 42m 44s (non-voting)","accounts_in_message":[],"_revision_number":10},{"id":"678dac7f9fb9c3ad9a2df58c2bd8fb892e7c9591","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-14 02:06:30.000000000","message":"Patch Set 11: Published edit on patch set 10.","accounts_in_message":[],"_revision_number":11},{"id":"3e8aec89f7836910daf6a04960b9b0753dc39cee","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-14 03:01:17.000000000","message":"Patch Set 11: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/10c1955376ae413c95eb9ae8a58f6faa : SUCCESS in 2m 58s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/3b51d258add54e9984f8f47d539f8603 : FAILURE in 3m 24s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/693fae6fcc234e3d84cd0d31e83bd88a : FAILURE in 3m 40s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/94bf855a6edd48e88ca23953254244f0 : FAILURE in 4m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/76c8bfff20dc467480ecfac61de52902 : SUCCESS in 3m 55s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/a353b279db2f4ccaac4015b484545225 : SUCCESS in 31m 23s (non-voting)","accounts_in_message":[],"_revision_number":11},{"id":"75955663302b69f0108c09a7921e0c22e9e3ca46","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-14 21:17:06.000000000","message":"Uploaded patch set 12.","accounts_in_message":[],"_revision_number":12},{"id":"0f1a08d5fbd4124b7948cd88de88456d1c540578","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-14 21:50:54.000000000","message":"Patch Set 12: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2f8222af21124adebef1d366623f5022 : SUCCESS in 3m 16s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/17ffb12cc3ad45ffa1727835396fadb8 : SUCCESS in 6m 15s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/5a1a904bbdaa4f67be24767de4157d84 : SUCCESS in 5m 46s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/1582e33d1b1b4e09beab2958db580a2c : SUCCESS in 4m 29s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/11769cd578dc440596a03a728b989ad9 : SUCCESS in 5m 53s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/419453c20189435babcb721e72670295 : SUCCESS in 31m 46s (non-voting)","accounts_in_message":[],"_revision_number":12},{"id":"e54f7ea31bc338ebf408214f133227671872ecac","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-15 01:44:12.000000000","message":"Patch Set 13: Commit message was updated.","accounts_in_message":[],"_revision_number":13},{"id":"21f38f78b815cd27c8792045c23312bf4e8704a6","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-15 01:53:54.000000000","message":"Uploaded patch set 14.","accounts_in_message":[],"_revision_number":14},{"id":"922f6425949fa5076a7a33ea8c30685a501f7b0f","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-15 02:28:40.000000000","message":"Patch Set 14: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/76ca657dd6924ca38e1586bf90399d4b : SUCCESS in 4m 30s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/9f6dc2664f38424cac5cbf2eb1903f35 : SUCCESS in 4m 24s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/ead21dbcac054895858b22a5cd3eb96c : SUCCESS in 3m 53s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/0dadd09776d6406c9352f91a67c44eb8 : SUCCESS in 3m 26s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/11c1d8b17df547f6b1d3d845b680ca4d : SUCCESS in 3m 32s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/4dd5e99970f14a19a31b3aba0b249a6f : SUCCESS in 29m 16s (non-voting)","accounts_in_message":[],"_revision_number":14},{"id":"7abee02a3ca0bcbd6275e03fb6c88d0ea50fd70a","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-17 06:21:07.000000000","message":"Patch Set 14: Code-Review-1\n\n(6 comments)\n\nLots of the changes here are not necessary, not correct, or mix code form objects/db layer. It is best to focus on the async code alone.","accounts_in_message":[],"_revision_number":14},{"id":"3d15025430d811b9de0aec4a4055f9aebd4bc289","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-18 04:53:58.000000000","message":"Uploaded patch set 15.","accounts_in_message":[],"_revision_number":15},{"id":"b2c51fa3a250fb26dd9aff0fc8c4f568719db471","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-18 05:09:11.000000000","message":"Patch Set 14:\n\n(3 comments)\n\none ARQ for one deployable. \n\nFor no doc for this rule, and all we have no change to attend the PTG meeting for discuss, did not know this rule.\n\nI read up the code these days and make a change.\n\nIt is difficult for me to get this rule from code.  Waste a lot of time.","accounts_in_message":[],"_revision_number":14},{"id":"68d6ee3c737afe26a7586290b1ba6cf77435d0be","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-18 05:23:40.000000000","message":"Patch Set 15: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/98a8fb2420064306a353c21e7e909bc9 : SUCCESS in 2m 57s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/96f90c90345e48d3a4f7fec9b6e725b0 : SUCCESS in 4m 08s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/67d41401deb143d0a1ce39cfa2a2e2e8 : SUCCESS in 3m 56s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/b0384c7675b8440cb2c9b05ddaa25e2f : SUCCESS in 3m 15s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8ab5b525be8c4ad680b16f35f394dee2 : SUCCESS in 3m 39s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/843b71cbacad480c9960649ad4e524be : SUCCESS in 29m 03s (non-voting)","accounts_in_message":[],"_revision_number":15},{"id":"586e96e16be0671a3e276745256f1387fa14949a","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-18 05:30:54.000000000","message":"Patch Set 14:\n\n(1 comment)","accounts_in_message":[],"_revision_number":14},{"id":"3146770761c0a8cb55bacdc014faeab8c49c33ac","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-18 06:54:27.000000000","message":"Uploaded patch set 16.","accounts_in_message":[],"_revision_number":16},{"id":"2eedc44cace389771585c2a29f7d6f0811ed0ec1","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-18 07:42:38.000000000","message":"Patch Set 16: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/921bbeab628b4e7eb4ce5ebf9cfa9043 : SUCCESS in 3m 54s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/515377f3074b4d529c1981436bb65958 : SUCCESS in 3m 46s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/b6dbbb04a17d4391ba9db98d3bbab491 : SUCCESS in 3m 21s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/f538b14bb5e8487e93c455db2f01fd08 : SUCCESS in 4m 21s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3a13b8ee85794d3096298f41f0fef590 : SUCCESS in 4m 34s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/34b961c1bf8d42be911e9b83b3be860e : SUCCESS in 29m 21s (non-voting)","accounts_in_message":[],"_revision_number":16},{"id":"8bf9e0b4dc9f7e593ed4eaae38f3775e0bce4ff8","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-19 02:00:06.000000000","message":"Patch Set 16: Code-Review-1\n\n\u003e (3 comments)\n \u003e \n \u003e one ARQ for one deployable.\n \u003e \n \u003e For no doc for this rule, and all we have no change to attend the\n \u003e PTG meeting for discuss, did not know this rule.\n \u003e \n \u003e I read up the code these days and make a change.\n \u003e \n \u003e It is difficult for me to get this rule from code.  Waste a lot of\n \u003e time.\n\nIt is NOT 1 ARQ -- 1 deployable. \n* One device profile group generates one or more ARQs; each ARQ corresponds to exactly one device profile request group. (1:N relationship)\n* One device profile request group corresponds to one resource provider in Placement (1:1).\n* One Placement RP corresponds to one Cyborg deployable (1:1).\n\nFor the object model, please see:\n[1] Nova-Cyborg interaction spec:  https://review.opendev.org/gitweb?p\u003dopenstack%2Fnova-specs.git;hb\u003drefs%2Fchanges%2F55%2F603955%2F15;f\u003dspecs%2Ftrain%2Fapproved%2Fnova-cyborg-interaction.rst (esp. line 206 and, in general, 188-210)\n\n[2] Nova patches: https://review.opendev.org/gitweb?p\u003dopenstack/nova.git;f\u003dnova/accelerator/cyborg.py;hb\u003drefs/changes/43/631243/38#l29\n\n[3] Cyborg code: objects/arq.py and objects/ext_arq.py","accounts_in_message":[],"_revision_number":16},{"id":"4faf6457a82769beee6cbd6459da1258bd1d8e96","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-19 02:00:50.000000000","message":"Patch Set 16:\n\nWill review more and try it out.","accounts_in_message":[],"_revision_number":16},{"id":"04be28acb25b9164e176fef2cce6b5fd9995b809","author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"date":"2019-09-19 02:22:15.000000000","message":"Patch Set 16:\n\n\u003e \u003e (3 comments)\n \u003e \u003e\n \u003e \u003e one ARQ for one deployable.\n \u003e \u003e\n \u003e \u003e For no doc for this rule, and all we have no change to attend the\n \u003e \u003e PTG meeting for discuss, did not know this rule.\n \u003e \u003e\n \u003e \u003e I read up the code these days and make a change.\n \u003e \u003e\n \u003e \u003e It is difficult for me to get this rule from code.  Waste a lot\n \u003e of\n \u003e \u003e time.\n \u003e \n \u003e It is NOT 1 ARQ -- 1 deployable.\n \u003e * One device profile group generates one or more ARQs; each ARQ\n \u003e corresponds to exactly one device profile request group. (1:N\n \u003e relationship)\n \u003e * One device profile request group corresponds to one resource\n \u003e provider in Placement (1:1).\n \u003e * One Placement RP corresponds to one Cyborg deployable (1:1).\n \u003e \n \u003e For the object model, please see:\n \u003e [1] Nova-Cyborg interaction spec:  https://review.opendev.org/gitweb?p\u003dopenstack%2Fnova-specs.git;hb\u003drefs%2Fchanges%2F55%2F603955%2F15;f\u003dspecs%2Ftrain%2Fapproved%2Fnova-cyborg-interaction.rst\n \u003e (esp. line 206 and, in general, 188-210)\n \u003e \n \u003e [2] Nova patches: https://review.opendev.org/gitweb?p\u003dopenstack/nova.git;f\u003dnova/accelerator/cyborg.py;hb\u003drefs/changes/43/631243/38#l29\n \u003e \n \u003e [3] Cyborg code: objects/arq.py and objects/ext_arq.py\n\nHi Sundar, I think Shaohe means, currently, we just support one ARQ for one device profile with 1 accelerator required in upstream code.  Because we found some bugs by supporting multiple ARQs for one device_profile.","accounts_in_message":[],"_revision_number":16},{"id":"33cb070059e108596072a69d152386e01bacb839","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-25 07:36:36.000000000","message":"Uploaded patch set 17.","accounts_in_message":[],"_revision_number":17},{"id":"82a50aba905176d1909f0ebc1bc3e49a55dc9f5d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-25 08:28:00.000000000","message":"Patch Set 17: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/8fcd5be0ddf7400cabb51b71763aea18 : FAILURE in 3m 49s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/daa5affb82274e60b0163607e463f524 : SUCCESS in 3m 45s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/7ae787f24f1a4160bf515d846963f121 : SUCCESS in 3m 30s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/12c59cabfc3c46de8b831159849dde28 : SUCCESS in 5m 29s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a5113f7792d94c5692c973cc7fb5d010 : SUCCESS in 4m 44s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/f235a4f4ddd84ce7ba3e31980e466fb0 : SUCCESS in 40m 53s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/3826509373da41b989ebe9b43f035e8d : SUCCESS in 44m 05s (non-voting)","accounts_in_message":[],"_revision_number":17},{"id":"551c3f3c44d70ea63cd4e1524a0194d99f9b2563","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-25 09:26:22.000000000","message":"Uploaded patch set 18.","accounts_in_message":[],"_revision_number":18},{"id":"21d0ae94926204dafb016bd5af925c7337f0e527","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-25 09:31:35.000000000","message":"Uploaded patch set 19: Patch Set 18 was rebased.","accounts_in_message":[],"_revision_number":19},{"id":"a49273b4b967d2f7324602d678c26567fa19d208","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-25 10:17:40.000000000","message":"Patch Set 19: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9bed0db02b7e4b5782295db7195a57fc : SUCCESS in 3m 41s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/f86a481253cb4600bccf50312ee2975b : SUCCESS in 4m 39s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/f97af72b5d5346958fce95dc2dd3657f : SUCCESS in 3m 21s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/48cbf610bb3746e885b10a5580ae5bed : SUCCESS in 6m 21s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3dd5048f07894915a01ff8870a40c887 : SUCCESS in 4m 57s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/7c965c1a7eb24bdeac13b5e50fa96e0d : SUCCESS in 38m 23s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/4ca74968872641cdba1668d5881117ba : SUCCESS in 37m 49s (non-voting)","accounts_in_message":[],"_revision_number":19},{"id":"c23676e3fdd35863c47ea5364235e815b1d9b82f","author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"date":"2019-09-26 07:59:56.000000000","message":"Patch Set 19: Code-Review+2\n\nLGTM. \nThanks for the great efforts!\ngood for now, but maybe we need more test in the future","accounts_in_message":[],"_revision_number":19},{"id":"44565df924d1cbd10d7d4dc5ed313f9307ae8951","author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"date":"2019-09-26 08:05:15.000000000","message":"Patch Set 19: Code-Review+2\n\nThanks Shaohe, I have tested it in local env, it works well.","accounts_in_message":[],"_revision_number":19},{"id":"137c9234d314f9d7861ceae54d5ab4eba58bb809","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-26 11:22:56.000000000","message":"Patch Set 19: Code-Review-1\n\nTemporary soft -1, till I finish testing in my env and doing full review.","accounts_in_message":[],"_revision_number":19},{"id":"bd90890505d262d672aa781f8f49e0982ed6963f","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-26 13:15:50.000000000","message":"Patch Set 19:\n\n(1 comment)","accounts_in_message":[],"_revision_number":19},{"id":"62672dfab28d5ada4fb6bc1ff1f4d1aae552160a","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-26 14:29:14.000000000","message":"Uploaded patch set 20.","accounts_in_message":[],"_revision_number":20},{"id":"58cb016af271e09315d016029723b479c135994e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-26 15:24:30.000000000","message":"Patch Set 20: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/65fb270fde98474faeeb1f0c540f3209 : SUCCESS in 4m 08s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/b4df7072b58f481580d500a445874550 : SUCCESS in 4m 04s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/238b88458e3142b39396776c5954c90b : SUCCESS in 2m 51s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/5bac36508ea845609e779d299a17cd85 : SUCCESS in 3m 43s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/58a103c69f0c4b8caf3dd4850ac7ae46 : SUCCESS in 4m 55s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/4ac68dee52cc4d38a27c734af37228f3 : SUCCESS in 39m 33s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/7eff344f51e24f9fb7cfa4eaf94c8dac : SUCCESS in 42m 44s (non-voting)","accounts_in_message":[],"_revision_number":20},{"id":"aec3ce2078be6078c27594848f1f18d049dc92bf","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-27 03:25:14.000000000","message":"Patch Set 20: Code-Review-1\n\n(9 comments)\n\nThis is no doubt a lot of work -- thanks Shaohe. I think it deserves a closer review and should be aimed for RC2.","accounts_in_message":[],"_revision_number":20},{"id":"f6ad1de14121a72860e4b69c9668282ebc2059b3","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 04:02:56.000000000","message":"Patch Set 20:\n\n(1 comment)","accounts_in_message":[],"_revision_number":20},{"id":"a7c45ba4532842f3bcbb064b4aa4b75bd8117132","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 04:07:39.000000000","message":"Patch Set 20:\n\n(9 comments)","accounts_in_message":[],"_revision_number":20},{"id":"bace3b54dd4e386b2da199f1722be7cfa35be530","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-27 04:08:29.000000000","message":"Patch Set 20:\n\n(1 comment)","accounts_in_message":[],"_revision_number":20},{"id":"e93c8b4f66067a259cbbaa9c2c53e4c1618d5e87","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 04:10:02.000000000","message":"Uploaded patch set 21.","accounts_in_message":[],"_revision_number":21},{"id":"a52f3d571101b47b812949f792dd7085c6b71094","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-27 04:10:10.000000000","message":"Patch Set 20:\n\n(1 comment)","accounts_in_message":[],"_revision_number":20},{"id":"17d5714187d3bccc7035d8ade33a0ceaf31c2a8a","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 04:19:05.000000000","message":"Uploaded patch set 22.","accounts_in_message":[],"_revision_number":22},{"id":"21411d8f22a2e95819eda9f959a0f3e4c4adc520","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-27 04:57:07.000000000","message":"Patch Set 22: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bd6aa3de87034246b672e80558ac1eec : FAILURE in 2m 52s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/bd4fa7a8b04448cab8a825067d22e548 : FAILURE in 3m 54s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/dd745cd030d6466d86d67a4c29f1391c : FAILURE in 3m 16s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/0c4528f5bbe64b2c9252dde6ea5e5477 : FAILURE in 3m 44s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7a573a3d618b485bbe22808040acc04d : SUCCESS in 3m 55s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/39df88852d794de29e64381dc553f58a : SUCCESS in 32m 43s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/c1ccadb7ee6c47019a87563e0254c802 : SUCCESS in 31m 33s (non-voting)","accounts_in_message":[],"_revision_number":22},{"id":"dd9f245f43240d32997b8816b221d23c04730a67","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 10:15:35.000000000","message":"Uploaded patch set 23.","accounts_in_message":[],"_revision_number":23},{"id":"6a698a8ac44638149318d28e52611c1020e7dad7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-27 11:04:37.000000000","message":"Patch Set 23: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/26cea1154274410c8256de94038a3552 : SUCCESS in 4m 48s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/c58138649233460b9183a2b0d22ddaf3 : SUCCESS in 3m 55s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/0c1803e11e9f4538aa125c902d4d423d : FAILURE in 5m 35s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/96e911eec06e4e61bea8ff3e5414ad9a : FAILURE in 4m 08s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/24857958f7504df4bef19d990b909d46 : SUCCESS in 4m 30s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/d8a3c58a3bf34ba9946a3374019d4280 : SUCCESS in 42m 00s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/faadf423b47d4fa0acd5cea2fc8a6914 : SUCCESS in 30m 47s (non-voting)","accounts_in_message":[],"_revision_number":23},{"id":"f06445dfb71b558e82c1d3a91bb9c0614bfafd5d","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 11:29:04.000000000","message":"Uploaded patch set 24.","accounts_in_message":[],"_revision_number":24},{"id":"140183d9d6f07d729f2397b5bd3a400a349747bf","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-27 12:08:33.000000000","message":"Patch Set 24: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3e53ed98ad654f2296171017b6e55756 : SUCCESS in 3m 37s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/02763ee443fc4524a1396a8486d41496 : SUCCESS in 3m 24s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/e2b6bfc3a237400cb129b5619952c979 : SUCCESS in 3m 27s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/6a88c832b58e47478c755211900fc847 : SUCCESS in 4m 12s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/452b2df8efca47c490cfc745bd31b813 : SUCCESS in 5m 34s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/a68e9a6332054389803fef0c48e0c629 : SUCCESS in 33m 52s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/38726b3450b34855b745cf7da6a37639 : SUCCESS in 30m 00s (non-voting)","accounts_in_message":[],"_revision_number":24},{"id":"0d879c8dcf345151e1fbae4c3f2c22cc56da724e","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-09-27 14:16:44.000000000","message":"Patch Set 24: Code-Review-1\n\n(12 comments)\n\nSoft -1. This is distinctly better than before.","accounts_in_message":[],"_revision_number":24},{"id":"bc0a7981973a9fc7470564a38241a8d74615021b","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 15:05:59.000000000","message":"Uploaded patch set 25.","accounts_in_message":[],"_revision_number":25},{"id":"ff91f56cfbe287c282afdff5873ae471a726b8e6","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 15:10:41.000000000","message":"Uploaded patch set 26.","accounts_in_message":[],"_revision_number":26},{"id":"af4a36fb0b9c508470251984eb1b21808e231876","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-09-27 15:10:56.000000000","message":"Patch Set 24:\n\n(12 comments)","accounts_in_message":[],"_revision_number":24},{"id":"b433899b4fca905a92dff800dc86b608713d008d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-09-27 15:49:04.000000000","message":"Patch Set 26: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/761f25bf1fa744e58c0f4113b3e6eb8a : SUCCESS in 3m 57s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/79bbcc64ca8b4674b890d5b51168b57d : SUCCESS in 3m 47s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/072f60e4851d491d8b2a9fc6cfd41e40 : SUCCESS in 3m 19s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/b00fe6e5d26a4cf68afe6637d6c5c6be : SUCCESS in 5m 20s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ee311361dfbb4b81b8c9d95cb4ee4a06 : SUCCESS in 4m 18s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/fa99025f906d4f948166e626496b392d : SUCCESS in 32m 10s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/0ebf91453a2f46bf8659a956be5b75f0 : SUCCESS in 31m 34s (non-voting)","accounts_in_message":[],"_revision_number":26},{"id":"84f318753dec7ba793adc162a24e285c59a91198","author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"date":"2019-09-30 07:48:04.000000000","message":"Patch Set 26: Code-Review+2\n\nLGTM.","accounts_in_message":[],"_revision_number":26},{"id":"48fe0ff3aa918f795d264018feda334fc356f7ff","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-10-04 18:42:36.000000000","message":"Patch Set 26: Code-Review+2\n\nWe need another +2, or at least +1, from a non-Intel reviewer.","accounts_in_message":[],"_revision_number":26},{"id":"74c0b4f85dbee3fc2b2dc9a963332638618402df","author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"date":"2019-10-08 04:17:35.000000000","message":"Patch Set 26: Workflow+1","accounts_in_message":[],"_revision_number":26},{"id":"8a0181ae2e02dbde5930c751b8500ab6a0852888","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 04:17:49.000000000","message":"Patch Set 26: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":26},{"id":"a52a3b4ebd1dc076c27ed1f84bce116a2b8dca83","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 04:59:53.000000000","message":"Patch Set 26: Verified-2\n\nBuild failed (gate pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/041c2bd0599a48b19893cd3ebeba07cd : SUCCESS in 3m 35s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/779b8c25f4d647be90820641b4fb1d3d : SUCCESS in 4m 25s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/4e7bd0a37d6b4e28b66a99847bb89617 : SUCCESS in 4m 26s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/4fcf9328208e4d7fbff97de4cb23c3c6 : TIMED_OUT in 40m 52s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9516160ef72e47a5978761f42fa6345f : SUCCESS in 3m 49s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/3a7df7424fba49519f24d776731e0c64 : SUCCESS in 30m 42s (non-voting)","accounts_in_message":[],"_revision_number":26},{"id":"0e2392eec33d1c8614f5f41b45dfb3a8af4fd761","author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"date":"2019-10-08 05:07:01.000000000","message":"Patch Set 26:\n\nrecheck","accounts_in_message":[],"_revision_number":26},{"id":"f69c8d4ae5d04d5e8c9499b9e628b85fe88f9f29","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 05:43:35.000000000","message":"Patch Set 26: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1d4703aee5044f31a87a7d42701c4b6f : SUCCESS in 2m 57s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/f62a4e252f214b2eb78cca4701512bf6 : SUCCESS in 2m 52s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/62f3e18106814b828369c74c931ef8cf : SUCCESS in 3m 05s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/b243ef50ca56446fb88201408b841a91 : SUCCESS in 3m 20s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a9a2da34620343609bbc31b2693bda15 : SUCCESS in 3m 34s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/12d577cc1e0a4a09affbd57733b457ab : SUCCESS in 30m 32s (non-voting)\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/4b7b2c29b855472aafa899f0eb9487a1 : SUCCESS in 29m 33s (non-voting)","accounts_in_message":[],"_revision_number":26},{"id":"bc21aff7ff295c732278a8715af4f3fc2b838e8d","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 05:43:46.000000000","message":"Patch Set 26: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":26},{"id":"46224ce7d6f605d669faabd2dc0d604e246a42d8","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 06:19:56.000000000","message":"Patch Set 26: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/913f7c0c734345978650208447923125 : SUCCESS in 3m 33s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/4c5058ce45d7497e89680d0da6c224ad : SUCCESS in 4m 18s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/9ca6d2845afa4aa9b849673df505def3 : SUCCESS in 3m 55s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/91ca9e5bab2545238f066f3c97a37690 : SUCCESS in 4m 15s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fd5327e5c69d4bf6bed9ae36f8263861 : SUCCESS in 4m 07s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/aa8441a1d53141dc85bb9c1d9adefa07 : SUCCESS in 33m 01s (non-voting)","accounts_in_message":[],"_revision_number":26},{"id":"2003f49341203e48ef013395b4f2422aefb0d226","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 06:19:57.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":26},{"id":"8eaa0734c23250852f7d223c6145f6f72f542ffb","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-10-08 06:22:00.000000000","message":"Patch Set 26:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/73debdcfaf04456aa097ba74a10a6bee : SUCCESS in 1m 38s","accounts_in_message":[],"_revision_number":26},{"id":"5e036a601e2a33810ab3fd2055a2af64198da820","author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"date":"2019-10-12 07:08:14.000000000","message":"Patch Set 26:\n\nThanks shaohe! I tested this patch with fake driver. No issue about the bind itself, but a question about failure message: When the bindfailed is caused by programming failure, should we let the end user know the reasons? or end user just reports to cloud vendor, let vendor to check the reasons?\nThe following is where the question comes from: I was testing async bind with fake driver and got bind failures. The bindfailure is caused by programming process not a “actual” bindfailure, where the log  shows programming process is stucked for some reason and the ARQ status is set to bindfailure.","accounts_in_message":[],"_revision_number":26},{"id":"abcb66077f28a0a3ee61ee537ed190a9b39ed2f1","author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"date":"2019-10-14 14:58:48.000000000","message":"Patch Set 26:\n\nThis reply is a postscript of workflow +1(which I have given) to indicate that I would like to give a +2 to this patch despite my question.","accounts_in_message":[],"_revision_number":26}],"current_revision_number":26,"current_revision":"d0578cff6ea402f1628c49ca9098eb06fd68b3ce","revisions":{"d1fb5713e55b904e376ba1c29abf9690a3b7cd60":{"kind":"REWORK","_number":1,"created":"2019-09-09 13:28:09.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/1"}}},"commit":{"parents":[{"commit":"6d4393b1a23e49212b7d1abe0744c9c28e693c07","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/6d4393b1a23e49212b7d1abe0744c9c28e693c07"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-09 13:27:39.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d1fb5713e55b904e376ba1c29abf9690a3b7cd60"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d1fb5713e55b904e376ba1c29abf9690a3b7cd60"}]},"branch":"refs/heads/master"},"03a264c61851fd2a8648d0ccb1dffca5eb52e024":{"kind":"REWORK","_number":2,"created":"2019-09-10 10:21:59.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/2"}}},"commit":{"parents":[{"commit":"8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-10 10:21:23.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/03a264c61851fd2a8648d0ccb1dffca5eb52e024"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/03a264c61851fd2a8648d0ccb1dffca5eb52e024"}]},"branch":"refs/heads/master"},"f14db7e48dca2b5271c03d3c6cce6059e4be0fec":{"kind":"REWORK","_number":3,"created":"2019-09-10 10:34:48.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/3"}}},"commit":{"parents":[{"commit":"8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-10 10:34:32.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/f14db7e48dca2b5271c03d3c6cce6059e4be0fec"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/f14db7e48dca2b5271c03d3c6cce6059e4be0fec"}]},"branch":"refs/heads/master"},"7c9fbeea9daa46183d74d978ccde3a7271e3c889":{"kind":"REWORK","_number":4,"created":"2019-09-10 11:52:46.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/4"}}},"commit":{"parents":[{"commit":"8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-10 11:43:07.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7c9fbeea9daa46183d74d978ccde3a7271e3c889"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7c9fbeea9daa46183d74d978ccde3a7271e3c889"}]},"branch":"refs/heads/master"},"7ecebbfcfc794d7ba41dc7987d1ed0656bd98f60":{"kind":"REWORK","_number":5,"created":"2019-09-10 13:27:13.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/5"}}},"commit":{"parents":[{"commit":"8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-10 13:26:55.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7ecebbfcfc794d7ba41dc7987d1ed0656bd98f60"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7ecebbfcfc794d7ba41dc7987d1ed0656bd98f60"}]},"branch":"refs/heads/master"},"d1cb9f031920cad8d0877944ff24b5acec3987b0":{"kind":"REWORK","_number":6,"created":"2019-09-10 14:37:21.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/6"}}},"commit":{"parents":[{"commit":"8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-10 14:36:06.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d1cb9f031920cad8d0877944ff24b5acec3987b0"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d1cb9f031920cad8d0877944ff24b5acec3987b0"}]},"branch":"refs/heads/master"},"4639a1b0eed31d64e39b8dff6cd5a91f25c3db26":{"kind":"REWORK","_number":7,"created":"2019-09-11 10:06:54.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/7"}}},"commit":{"parents":[{"commit":"8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f","subject":"P8: Changes for programming.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8c15a486b0a32f3f6eae5ad78e12cc6b64f71c0f"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"ShaoHe Feng","email":"shaohe.feng@intel.com","date":"2019-09-11 10:06:27.000000000","tz":0},"subject":"[WIP] async job","message":"[WIP] async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4639a1b0eed31d64e39b8dff6cd5a91f25c3db26"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4639a1b0eed31d64e39b8dff6cd5a91f25c3db26"}]},"branch":"refs/heads/master"},"960197421619aed8a918ec6cd81e59aac6e03089":{"kind":"REWORK","_number":8,"created":"2019-09-13 11:56:53.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/8"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-13 11:56:20.000000000","tz":0},"subject":"async job","message":"async job\n\nThis patch is still WIP.\nTwo many opens for async job.\n\nSo just commit a draft for RFC.\nIgnore pep8 errors or other errors, will improve it later.\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/960197421619aed8a918ec6cd81e59aac6e03089"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/960197421619aed8a918ec6cd81e59aac6e03089"}]},"branch":"refs/heads/master"},"249f37be5e3034455f782b10a8f91c33e328f706":{"kind":"REWORK","_number":9,"created":"2019-09-13 20:24:27.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/9"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-13 20:23:22.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\nTwo many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\nMonitor notify:\napt-get install httpry  # yum install httpry\nNOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\nHOST\u003d${NOVAURL##*//}\nHOST\u003d${HOST%%/*}\nsudo httpry \"tcp dst port 80 and src host $HOST\"\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/249f37be5e3034455f782b10a8f91c33e328f706"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/249f37be5e3034455f782b10a8f91c33e328f706"}]},"branch":"refs/heads/master"},"2eeec8cbe21bd4d33877e03b4d672eff3b2981c7":{"kind":"REWORK","_number":10,"created":"2019-09-13 20:27:15.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/10"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-13 20:26:01.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\nTwo many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\nMonitor notify:\napt-get install httpry  # yum install httpry\nNOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\nHOST\u003d${NOVAURL##*//}\nHOST\u003d${HOST%%/*}\nsudo httpry \"tcp dst port 80 and src host $HOST\"\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2eeec8cbe21bd4d33877e03b4d672eff3b2981c7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2eeec8cbe21bd4d33877e03b4d672eff3b2981c7"}]},"branch":"refs/heads/master"},"9d6c4cb7ec09f5b0d618292a7bd411dbcdfd57bb":{"kind":"REWORK","_number":11,"created":"2019-09-14 02:06:30.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/11"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"ShaoHe Feng","email":"shaohe.feng@intel.com","date":"2019-09-14 02:06:26.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nDo not support rollback for update_provider\nDo not support multi thread in agent.\nTwo many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\nMonitor notify:\napt-get install httpry  # yum install httpry\nNOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\nHOST\u003d${NOVAURL##*//}\nHOST\u003d${HOST%%/*}\nsudo httpry \"tcp dst port 80 and src host $HOST\"\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/9d6c4cb7ec09f5b0d618292a7bd411dbcdfd57bb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/9d6c4cb7ec09f5b0d618292a7bd411dbcdfd57bb"}]},"branch":"refs/heads/master"},"c088f63d0a42691972fb8c43dfd16c8dbbac2380":{"kind":"REWORK","_number":12,"created":"2019-09-14 21:17:06.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/12"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-14 21:16:22.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027BindStarted\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 async bind jobs finish\n    successfully.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill Two many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/c088f63d0a42691972fb8c43dfd16c8dbbac2380"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/c088f63d0a42691972fb8c43dfd16c8dbbac2380"}]},"branch":"refs/heads/master"},"4d3c6b59b0267ec020c893bfaa1be3b70f6cbf83":{"kind":"NO_CODE_CHANGE","_number":13,"created":"2019-09-15 01:44:12.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/13"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"ShaoHe Feng","email":"shaohe.feng@intel.com","date":"2019-09-15 01:44:03.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind job in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbound.\n  For multi jobs (such as a user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback at present, such as cancel update_provider or program.\n  Do not support multi thread in cyborg-agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 async bind jobs finish\n    successfully.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4d3c6b59b0267ec020c893bfaa1be3b70f6cbf83"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4d3c6b59b0267ec020c893bfaa1be3b70f6cbf83"}]},"branch":"refs/heads/master"},"13f937063f8e7eed605d14a04c4e1fef24ed23e3":{"kind":"REWORK","_number":14,"created":"2019-09-15 01:53:54.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/14","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/14","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/14"}}},"commit":{"parents":[{"commit":"2c50b9fd507f53a9fd745140cf86ee1d65756b54","subject":"Merge \"Notify Nova when all ARQs are resolved for an instance.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2c50b9fd507f53a9fd745140cf86ee1d65756b54"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-15 01:50:59.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind job in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbound.\n  For multi jobs (such as a user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback at present, such as cancel update_provider or program.\n  Do not support multi thread in cyborg-agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All async bind jobs of ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 has\n    finished successfully.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 3`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/13f937063f8e7eed605d14a04c4e1fef24ed23e3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/13f937063f8e7eed605d14a04c4e1fef24ed23e3"}]},"branch":"refs/heads/master"},"64bceb2511c7d53ba3c328b37147431d874839ae":{"kind":"REWORK","_number":15,"created":"2019-09-18 04:53:58.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/15","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/15","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/15 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/15 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/15 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/15"}}},"commit":{"parents":[{"commit":"68dc701a4f7e6fda130348c0ff0f416dc5bcc62d","subject":"Merge \"Make ResourceNotFound as NotFound exception\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/68dc701a4f7e6fda130348c0ff0f416dc5bcc62d"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-18 04:52:51.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/64bceb2511c7d53ba3c328b37147431d874839ae"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/64bceb2511c7d53ba3c328b37147431d874839ae"}]},"branch":"refs/heads/master"},"1c09a895907aae7fb990f5217999cf0f11a336ea":{"kind":"REWORK","_number":16,"created":"2019-09-18 06:54:27.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/16","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/16","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/16 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/16 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/16 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/16"}}},"commit":{"parents":[{"commit":"68dc701a4f7e6fda130348c0ff0f416dc5bcc62d","subject":"Merge \"Make ResourceNotFound as NotFound exception\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/68dc701a4f7e6fda130348c0ff0f416dc5bcc62d"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-18 06:53:35.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/1c09a895907aae7fb990f5217999cf0f11a336ea"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/1c09a895907aae7fb990f5217999cf0f11a336ea"}]},"branch":"refs/heads/master"},"c0ded3ed810afeb1c58c7ccb7c48ba1b7cbfd562":{"kind":"REWORK","_number":17,"created":"2019-09-25 07:36:36.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/17","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/17","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/17 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/17 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/17 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/17"}}},"commit":{"parents":[{"commit":"ee023eaf7a5f40c92e9ecf08d9863b9fa2003d14","subject":"Merge \"remove rootwrap in cyborg\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/ee023eaf7a5f40c92e9ecf08d9863b9fa2003d14"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-25 07:35:08.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/c0ded3ed810afeb1c58c7ccb7c48ba1b7cbfd562"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/c0ded3ed810afeb1c58c7ccb7c48ba1b7cbfd562"}]},"branch":"refs/heads/master"},"30be882dfc633622fdca5a74fb49ce1820a9e3a0":{"kind":"REWORK","_number":18,"created":"2019-09-25 09:26:22.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/18","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/18","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/18 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/18 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/18 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/18"}}},"commit":{"parents":[{"commit":"ee023eaf7a5f40c92e9ecf08d9863b9fa2003d14","subject":"Merge \"remove rootwrap in cyborg\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/ee023eaf7a5f40c92e9ecf08d9863b9fa2003d14"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-25 09:24:27.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/30be882dfc633622fdca5a74fb49ce1820a9e3a0"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/30be882dfc633622fdca5a74fb49ce1820a9e3a0"}]},"branch":"refs/heads/master"},"55c8c74257420cfaab5192999e62fb412dcf7039":{"kind":"NO_CHANGE","_number":19,"created":"2019-09-25 09:31:35.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/19","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/19","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/19 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/19 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/19 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/19"}}},"commit":{"parents":[{"commit":"ee023eaf7a5f40c92e9ecf08d9863b9fa2003d14","subject":"Merge \"remove rootwrap in cyborg\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/ee023eaf7a5f40c92e9ecf08d9863b9fa2003d14"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-25 09:30:10.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/55c8c74257420cfaab5192999e62fb412dcf7039"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/55c8c74257420cfaab5192999e62fb412dcf7039"}]},"branch":"refs/heads/master"},"9207d34f85ff863f6c68fcfcc73cc240f9278c30":{"kind":"REWORK","_number":20,"created":"2019-09-26 14:29:14.000000000","uploader":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"ref":"refs/changes/05/681005/20","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/20","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/20 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/20 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/20 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/20"}}},"commit":{"parents":[{"commit":"dcbde784cde358a293b7528c4589dd5ff1d60997","subject":"Merge \"Program FPGAs with oslo.privsep.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/dcbde784cde358a293b7528c4589dd5ff1d60997"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","date":"2019-09-26 14:28:27.000000000","tz":-420},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/9207d34f85ff863f6c68fcfcc73cc240f9278c30"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/9207d34f85ff863f6c68fcfcc73cc240f9278c30"}]},"branch":"refs/heads/master"},"45c3b0bbf13a3e99ff84bddd0c47f8ddc41b0881":{"kind":"REWORK","_number":21,"created":"2019-09-27 04:10:02.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/21","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/21","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/21 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/21 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/21 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/21"}}},"commit":{"parents":[{"commit":"7e665ea2e3d885b81e07a5f75dccef7be5577a56","subject":"Fix delete arq 403 failed and skip non-admin arq policy check","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7e665ea2e3d885b81e07a5f75dccef7be5577a56"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-27 04:08:26.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/45c3b0bbf13a3e99ff84bddd0c47f8ddc41b0881"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/45c3b0bbf13a3e99ff84bddd0c47f8ddc41b0881"}]},"branch":"refs/heads/master"},"d02bb7a9da767cc4249dffe5ee4a2120ea3934d5":{"kind":"REWORK","_number":22,"created":"2019-09-27 04:19:05.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/22","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/22","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/22 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/22 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/22 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/22"}}},"commit":{"parents":[{"commit":"7e665ea2e3d885b81e07a5f75dccef7be5577a56","subject":"Fix delete arq 403 failed and skip non-admin arq policy check","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7e665ea2e3d885b81e07a5f75dccef7be5577a56"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-27 04:16:44.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d02bb7a9da767cc4249dffe5ee4a2120ea3934d5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d02bb7a9da767cc4249dffe5ee4a2120ea3934d5"}]},"branch":"refs/heads/master"},"4b0898859458fcc724e514c7b65f9288d5997cf6":{"kind":"REWORK","_number":23,"created":"2019-09-27 10:15:35.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/23","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/23","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/23 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/23 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/23 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/23"}}},"commit":{"parents":[{"commit":"7e665ea2e3d885b81e07a5f75dccef7be5577a56","subject":"Fix delete arq 403 failed and skip non-admin arq policy check","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7e665ea2e3d885b81e07a5f75dccef7be5577a56"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-27 10:14:00.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4b0898859458fcc724e514c7b65f9288d5997cf6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4b0898859458fcc724e514c7b65f9288d5997cf6"}]},"branch":"refs/heads/master"},"8d3ab26d71c8d93a771ff271b5ef83f0476d5ba7":{"kind":"REWORK","_number":24,"created":"2019-09-27 11:29:04.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/24","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/24","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/24 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/24 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/24 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/24"}}},"commit":{"parents":[{"commit":"7e665ea2e3d885b81e07a5f75dccef7be5577a56","subject":"Fix delete arq 403 failed and skip non-admin arq policy check","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7e665ea2e3d885b81e07a5f75dccef7be5577a56"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-27 11:27:27.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8d3ab26d71c8d93a771ff271b5ef83f0476d5ba7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/8d3ab26d71c8d93a771ff271b5ef83f0476d5ba7"}]},"branch":"refs/heads/master"},"a90f5de962a2bfbafe9248b29b7775a8333a71b4":{"kind":"REWORK","_number":25,"created":"2019-09-27 15:05:59.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/25","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/25","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/25 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/25 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/25 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/25"}}},"commit":{"parents":[{"commit":"7e665ea2e3d885b81e07a5f75dccef7be5577a56","subject":"Fix delete arq 403 failed and skip non-admin arq policy check","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7e665ea2e3d885b81e07a5f75dccef7be5577a56"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-27 15:04:00.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/a90f5de962a2bfbafe9248b29b7775a8333a71b4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/a90f5de962a2bfbafe9248b29b7775a8333a71b4"}]},"branch":"refs/heads/master"},"d0578cff6ea402f1628c49ca9098eb06fd68b3ce":{"kind":"REWORK","_number":26,"created":"2019-09-27 15:10:41.000000000","uploader":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"ref":"refs/changes/05/681005/26","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/05/681005/26","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/26 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/26 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/05/681005/26 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/05/681005/26"}}},"commit":{"parents":[{"commit":"7e665ea2e3d885b81e07a5f75dccef7be5577a56","subject":"Fix delete arq 403 failed and skip non-admin arq policy check","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7e665ea2e3d885b81e07a5f75dccef7be5577a56"}]}],"author":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-08-29 17:36:19.000000000","tz":0},"committer":{"name":"Shaohe Feng","email":"shaohe.feng@intel.com","date":"2019-09-27 15:06:47.000000000","tz":0},"subject":"async job for bind","message":"async job for bind\n\nThe currently design:\n  Only support bind async.\n  Only state in [\u0027Initial\u0027,\u0027Unbound\u0027], bind process can start.\n  If a bind in process, it will be not stoped by deleting or unbind api.\n  But the last state will be deleting or unbind.\n  For multi jobs (such as user request 2 FPGAs), only all jobs are success,\n  the ARQ state is \"Bound\". Any jobs failed, the ARQ state will be \"BindFailed\"\n  Do not support rollback for update_provider\n  Do not support multi thread in agent.\n  If bind successfully, the info level log will show details as follow:\n    1. All ARQs [\u00271d9f17a6-0b94-4838-ae55-cb49f5727a81\u0027] async bind jobs\n    has finished.\n    2. Attach handle(d6442f0a-21f6-4161-bb74-45c66ba1f345) for\n    ARQ(1d9f17a6-0b94-4838-ae55-cb49f5727a81) successfully.\n    3. Update ARQ 1d9f17a6-0b94-4838-ae55-cb49f5727a81 state to \"Bound\"\n    successfully.\n  If bind jobs timeout, it will output log as follow:\n    ERROR cyborg.accelerator.common.handler [-] Traceback (most recent call last):\n      File \"./cyborg/common/utils.py\", line 283, in future_iterator\n        yield (f.result(end_time - time.time()),\n      File \"/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py\", line 464, in result\n        raise TimeoutError()\n    TimeoutError\n\nStill too many opens for async job.\n\nTest this patch:\n1. Get auth token\nAUTH\u003d\"X-Auth-Token: $(openstack token issue -c id -f value)\"\n\n2. Get resource provider info\nRP_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nARRAY\u003d`OS_PLACEMENT_API_VERSION\u003d1.18 openstack resource provider trait \\\n    list $RP_UUID -c name -f value`\nDEVICE_TRAIT\u003d`head -n 1 \u003c\u003c\u003c $ARRAY`\nFN_TRAIT\u003d`grep FUNCTION_ID \u003c\u003c\u003c $ARRAY`\nFUN_ID\u003d${FN_TRAIT##*_}\nREGION_TRAIT\u003d`grep FPGA_REGION \u003c\u003c\u003c $ARRAY`\nREGION_TYPE_ID\u003d${REGION_TRAIT##*_}\n\n3. upload a image\nBIT_NAME\u003dfpga_bts_1\ntouch samples.tar.gz\nBIT_FILE\u003dsamples.tar.gz\nopenstack image create --tag FPGA \\\n    --property REGION_TYPE_ID\u003d\"accel:region_type_id\u003d${REGION_TYPE_ID}\" \\\n    --property accel:function_id\u003d$FUN_ID --file $BIT_FILE $BIT_NAME\nBITSTREAM_ID\u003d`openstack image list -c ID -c Name -f value | \\\n    grep $BIT_NAME |awk \u0027{print $1}\u0027`\nopenstack image list -c ID -f value --property accel:function_id\u003d$FUN_ID\n\n4. create device profile\nCYURL\u003d`openstack endpoint list --service cyborg \\\n    --interface \"public\" -c \"URL\" -f value`\nCTYPE\u003d\"Content-Type: application/json\"\nDEVPROF_NAME\u003dafaas_example_1\n$RESOURCES\u003dFPGA\nBODY\u003d\"[{ \\\"name\\\": \\\"$DEVPROF_NAME\\\",\n  \\\"groups\\\": [\n      {\\\"resources:$RESOURCES\\\": \\\"1\\\",\n       \\\"trait:$DEVICE_TRAIT\\\": \\\"required\\\",\n       \\\"trait:$FN_TRAIT\\\": \\\"required\\\",\n       \\\"accel:bitstream_id\\\": \\\"$BITSTREAM_ID\\\"\n      }\n  ]\n}]\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" $CYURL/device_profiles\n\n5. create an ARQ\nBODY\u003d\"{\\\"device_profile_name\\\": \\\"$DEVPROF_NAME\\\"}\"\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" $CYURL/accelerator_requests | \\\n    grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4 | tail -n 1`\nARQ_UUID\u003d`curl -s -H \"$CTYPE\" -H \"$AUTH\" POST -d \"$BODY\" \\\n    $CYURL/accelerator_requests | grep \u0027\"uuid\": \".*?\"\u0027 -oP |cut -d \u0027\"\u0027 -f 4`\n\n6. bind ARQ\nNODENAME\u003d`openstack hypervisor list -c \"Hypervisor Hostname\" -f value`\nPR_UUID\u003d`openstack resource provider list -f value | \\\n    grep intel-fpga-dev |head -n 1 |awk \u0027{print $1}\u0027`\nINS_UUID\u003d`uuidgen`\nBODY\u003d\"{\\\"$ARQ_UUID\\\": [\n     {\\\"path\\\": \\\"/hostname\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$NODENAME\\\"},\n     {\\\"path\\\": \\\"/device_rp_uuid\\\", \\\"op\\\": \\\"add\\\",\n            \\\"value\\\": \\\"$PR_UUID\\\"},\n     {\\\"path\\\": \\\"/instance_uuid\\\", \\\"op\\\": \\\"add\\\", \\\"value\\\": \\\"$INS_UUID\\\"}\n  ]\n}\"\ncurl -s -H \"$CTYPE\" -H \"$AUTH\" -X PATCH -d \"$BODY\" \\\n    -w \"%{http_code}\\n\" $CYURL/accelerator_requests\n\n7. Monitor notify\nubuntu:\n  $ apt-get install httpry\ncentos:\n  $ yum install httpry\n$ NOVAURL\u003d`openstack endpoint list --service nova \\\n    --interface \"public\" -c \"URL\" -f value`\n$ HOST\u003d${NOVAURL##*//}\n$ HOST\u003d${HOST%%/*}\nAll in One evn:\n  $ sudo httpry -i lo -m POST  \"tcp dst port 80 and src host $HOST\"\nMulti host evn:\n  $ sudo httpry -m POST  \"tcp dst port 80 and src host $HOST\"\n\nyou can also check the log.\nif anything wrong, it will output log as follow:\n2019-09-14 14:21:12.353 41349 ERROR cyborg.common.utils [-] Traceback (most recent call last):\n  File \"./cyborg/common/utils.py\", line 387, in _impl\n    output \u003d method(self, *args, **kwargs)\n  File \"./cyborg/accelerator/common/handler.py\", line 234, in all_arq_bind_status_sync\n  File \"./cyborg/accelerator/common/handler.py\", line 202, in bind_notify\n  File \"./cyborg/common/nova_client.py\", line 56, in notify_binding\n    result \u003d self._send_events(events)\n  File \"./cyborg/common/nova_client.py\", line 50, in _send_events\n    (events, response.status_code, response.text))\nException: Failed to send events [{\u0027status\u0027: \u0027completed\u0027, \u0027tag\u0027: u\u0027afaas_example_1\u0027, \u0027name\u0027: \u0027accelerator-requests-bound\u0027, \u0027server_uuid\u0027: u\u00270be7e70f-710d-4ecf-b480-911c53b565cf\u0027}]: HTTP 404: {\"itemNotFound\": {\"message\": \"No instances found for any event\", \"code\": 404}}\n\nChange-Id: I4e7d14e271aa26f19da3605b20cb4fd72eef4312\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d0578cff6ea402f1628c49ca9098eb06fd68b3ce"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/d0578cff6ea402f1628c49ca9098eb06fd68b3ce"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
