)]}'
{"id":"openstack%2Fhorizon~976341","triplet_id":"openstack%2Fhorizon~stable%2F2025.2~Ia0de61ae6461c06158b285923d1abab373b4b792","project":"openstack/horizon","branch":"stable/2025.2","attention_set":{},"removed_from_attention_set":{"6914":{"account":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"last_update":"2026-03-18 15:43:58.000000000","reason":"\u003cGERRIT_ACCOUNT_6914\u003e replied on the change","reason_account":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"}},"12404":{"account":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"last_update":"2026-03-18 17:15:22.000000000","reason":"Change was submitted"},"8648":{"account":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"last_update":"2026-03-18 17:15:22.000000000","reason":"Change was submitted"},"35133":{"account":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"last_update":"2026-03-18 17:15:22.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Ia0de61ae6461c06158b285923d1abab373b4b792","subject":"fix(api): Avoid RecursionError when deepcopy Port apidict","status":"MERGED","created":"2026-02-11 09:18:07.000000000","updated":"2026-03-18 17:17:04.000000000","submitted":"2026-03-18 17:15:22.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"976341","cherry_pick_of_change":975593,"cherry_pick_of_patch_set":2,"meta_rev_id":"4f7c2cdc9d76535bb7360c6d62f4bd153cdf533f","_number":976341,"virtual_id_number":976341,"owner":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-18 17:15:22.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":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"all":[{"value":2,"date":"2026-03-18 15:43:58.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},{"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":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"all":[{"value":1,"date":"2026-03-18 15:43:58.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},{"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},"Review-Priority":{"all":[{"value":0,"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Release Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}],"reviewers":{"REVIEWER":[{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}],"CC":[{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-02-11 09:18:07.000000000","updated_by":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"reviewer":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"state":"CC"},{"updated":"2026-02-11 09:51:39.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-02-11 10:09:37.000000000","updated_by":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"reviewer":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"state":"CC"},{"updated":"2026-02-22 14:24:20.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"state":"CC"},{"updated":"2026-02-27 08:20:03.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"state":"REVIEWER"},{"updated":"2026-02-27 08:20:03.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"state":"REVIEWER"},{"updated":"2026-02-27 08:20:03.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"state":"REVIEWER"}],"messages":[{"id":"92dd94475fef70b26fee875f09c20c49e52dbf8d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"date":"2026-02-11 09:18:07.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"befbc86df12cb632ed991195c8a2a6adff10c777","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-11 09:51:39.000000000","message":"Patch Set 1: Verified-1\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/6707d527ed50489a91b3996dd2d35b60\n\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/93a8ffafa88641f6b440fe291abf52ae : SUCCESS in 9m 23s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/2218919117f44cdfa522a5dae25520a8 : SUCCESS in 3m 17s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/e1c0ce8f56d34199afa50788b9466c26 : FAILURE in 3m 33s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/dabb44a140ca44218af6bd433a9bdf9c : FAILURE in 4m 40s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/d004b7d9204c4f68a5542a9dd9f6238d : FAILURE in 2m 44s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/546c846ec1b94df7a94069e1759fceed : RETRY_LIMIT in 2m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e6222e8367f84a91a56298ca303cb98d : FAILURE in 2m 53s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/4a78049143844425a65ff8fbc22dbe81 : SUCCESS in 16m 54s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d80f7f6434d84b9692817cd82bd1f055 : FAILURE in 4m 34s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/511bf030fc9d453d843c265a0c332e7d : FAILURE in 6m 06s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/35f38d60c97a448aaa06241d60720227 : FAILURE in 3m 25s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/9a5058ee84904bd286002bb87df5acbb : FAILURE in 24m 13s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/eb5b22612c454eb79711ee154d65ce0c : FAILURE in 26m 43s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/4daa59dd511249518b6a36d61daad835 : SUCCESS in 15m 27s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/1406437ada1c4137adbe863688ff1e1a : FAILURE in 3m 44s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/5e785fb1382e4754a4bec16acbb2d564 : SUCCESS in 18m 36s","accounts_in_message":[],"_revision_number":1},{"id":"caf5a2aeb7d27a4cb275eb4c52757d0f9695cddd","author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"date":"2026-02-11 10:09:37.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"4ea3e26c6bd46c7bd6ac9ba728b1d519b892a462","author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2026-02-22 14:24:20.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"a3edc01c5ac0f8ab9dbf996e505df6475efc3f9a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-22 14:57:38.000000000","message":"Patch Set 1:\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/d73e453ae1084995a09c642601069cb8\n\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/b4eae7a58c5e4201beffb7dbafa833cd : SUCCESS in 6m 20s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/fc02df6e2d6c4ccbbe22652bbdf33b2d : SUCCESS in 1m 57s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/8598597205ea4a20b6a2778df4ac78bb : FAILURE in 6m 10s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/89862fcc51644295af48e8ac050f535c : FAILURE in 2m 35s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/3a64a3230da4411db716faceeb957e50 : FAILURE in 2m 11s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/dfa0bb2f1a9b48198b1fcd432253b507 : RETRY_LIMIT in 2m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0ba8f047e70d4f69866bc758783a7fda : FAILURE in 2m 28s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/ca67d2afc55f44d2a4c8ac4b9754c563 : SUCCESS in 17m 05s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/1068ba618cd24059a8a218ec08bbb7bb : FAILURE in 4m 38s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/31e8b6be4ac24e208368d6eaa5a06010 : FAILURE in 2m 55s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/f58f0e6df92b4085b0160172c1c4e6fb : FAILURE in 3m 15s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/7a0909d03309441d82d29bd54f81771a : FAILURE in 16m 05s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/af8e182270e94d8792d603eeade82a29 : FAILURE in 17m 57s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/9841914dfd234236b452d23ca10278d7 : SUCCESS in 15m 05s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/4141458d12d84ac987932503fb256501 : FAILURE in 2m 12s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/4d8ee619ac3d473c90a29837ecc32274 : SUCCESS in 27m 48s","accounts_in_message":[],"_revision_number":1},{"id":"92e418294f5d96707e0b31f8fd099e8c18782204","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"real_author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2026-02-26 23:13:24.000000000","message":"Patch Set 2: Patch Set 1 was rebased on behalf of \u003cGERRIT_ACCOUNT_12404\u003e\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"}],"_revision_number":2},{"id":"36fea781eb5b5a6cd4ac5a6c708ba144009b62c0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-27 00:43:42.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/afb255338eb743aa89a374b2bac83886\n\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/248291b96b0b4efb8989890edad02891 : SUCCESS in 3m 36s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/396fc02b83be48fbaff6ae1c53bd110d : SUCCESS in 3m 13s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/728525b9a0774a98b1c631bc5fe2484b : SUCCESS in 2m 59s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/f3e2871fd3e3428080b664b13f240c6e : SUCCESS in 4m 57s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/0bebfbcbda4f41789750c9d5649c5bc1 : SUCCESS in 8m 20s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/1e609e1e0ea2482ea8b2da1af50dc85c : SUCCESS in 8m 11s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1a7f76c544a04d21b03383bc546ae705 : SUCCESS in 2m 59s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c77d0b5e1e2e4e79b8a09dd76df1f5d7 : SUCCESS in 14m 15s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/4ed15a6b22cf48b981137d5c09475616 : SUCCESS in 22m 19s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/93fb8ad84f8a4d9ca08be793018ada82 : SUCCESS in 8m 44s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/0bd29fed47114b53a994fab27c92f036 : SUCCESS in 5m 26s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/0fa1519e81714e7fb8f82479896970be : SUCCESS in 1h 23m 53s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/dd072ecdfff1443da20d9cd339b81059 : SUCCESS in 31m 02s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/3775ed0e2dbf415996de1563e60a92bc : SUCCESS in 32m 38s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/7106f3c12b234829b6eb369ec53bf0cf : SUCCESS in 6m 08s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/d347051239ee4b12b39b3d818c1d9238 : SUCCESS in 14m 16s","accounts_in_message":[],"_revision_number":2},{"id":"d8d3d9c6a4b575af80f910c61af81e98d0f3e663","author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"date":"2026-03-18 15:43:58.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"c7d276e982c09f53b22255152ac93670bfe40776","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 15:44:24.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"4b2018445682212c2277f047eec07c5d32fa770d","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 17:15:22.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/12ace05dd11c45daa02a6624eabf4b12\n\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/5de295778db9415cac4405431b0f3d99 : SUCCESS in 5m 09s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/8dd7f8e6e42c41209a86f1364d3f4b0b : SUCCESS in 5m 11s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/0ec157050b90400fbe4b6895d35d60cc : SUCCESS in 18m 13s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/8bf209e0539f4556b27654e9220a7cf1 : SUCCESS in 8m 41s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1e9b1f5be25740f0ac09476a56505e69 : SUCCESS in 5m 53s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/6345b2effd194af59a8a3c193cd89ae1 : SUCCESS in 17m 39s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9205c45088734f939f2a4aa500022bb9 : SUCCESS in 8m 13s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/82e96228764e4026b61c159a40f1f6f5 : SUCCESS in 18m 01s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/4598627f95884beebeb4e449c52a5fa9 : SUCCESS in 5m 28s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/09d26a58a5c74e6a9615502ec5b96902 : SUCCESS in 1h 23m 07s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/c3f4acad4117461b901ce4c577e2597b : SUCCESS in 28m 39s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/eedd8e3b70a24122b197dca7b5183317 : SUCCESS in 28m 56s","accounts_in_message":[],"_revision_number":2},{"id":"c21fa605ae285caeba0fc285a62c698225f1d506","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 17:15:22.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"4f7c2cdc9d76535bb7360c6d62f4bd153cdf533f","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 17:17:04.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b223787378af4aac87149b5fbb44834a\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/84fc59df92f5407793783b98965e83b3 : SUCCESS in 1m 28s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"d92c9931ab9c30ba0eb7b5da53c40a6f1a000758","revisions":{"b40ca29f8ba834a0608917d17c59c1a3264b3bae":{"kind":"REWORK","_number":1,"created":"2026-02-11 09:18:07.000000000","uploader":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"ref":"refs/changes/41/976341/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/41/976341/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/41/976341/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/41/976341/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/41/976341/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/41/976341/1"}}},"commit":{"parents":[{"commit":"dc63b9fb234f528acc8be7bde27c5e54c01cfb4a","subject":"Typo in port_security_enabled breaks port update for members","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/dc63b9fb234f528acc8be7bde27c5e54c01cfb4a"}]}],"author":{"name":"Dong Ma","email":"winterma.dong@gmail.com","date":"2026-02-04 05:42:35.000000000","tz":480},"committer":{"name":"Rico Lin","email":"ricolin@ricolky.com","date":"2026-02-11 09:18:07.000000000","tz":0},"subject":"fix(api): Avoid RecursionError when deepcopy Port apidict","message":"fix(api): Avoid RecursionError when deepcopy Port apidict\n\nWhen the apidict passed to Port.__init__ is an openstacksdk Resource\nobject, calling copy.deepcopy() on it can trigger a RecursionError.\nThis happens because openstacksdk CloudRegion.__getattr__ method\ncan cause infinite recursion during deepcopy operations.\n\nThis fix converts the apidict to a plain dict using to_dict() before\ndeepcopy if the method is available, avoiding the recursion issue.\n\nChange-Id: Ia0de61ae6461c06158b285923d1abab373b4b792\nSigned-off-by: Dong Ma \u003cwinterma.dong@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/b40ca29f8ba834a0608917d17c59c1a3264b3bae"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/b40ca29f8ba834a0608917d17c59c1a3264b3bae"}]},"branch":"refs/heads/stable/2025.2"},"d92c9931ab9c30ba0eb7b5da53c40a6f1a000758":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-02-26 23:13:24.000000000","uploader":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"real_uploader":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"ref":"refs/changes/41/976341/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/41/976341/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/41/976341/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/41/976341/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/41/976341/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/41/976341/2"}}},"commit":{"parents":[{"commit":"4e912c26f5906c058c846dd83c588b2cd2846269","subject":"Merge \"Separate Identity Project Usage from Project Overview Usage\" into stable/2025.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/4e912c26f5906c058c846dd83c588b2cd2846269"}]}],"author":{"name":"Dong Ma","email":"winterma.dong@gmail.com","date":"2026-02-04 05:42:35.000000000","tz":480},"committer":{"name":"Rico Lin","email":"ricolin@ricolky.com","date":"2026-02-26 23:13:24.000000000","tz":0},"subject":"fix(api): Avoid RecursionError when deepcopy Port apidict","message":"fix(api): Avoid RecursionError when deepcopy Port apidict\n\nWhen the apidict passed to Port.__init__ is an openstacksdk Resource\nobject, calling copy.deepcopy() on it can trigger a RecursionError.\nThis happens because openstacksdk CloudRegion.__getattr__ method\ncan cause infinite recursion during deepcopy operations.\n\nThis fix converts the apidict to a plain dict using to_dict() before\ndeepcopy if the method is available, avoiding the recursion issue.\n\nChange-Id: Ia0de61ae6461c06158b285923d1abab373b4b792\nSigned-off-by: Dong Ma \u003cwinterma.dong@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/d92c9931ab9c30ba0eb7b5da53c40a6f1a000758"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/d92c9931ab9c30ba0eb7b5da53c40a6f1a000758"}]},"branch":"refs/heads/stable/2025.2","description":"Rebase"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"}},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
