)]}'
{"id":"openstack%2Foslo.vmware~997269","triplet_id":"openstack%2Foslo.vmware~master~I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b","project":"openstack/oslo.vmware","branch":"master","attention_set":{"24434":{"account":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"last_update":"2026-07-15 15:14:25.000000000","reason":"A robot voted negatively on a label"},"9816":{"account":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"last_update":"2026-07-15 13:15:26.000000000","reason":"\u003cGERRIT_ACCOUNT_24434\u003e replied on the change","reason_account":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"}},"9708":{"account":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"last_update":"2026-07-15 11:37:11.000000000","reason":"\u003cGERRIT_ACCOUNT_24434\u003e replied on the change","reason_account":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"}}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b","subject":"Replace loopingcall.RetryDecorator with tenacity retry","status":"NEW","created":"2026-07-14 18:11:17.000000000","updated":"2026-07-23 08:48:12.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":7,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a68a386a5d51b404950b6942b6c5d9562c3d6e9c","_number":997269,"virtual_id_number":997269,"owner":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-07-23 08:48:12.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"}],"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":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"}],"values":{"-2":"Do Not Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-07-14 18:33:53.000000000","updated_by":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"reviewer":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"state":"CC"},{"updated":"2026-07-14 19:47:46.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"},{"updated":"2026-07-15 11:37:11.000000000","updated_by":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"reviewer":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"state":"REVIEWER"},{"updated":"2026-07-16 13:43:34.000000000","updated_by":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"reviewer":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"state":"CC"}],"messages":[{"id":"e3a13cc48efa5b3452902010ac36e983e6e5a5a6","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-14 18:11:17.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"df544c52111acde1f5354b03fcedb65a2bc0058b","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-14 18:11:37.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"4fe09a02e8e52252fd5b6b9c6e04768f6a93056c","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-14 18:14:58.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"9465c242338cd4c4e86979466644eb180ff06d27","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-14 18:16:09.000000000","message":"Uploaded patch set 4: Commit message was updated.","accounts_in_message":[],"_revision_number":4},{"id":"8ca40c2205e770caf5395e0181e2fceb35dd2ee6","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-14 18:17:25.000000000","message":"Uploaded patch set 5: Commit message was updated.","accounts_in_message":[],"_revision_number":5},{"id":"2a173a75351ff3716cbb9dd757d93de86cafc669","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-14 18:18:41.000000000","message":"Uploaded patch set 6: Commit message was updated.","accounts_in_message":[],"_revision_number":6},{"id":"390fbfc84511f347a02901d179037aef840f270a","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2026-07-14 18:33:53.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"ff65efe7cd6bacd0715c27efe5476eacc5e9a483","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-14 19:47:46.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6f0637d248ca46dc8c0a5b56cf21f8cc\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/46728838a2b24440866111b631a13e4b : SUCCESS in 1h 20m 50s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/403315add54b4076889ac1642e9d1eab : SUCCESS in 5m 20s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/cc1cd6bc840d482aa113dfe215a56858 : SUCCESS in 3m 52s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a0c2b37746954d70b8a416b6493659e2 : SUCCESS in 3m 48s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/d079710d89624015ad63309aeb2febd6 : SUCCESS in 5m 39s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/97f795fe6ca345b2a5480d78a92f9748 : FAILURE in 11m 25s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e18a4dba30ef4ba493c78f025e313458 : SUCCESS in 4m 20s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/8e047e1c845349b0a56e09b3daafa6dd : SUCCESS in 3m 43s","accounts_in_message":[],"_revision_number":6},{"id":"bd59652f464a6911fb11b3ac5a8ba268a8c67029","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 05:04:13.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"ccf4e3fd69b57e3af854ab7a5b9c21d61c077899","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 05:05:52.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":7},{"id":"7d7005f49f755253e721a992cff12ec6d83f45ab","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 05:09:13.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"9b86be197b7470b26536dc626335872d02d3ef26","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 05:14:02.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"28599b088ebb29f2f4f14e4fccd95dd95d1b12fe","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-15 06:15:50.000000000","message":"Patch Set 9: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/02a7adc6a0b143e0a04966e72402236a\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/42e13366090a4c379f81054b56d369ab : SUCCESS in 2m 49s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/a778b5fed9f549dfa9953a4be6a2113e : SUCCESS in 1h 01m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/78298b3754c649048e1ab47b7f6f9a4d : FAILURE in 2m 55s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/927fa1362c7640e786997a971653d003 : SUCCESS in 2m 49s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/060c8d186cfe406892655df38dcd5d7b : SUCCESS in 2m 43s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/9045675ba81945f68b92ae2cc3fc920c : SUCCESS in 3m 25s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/0e9eacfb6ae541bb95babf0db6023d1c : FAILURE in 5m 53s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7b0573262ef64d469ec2a529b180653d : SUCCESS in 3m 31s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/2f034dbb5be04ac296835b8a4ba0b7a6 : SUCCESS in 2m 53s","accounts_in_message":[],"_revision_number":9},{"id":"4ff81ba630b8cf714bae4cd9eb7bc19e0856ff90","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 07:26:48.000000000","message":"Uploaded patch set 10.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":10},{"id":"c33d2046cdf1fc5303fc39656b5fec3321240a98","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-15 08:11:20.000000000","message":"Patch Set 10: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d01574863f8a49219aa9623cf3db683f\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/649e45bfec9b40e5accd3fb814966ed3 : SUCCESS in 2m 05s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/fba08b5449fb4a5a8f6792051cc4997f : SUCCESS in 43m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/db8ad368584a423aa552194008db75db : SUCCESS in 4m 37s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/2bab9f4fd7ed4d91ac1ba47de5a519fc : SUCCESS in 3m 35s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/6d78ce9b7a5749a1acd408e0f111b3a6 : SUCCESS in 3m 19s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/12406a2c4d2e44749a1174e0a325370b : SUCCESS in 3m 56s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/8ceabfa7e2aa46de9327639a99284c92 : FAILURE in 5m 20s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c1227ee023ea46998cec871b2c8630a0 : SUCCESS in 5m 07s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0fe20f4253924db2b6e8385070c5903a : SUCCESS in 2m 20s","accounts_in_message":[],"_revision_number":10},{"id":"d02cdc95d8b504789529c59453f8b16e42bcdfd9","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 11:37:11.000000000","message":"Patch Set 10:\n\nThis change is ready for review.","accounts_in_message":[],"_revision_number":10},{"id":"29447641b07aa0dcf8a27627fcbc19392faab80f","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 11:52:05.000000000","message":"Patch Set 10:\n\n(1 comment)","accounts_in_message":[],"_revision_number":10},{"id":"6f6cb17d1b3d31e8364fb749475126ef7e8cbbe6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 12:29:03.000000000","message":"Patch Set 11: Commit message was updated.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":11},{"id":"332ef1a0f333a32ac6c61dc65580f2d313fd5a5a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 13:11:31.000000000","message":"Uploaded patch set 12.","accounts_in_message":[],"_revision_number":12},{"id":"23d3f3a02732d362ca3fbd841e4bf77cfe18579e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 13:11:56.000000000","message":"Patch Set 13: Commit message was updated.","accounts_in_message":[],"_revision_number":13},{"id":"25d69824ae1b984b6a431fffd0cc750e0c27fca5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 13:13:56.000000000","message":"Uploaded patch set 14.","accounts_in_message":[],"_revision_number":14},{"id":"d8391c53388fe496f60d8367e241be675bf3c0c2","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-15 13:15:26.000000000","message":"Patch Set 14:\n\n(2 comments)","accounts_in_message":[],"_revision_number":14},{"id":"5ec1ccde1decb9691e1b80cc58432252b30e172f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-15 15:14:25.000000000","message":"Patch Set 14: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/97960ba2cb1840569de26ababcaf26b0\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/b722d5212b094c69ab4bfa925bfcc7e1 : SUCCESS in 2m 13s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/3e2de75c80934cfa96b1913522b6a125 : SUCCESS in 1h 53m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9898dce17f2f42b48c501deece755318 : FAILURE in 3m 10s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/99e091c5ef0f4be6a63a62991e89c38d : SUCCESS in 3m 43s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/c77d666acafd42178bd2243f70652c00 : SUCCESS in 5m 30s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b6548d5f80074e9eb16bb57a7854ad43 : SUCCESS in 7m 36s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/0adca97dff2f433db6c54548c130fdee : FAILURE in 12m 02s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f4a7e6ebbcc54a348f4df9fef2ba89cd : SUCCESS in 3m 21s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c00dbc22ea23449bb9a610eb3b89f783 : SUCCESS in 3m 10s","accounts_in_message":[],"_revision_number":14},{"id":"6bf5e1c8dc3f13ad64885d3c804d55550c2bcbca","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 13:43:34.000000000","message":"Patch Set 1:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-tv6mw/index.html\u003e","accounts_in_message":[],"_revision_number":1},{"id":"e6909edd88d4114fccb23fe0619349a66990ab68","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 14:15:28.000000000","message":"Patch Set 2:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-2h7cb/index.html\u003e","accounts_in_message":[],"_revision_number":2},{"id":"c508bd8fa916f90a043613cdb5b89177a83e6836","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 14:47:29.000000000","message":"Patch Set 3:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-dp2j2/index.html\u003e","accounts_in_message":[],"_revision_number":3},{"id":"e6d65da44eb1f97ba4a41f4a1895ad67be46ca5a","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 15:26:12.000000000","message":"Patch Set 4:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-fmgqv/index.html\u003e","accounts_in_message":[],"_revision_number":4},{"id":"fa37576772a0a71ae5f6a241d811650bdc863974","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 16:02:15.000000000","message":"Patch Set 5:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-f69s6/index.html\u003e","accounts_in_message":[],"_revision_number":5},{"id":"cde1b7e3557df668d0da414038bafd9db1d278e4","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 16:35:37.000000000","message":"Patch Set 6:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-kg82f/index.html\u003e","accounts_in_message":[],"_revision_number":6},{"id":"1012d57a3d31b69497b23622f0548f3ea75da6b7","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 22:02:04.000000000","message":"Patch Set 7:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-m7ptf/index.html\u003e","accounts_in_message":[],"_revision_number":7},{"id":"e59a1ef01cb10f4eec9cdce09c0e7a85aab1ac16","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 22:35:15.000000000","message":"Patch Set 8:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-ql9vq/index.html\u003e","accounts_in_message":[],"_revision_number":8},{"id":"cc03f79b68dc409293e63d33c551137f65442539","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-16 23:06:44.000000000","message":"Patch Set 9:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-plttm/index.html\u003e","accounts_in_message":[],"_revision_number":9},{"id":"b0ff7048ba04276066045ec0fe80d3ab79b6f543","tag":"autogenerated:sap-openstack-ci~result","author":{"_account_id":36571,"name":"vmwareapi CI run by SAP","display_name":"vmwareapi CI run by SAP","email":"openstack-ci@sap.com","username":"sap-openstack-ci","status":"CI account for integration tests of the Nova vmwareapi driver","tags":["SERVICE_USER"]},"date":"2026-07-17 01:50:23.000000000","message":"Patch Set 10:\n\nIgnore for now: Test failed. Logs on \u003chttp://openstack-ci-logs.global.cloud.sap/openstack-oslo-vmware-997269-fj8wq/index.html\u003e","accounts_in_message":[],"_revision_number":10},{"id":"ff6ce23efc29554d187d7fb5f233c96c3001447b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"date":"2026-07-23 07:54:09.000000000","message":"Uploaded patch set 15.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":15},{"id":"a68a386a5d51b404950b6942b6c5d9562c3d6e9c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 08:48:12.000000000","message":"Patch Set 15: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8bd7bf60f6874beb8c8fa3a5c18f20bf\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/6132e20b380542a09f8ae511dd6e2ae5 : SUCCESS in 3m 03s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/0f29748c79da422a9fa5fa9b70557466 : SUCCESS in 53m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/619cec54b7f64f37b01dc456f1011b3b : SUCCESS in 3m 11s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/6c0022017e8d4022aa0cd67669479853 : SUCCESS in 3m 15s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/98571a8e29c14a2fabe31d9c7176ee02 : SUCCESS in 3m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ee1787a36bb845a294fb345beb92e8d8 : SUCCESS in 6m 00s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/4da0bb10578d4a0aaf906eed8bea220a : FAILURE in 6m 13s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f1ad2646191348559e85147901de531c : SUCCESS in 3m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/dec1f08e861f451abb5bcc5e12ef9f93 : SUCCESS in 4m 00s","accounts_in_message":[],"_revision_number":15}],"current_revision_number":15,"current_revision":"757627fdf8b9abb0d548f49e225b93ced1051fb8","revisions":{"26bc0fb69c04e2b421cbf212629ade2c146bd575":{"kind":"REWORK","_number":1,"created":"2026-07-14 18:11:17.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/1"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:11:10.000000000","tz":120},"subject":"Replace RetryDecorator with inline retry loop in invoke_api","message":"Replace RetryDecorator with inline retry loop in invoke_api\n\noslo_service.loopingcall.RetryDecorator wraps every call in a fresh\nThreadPoolExecutor(max_workers\u003d1), submitting work to a newly-created OS\nthread and blocking the caller on a threading.Event.  Under native Python\nthreading (the default concurrency model for nova-compute since Nova 34.0.0)\nthis pattern creates and destroys an OS thread on every SOAP invocation.\n\nWith many concurrent callers the per-call thread creation, GIL contention,\nand futex hand-off between the worker thread and the caller add several\nhundred milliseconds of overhead per call on top of the actual SOAP\nround-trip time.  A synthetic benchmark with 200 background threads (a\nrealistic nova-compute steady-state) and 32 concurrent callers each making\n4 sequential calls shows:\n\n  fresh pool per call (current)  ~24 s  (+1786% over ideal)\n  shared pool                    ~13 s  (+879% over ideal)\n  direct in-caller-thread         ~9 s  (+641% over ideal, pure GIL load)\n\nThe penalty manifests in nova-compute as the compute_resources semaphore\n(which serialises all instance_claim and update_usage calls) being held for\n~10-15 s per acquisition instead of ~1-2 s, because update_provider_tree\nfires 4 SOAP calls under the lock on every instance claim.  At tempest\nconcurrency 32 this accumulates to ~340 s of pre-claim wait per instance,\nturning an 8-10 min tempest run into 90+ min.\n\nReplace the RetryDecorator with a plain while-loop that runs entirely in\nthe caller thread.  The retry semantics are preserved exactly:\n- VimSessionOverLoadException and VimConnectionException trigger a retry\n  with backoff (inc_sleep\u003d10s, max_sleep\u003d60s, up to api_retry_count times).\n- A stale session (VimFaultException/NotAuthenticated + inactive session)\n  triggers _create_session() and then retries through the same loop.\n- All other VimFaultException cases raise immediately as before.\n\nUnder eventlet monkey-patching time.sleep() yields cooperatively, so\nthe eventlet concurrency behaviour is unchanged.  Under native threading\nthe sleep is a real sleep, which is acceptable because retries are rare\n(session overload / connection loss) and the caller is a worker thread.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/26bc0fb69c04e2b421cbf212629ade2c146bd575"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/26bc0fb69c04e2b421cbf212629ade2c146bd575"}]},"branch":"refs/heads/master"},"a4d3f5e1f03c65867a506fa141f430f20a85c964":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-07-14 18:11:37.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/2"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:11:29.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with inline retry loop","message":"invoke_api: replace RetryDecorator with inline retry loop\n\nRetryDecorator wraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\ncreating and destroying an OS thread per SOAP invocation.  Under native\nthreading (nova-compute default since Nova 34.0.0) the per-call thread\nchurn and GIL contention add hundreds of milliseconds of overhead.\nBenchmark with 200 background threads / 32 concurrent callers:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with a plain while-loop running entirely in the caller thread.\nRetry semantics are preserved: VimSessionOverLoadException and\nVimConnectionException retry with the existing backoff; stale sessions\nre-create the session and retry; all other faults raise immediately.\n\ntime.sleep() is used for backoff, which yields cooperatively under\neventlet monkey-patching so the eventlet behaviour is unchanged.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/a4d3f5e1f03c65867a506fa141f430f20a85c964"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/a4d3f5e1f03c65867a506fa141f430f20a85c964"}]},"branch":"refs/heads/master"},"ddbed7d8d737699a8281a471f97c1c2df89e5d62":{"kind":"REWORK","_number":3,"created":"2026-07-14 18:14:58.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/3"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:14:54.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with inline retry loop","message":"invoke_api: replace RetryDecorator with inline retry loop\n\nRetryDecorator wraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\ncreating and destroying an OS thread per SOAP invocation.  Under native\nthreading (nova-compute default since Nova 34.0.0) the per-call thread\nchurn and GIL contention add hundreds of milliseconds of overhead.\nBenchmark with 200 background threads / 32 concurrent callers:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with a plain while-loop running entirely in the caller thread.\nRetry semantics are preserved: VimSessionOverLoadException and\nVimConnectionException retry with the existing backoff; stale sessions\nre-create the session and retry; all other faults raise immediately.\n\ntime.sleep() is used for backoff, which yields cooperatively under\neventlet monkey-patching so the eventlet behaviour is unchanged.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/ddbed7d8d737699a8281a471f97c1c2df89e5d62"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/ddbed7d8d737699a8281a471f97c1c2df89e5d62"}]},"branch":"refs/heads/master"},"19c070fe3a557a0c783c8b35e19ba8f1286e9c9f":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2026-07-14 18:16:09.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/4"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:16:05.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with inline retry loop","message":"invoke_api: replace RetryDecorator with inline retry loop\n\nCommit 4e7277ecc switched from oslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet greenthreads\nor OS threads) without any code changes here.  The intent was correct,\nbut RetryDecorator is designed for periodic tasks: it wraps every call in\na fresh ThreadPoolExecutor(max_workers\u003d1), submitting work to a new OS\nthread and blocking the caller on a threading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost), but\nunder native threading the per-call thread creation and GIL contention add\nhundreds of milliseconds of overhead per invocation.  Benchmark with 200\nbackground threads / 32 concurrent callers making 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with a plain while-loop that runs in the caller thread.  The retry\nsemantics are identical: VimSessionOverLoadException / VimConnectionException\nretry with the same backoff (inc\u003d10s, max\u003d60s, up to api_retry_count times);\nstale sessions re-create the session and retry; all other faults raise\nimmediately.  The automatic backend switching is preserved: time.sleep() is\nmonkey-patched by eventlet so it yields cooperatively, keeping the eventlet\nbehaviour unchanged.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/19c070fe3a557a0c783c8b35e19ba8f1286e9c9f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/19c070fe3a557a0c783c8b35e19ba8f1286e9c9f"}]},"branch":"refs/heads/master"},"b18b7b645ea0fa5a8042baaaccc3e51232d6357f":{"kind":"NO_CODE_CHANGE","_number":5,"created":"2026-07-14 18:17:25.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/5"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:17:21.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with inline retry loop","message":"invoke_api: replace RetryDecorator with inline retry loop\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to oslo_service.loopingcall.RetryDecorator\nso that invoke_api would automatically use the right concurrency substrate\n(eventlet greenthreads or OS threads) without any code changes here.  The\nintent was correct, but RetryDecorator is designed for periodic tasks: it\nwraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1), submitting\nwork to a new OS thread and blocking the caller on a threading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost), but\nunder native threading the per-call thread creation and GIL contention add\nhundreds of milliseconds of overhead per invocation.  Benchmark with 200\nbackground threads / 32 concurrent callers making 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with a plain while-loop that runs in the caller thread.  The retry\nsemantics are identical: VimSessionOverLoadException / VimConnectionException\nretry with the same backoff (inc\u003d10s, max\u003d60s, up to api_retry_count times);\nstale sessions re-create the session and retry; all other faults raise\nimmediately.  The automatic backend switching is preserved: time.sleep() is\nmonkey-patched by eventlet so it yields cooperatively, keeping the eventlet\nbehaviour unchanged.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/b18b7b645ea0fa5a8042baaaccc3e51232d6357f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/b18b7b645ea0fa5a8042baaaccc3e51232d6357f"}]},"branch":"refs/heads/master"},"8554c2e089935677b2298978396589c30bd8e66b":{"kind":"NO_CODE_CHANGE","_number":6,"created":"2026-07-14 18:18:41.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/6"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:18:28.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with inline retry loop","message":"invoke_api: replace RetryDecorator with inline retry loop\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but RetryDecorator is designed for periodic tasks: it\nwraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\nsubmitting work to a new OS thread and blocking the caller on a\nthreading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost),\nbut under native threading the per-call thread creation and GIL\ncontention add hundreds of milliseconds of overhead per invocation.\nBenchmark with 200 background threads / 32 concurrent callers\nmaking 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with a plain while-loop that runs in the caller thread.\nThe retry semantics are identical: VimSessionOverLoadException /\nVimConnectionException retry with the same backoff (inc\u003d10s,\nmax\u003d60s, up to api_retry_count times); stale sessions re-create\nthe session and retry; all other faults raise immediately.\n\nThe automatic backend switching is preserved: time.sleep() is\nmonkey-patched by eventlet so it yields cooperatively, keeping\nthe eventlet behaviour unchanged.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/8554c2e089935677b2298978396589c30bd8e66b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/8554c2e089935677b2298978396589c30bd8e66b"}]},"branch":"refs/heads/master"},"a198b12920651c3bb3960de0881510a2a61c907d":{"kind":"REWORK","_number":7,"created":"2026-07-15 05:05:52.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/7"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 05:05:49.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with tenacity retry","message":"invoke_api: replace RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but RetryDecorator is designed for periodic tasks: it\nwraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\nsubmitting work to a new OS thread and blocking the caller on a\nthreading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost),\nbut under native threading the per-call thread creation and GIL\ncontention add hundreds of milliseconds of overhead per invocation.\nBenchmark with 200 background threads / 32 concurrent callers\nmaking 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. wait_incrementing matches the original RetryDecorator\nsemantics (10s linear backoff, capped at 60s). tenacity\u0027s sleep is\ntime.sleep, which is monkey-patched by eventlet so the eventlet\nbehaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/a198b12920651c3bb3960de0881510a2a61c907d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/a198b12920651c3bb3960de0881510a2a61c907d"}]},"branch":"refs/heads/master"},"ab15b960e6f6eb58ad9d6cd61a6aaeca9f5e8910":{"kind":"REWORK","_number":8,"created":"2026-07-15 05:09:13.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/8"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 05:09:08.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with tenacity retry","message":"invoke_api: replace RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but RetryDecorator is designed for periodic tasks: it\nwraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\nsubmitting work to a new OS thread and blocking the caller on a\nthreading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost),\nbut under native threading the per-call thread creation and GIL\ncontention add hundreds of milliseconds of overhead per invocation.\nBenchmark with 200 background threads / 32 concurrent callers\nmaking 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. wait_incrementing matches the original RetryDecorator\nsemantics (10s linear backoff, capped at 60s). tenacity\u0027s sleep is\ntime.sleep, which is monkey-patched by eventlet so the eventlet\nbehaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/ab15b960e6f6eb58ad9d6cd61a6aaeca9f5e8910"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/ab15b960e6f6eb58ad9d6cd61a6aaeca9f5e8910"}]},"branch":"refs/heads/master"},"3a4a44d463397a42dcc0491e9b921bd1e8f81204":{"kind":"REWORK","_number":9,"created":"2026-07-15 05:14:02.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/9"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 05:13:58.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with tenacity retry","message":"invoke_api: replace RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but RetryDecorator is designed for periodic tasks: it\nwraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\nsubmitting work to a new OS thread and blocking the caller on a\nthreading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost),\nbut under native threading the per-call thread creation and GIL\ncontention add hundreds of milliseconds of overhead per invocation.\nBenchmark with 200 background threads / 32 concurrent callers\nmaking 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. wait_incrementing matches the original RetryDecorator\nsemantics (10s linear backoff, capped at 60s). tenacity\u0027s sleep is\ntime.sleep, which is monkey-patched by eventlet so the eventlet\nbehaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3a4a44d463397a42dcc0491e9b921bd1e8f81204"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3a4a44d463397a42dcc0491e9b921bd1e8f81204"}]},"branch":"refs/heads/master"},"277048adfdfeca5aecad9099e278bf2e0ac68574":{"kind":"REWORK","_number":10,"created":"2026-07-15 07:26:48.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/10"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 07:26:44.000000000","tz":120},"subject":"invoke_api: replace RetryDecorator with tenacity retry","message":"invoke_api: replace RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but RetryDecorator is designed for periodic tasks: it\nwraps every call in a fresh ThreadPoolExecutor(max_workers\u003d1),\nsubmitting work to a new OS thread and blocking the caller on a\nthreading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost),\nbut under native threading the per-call thread creation and GIL\ncontention add hundreds of milliseconds of overhead per invocation.\nBenchmark with 200 background threads / 32 concurrent callers\nmaking 4 sequential calls each:\n\n  fresh pool per call  ~24 s  (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. wait_incrementing matches the original RetryDecorator\nsemantics (10s linear backoff, capped at 60s). tenacity\u0027s sleep is\ntime.sleep, which is monkey-patched by eventlet so the eventlet\nbehaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/277048adfdfeca5aecad9099e278bf2e0ac68574"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/277048adfdfeca5aecad9099e278bf2e0ac68574"}]},"branch":"refs/heads/master"},"5c87dbe9a856a6f198df3a14cb19de802f9cc5a3":{"kind":"NO_CODE_CHANGE","_number":11,"created":"2026-07-15 12:29:03.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/11"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 12:29:03.000000000","tz":0},"subject":"invoke_api: replace RetryDecorator with tenacity retry","message":"invoke_api: replace RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet greenthreads\nor OS threads) without code changes here. The intent was correct, but\nRetryDecorator is designed for periodic tasks: it wraps every call in a\nfresh ThreadPoolExecutor(max_workers\u003d1), submitting work to a new OS\nthread and blocking the caller on a threading.Event.\n\nUnder eventlet this was free (greenthreads have no OS-thread cost), but\nunder native threading the per-call thread creation and GIL contention\nadd hundreds of milliseconds of overhead per invocation. Benchmark with\n200 background threads / 32 concurrent callers making 4 sequential calls\neach:\n\nfresh pool per call ~24 s (+1786% over ideal)\n  direct in-thread      ~9 s  (+641% over ideal, pure GIL pressure)\n\nReplace with tenacity, which runs the retry loop in the caller thread.\nwait_incrementing matches the original RetryDecorator semantics (10s\nlinear backoff, capped at 60s). tenacity\u0027s sleep is time.sleep, which is\nmonkey-patched by eventlet so the eventlet behaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/5c87dbe9a856a6f198df3a14cb19de802f9cc5a3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/5c87dbe9a856a6f198df3a14cb19de802f9cc5a3"}]},"branch":"refs/heads/master","description":"Edit commit message"},"05c7a1e4895f7da0b3c8149b0951bd08ab0c8847":{"kind":"REWORK","_number":12,"created":"2026-07-15 13:11:31.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/12"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 13:10:32.000000000","tz":120},"subject":"Replace loopingcall.RetryDecorator with tenacity retry","message":"Replace loopingcall.RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but oslo_service\u0027s RetryDecorator is implemented on top\nof DynamicLoopingCall: every invocation starts a new thread and\nblocks the caller on evt.wait(), paying thread-creation overhead\neven when no retry occurs.\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. tenacity\u0027s sleep is time.sleep, which is monkey-patched by\neventlet so the eventlet behaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/05c7a1e4895f7da0b3c8149b0951bd08ab0c8847"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/05c7a1e4895f7da0b3c8149b0951bd08ab0c8847"}]},"branch":"refs/heads/master"},"7b6be348405c1e394691a3855e5c0ce248c87eb2":{"kind":"NO_CHANGE","_number":13,"created":"2026-07-15 13:11:56.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/13"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 13:11:56.000000000","tz":0},"subject":"Replace loopingcall.RetryDecorator with tenacity retry","message":"Replace loopingcall.RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but oslo_service\u0027s RetryDecorator is implemented on top\nof DynamicLoopingCall: every invocation starts a new thread and\nblocks the caller on evt.wait(), paying thread-creation overhead\neven when no retry occurs.\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. tenacity\u0027s sleep is time.sleep, which is monkey-patched by\neventlet so the eventlet behaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/7b6be348405c1e394691a3855e5c0ce248c87eb2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/7b6be348405c1e394691a3855e5c0ce248c87eb2"}]},"branch":"refs/heads/master","description":"Edit commit message"},"43b7f2655c54f538069f319b5092f31f3aa886c9":{"kind":"REWORK","_number":14,"created":"2026-07-15 13:13:56.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/14","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/14","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/14"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-15 13:13:46.000000000","tz":120},"subject":"Replace loopingcall.RetryDecorator with tenacity retry","message":"Replace loopingcall.RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but oslo_service\u0027s RetryDecorator is implemented on top\nof DynamicLoopingCall: every invocation starts a new thread and\nblocks the caller on evt.wait(), paying thread-creation overhead\neven when no retry occurs.\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. tenacity\u0027s sleep is time.sleep, which is monkey-patched by\neventlet so the eventlet behaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/43b7f2655c54f538069f319b5092f31f3aa886c9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/43b7f2655c54f538069f319b5092f31f3aa886c9"}]},"branch":"refs/heads/master"},"757627fdf8b9abb0d548f49e225b93ced1051fb8":{"kind":"REWORK","_number":15,"created":"2026-07-23 07:54:09.000000000","uploader":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"ref":"refs/changes/69/997269/15","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.vmware","ref":"refs/changes/69/997269/15","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/15 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/15 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/15 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.vmware refs/changes/69/997269/15"}}},"commit":{"parents":[{"commit":"3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f","subject":"Merge \"Ensure extra dependency for bandit to use toml\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/3e6ad6e320f7b16bd5ee2ab90ee2f8667a2ef80f"}]}],"author":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-14 18:04:10.000000000","tz":120},"committer":{"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","date":"2026-07-23 07:53:53.000000000","tz":120},"subject":"Replace loopingcall.RetryDecorator with tenacity retry","message":"Replace loopingcall.RetryDecorator with tenacity retry\n\nChange Ida95f739d5f1c41595b07175fdb5239d7cf4d4fb switched from\noslo.vmware\u0027s own RetryDecorator to\noslo_service.loopingcall.RetryDecorator so that invoke_api would\nautomatically use the right concurrency substrate (eventlet\ngreenthreads or OS threads) without code changes here. The intent\nwas correct, but oslo_service\u0027s RetryDecorator is implemented on top\nof DynamicLoopingCall: every invocation starts a new thread and\nblocks the caller on evt.wait(), paying thread-creation overhead\neven when no retry occurs.\n\nReplace with tenacity, which runs the retry loop in the caller\nthread. tenacity\u0027s sleep is time.sleep, which is monkey-patched by\neventlet so the eventlet behaviour is unchanged.\n\ntenacity is already a transitive dependency of every OpenStack\ndeployment via os-brick and tooz, so adding it to requirements.txt\nintroduces no new packages in practice.\n\nChange-Id: I7a9e3d2c4fcf2e1a6b4d8f9e0c1d2a3b4e5f6a7b\nSigned-off-by: Fabian Wiesel \u003cfabian.wiesel@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/757627fdf8b9abb0d548f49e225b93ced1051fb8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.vmware/commit/757627fdf8b9abb0d548f49e225b93ced1051fb8"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Backport-Candidate","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
