)]}'
{"id":"openstack%2Fhorizon~992902","triplet_id":"openstack%2Fhorizon~master~I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243","project":"openstack/horizon","branch":"master","topic":"fix/key-pair-success-message","attention_set":{},"removed_from_attention_set":{"32432":{"account":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"last_update":"2026-07-09 15:32:43.000000000","reason":"Change was submitted"},"6914":{"account":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"last_update":"2026-07-09 13:55:34.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"}},"8648":{"account":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"last_update":"2026-07-09 05:57:28.000000000","reason":"\u003cGERRIT_ACCOUNT_8648\u003e replied on the change","reason_account":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"}},"35133":{"account":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"last_update":"2026-07-09 15:32:43.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243","subject":"Fix key pair create success message lost on page redirect","status":"MERGED","created":"2026-06-11 14:05:15.000000000","updated":"2026-07-09 15:34:31.000000000","submitted":"2026-07-09 15:32:43.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":12,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"992902-fix/key-pair-success-message","meta_rev_id":"8ac9c682f752a62a484025154e91187ee7353d9b","_number":992902,"virtual_id_number":992902,"owner":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"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"},{"value":0,"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},{"value":0,"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-07-09 15:32:42.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}],"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-07-09 13:55:34.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},{"value":2,"date":"2026-07-09 05:57:28.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},{"value":1,"date":"2026-07-09 08:38:23.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}],"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-07-09 13:55:34.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":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},{"value":0,"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}],"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":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},{"value":0,"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}],"values":{"-1":"Release Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"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":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-11 14:59:19.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-06-24 18:52:50.000000000","updated_by":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"reviewer":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"state":"REVIEWER"},{"updated":"2026-06-24 18:52:50.000000000","updated_by":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"reviewer":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"state":"REVIEWER"},{"updated":"2026-06-24 18:52:50.000000000","updated_by":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"reviewer":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"state":"REVIEWER"},{"updated":"2026-07-09 08:38:23.000000000","updated_by":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"reviewer":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"state":"REVIEWER"}],"messages":[{"id":"5b45a6320d9540b2bd67efc959fd4e7e008c1b15","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-11 14:05:15.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"0fc7dd6d4e8f3912798dc1a81b911862358ff7c0","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-11 14:06:09.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":1},{"id":"2b666c09ab11e622397be991a2256098ce8d7424","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 14:59:19.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/d6560d56aa2e4b67b1a24c13967eed68\n\n- horizon-cross-designate-dashboard-python https://zuul.opendev.org/t/openstack/build/64fac76b903841888d50fb18bd5a42de : SUCCESS in 3m 15s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/486d7c7d8f094b48a11d925e4eab7a0c : SUCCESS in 3m 34s (non-voting)\n- horizon-cross-ironic-ui-npm https://zuul.opendev.org/t/openstack/build/0d14b7dd24774d56962ce978c3bff3d4 : SUCCESS in 3m 50s (non-voting)\n- horizon-cross-octavia-dashboard-python https://zuul.opendev.org/t/openstack/build/b8a175683937481c81dd75bf2cff5a70 : SUCCESS in 4m 03s (non-voting)\n- horizon-cross-magnum-ui-python https://zuul.opendev.org/t/openstack/build/28a5ba52a81d44c391591229c14f53da : SUCCESS in 3m 30s (non-voting)\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/564384de43ed4361b17bda5c6d9f04b7 : SUCCESS in 7m 23s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/716e39def72445df999407dc5ba629d4 : SUCCESS in 4m 34s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/1a141f6d2e284826a74562fe48fe0a38 : SUCCESS in 5m 27s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b9c13f160370426b9a8666f9343e9f00 : SUCCESS in 16m 15s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/4ca75d62ac9047ca974586e07ad1ad20 : SUCCESS in 15m 58s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/8815c4a540894f4283c5c17cf1f57eb8 : SUCCESS in 18m 18s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/da16570e22be421bb8d945c0dfee5bac : SUCCESS in 4m 41s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/b8196e0640c446229f46c2e91adc90c3 : SUCCESS in 18m 29s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/9824c5d3a2144313b0ba6e545ae01797 : SUCCESS in 21m 26s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/45ae3314f7874952a23afa0de825ff46 : SUCCESS in 14m 44s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/3c48a4b71eaa42d4befa1531ff140ad9 : SUCCESS in 12m 04s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/d10b2fc7e7034df0aeb5b44a8f435617 : SUCCESS in 5m 52s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/c8f39ae7ff134315b94a311fd9e1e0a0 : FAILURE in 40m 50s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/fca343c0411c459baf7485c15a6d7923 : SUCCESS in 32m 20s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/04c3a805fe154dcba5b2cc19ef54f926 : SUCCESS in 30m 44s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/0edbe7e2dffd4e3eb871e42803c5e4ea : SUCCESS in 4m 22s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/7b473e032d844b6bb315944778a22919 : SUCCESS in 31m 22s","accounts_in_message":[],"_revision_number":1},{"id":"1fb0e565393a25deb05295b52b27fd10da3801ea","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-11 15:49:23.000000000","message":"Uploaded patch set 2: Commit message was updated.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"5dae301299799808e8e96e97e9966b12ca71ad67","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-11 16:06:39.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"cf394558d1fb0f7b8afad80ffa79efed55415a28","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-11 17:23:06.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"ef8704b91dee0d0c8cb01d6a6c2a8272ff693a66","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 17:35:11.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3f938755c97146d2b4a830aa4db0b851\n\n- horizon-cross-designate-dashboard-python https://zuul.opendev.org/t/openstack/build/6491fd50a26843a8bf54edd517ac9440 : SUCCESS in 2m 30s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/eb8265b77108404a9223f445d36564df : SUCCESS in 4m 00s (non-voting)\n- horizon-cross-ironic-ui-npm https://zuul.opendev.org/t/openstack/build/3848da685c614d998e54424e9c871dcb : SUCCESS in 5m 00s (non-voting)\n- horizon-cross-octavia-dashboard-python https://zuul.opendev.org/t/openstack/build/978fbcca104e44deadd1061f5b5cef58 : SUCCESS in 3m 28s (non-voting)\n- horizon-cross-magnum-ui-python https://zuul.opendev.org/t/openstack/build/b0a2f76d619c4dddb0061e316d3cdda2 : SUCCESS in 3m 00s (non-voting)\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/b3151c3cbb7b4daf8da2ea09bee77915 : SUCCESS in 4m 20s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/aa252937b7994f249901f01efd61e7ec : SUCCESS in 3m 14s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/6b9f4312afb648ebb1de2cc64652c508 : SUCCESS in 6m 08s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/eebc22a722574e138cf240bed13a167f : SUCCESS in 8m 25s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/6c4a04b903104850bf68e012c60d75a4 : SUCCESS in 12m 33s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/7d83d3b9b5c8413b92491e79742c86b7 : SUCCESS in 9m 13s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b9180035a8fb420180eb32fe3b2db911 : SUCCESS in 5m 32s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/ffda5ffab0ad4710a7e17d2b74d4defa : SUCCESS in 9m 14s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/96d4fea10cd54891b5a7c5beeb127133 : SUCCESS in 9m 49s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/980b8205c1194cb3aaa1222dab496442 : SUCCESS in 7m 37s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/ece67b72153e4eb592aac4e93b007add : SUCCESS in 4m 41s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/1ea4b205ce0343fd9e3aa74d0bc0cff9 : SUCCESS in 6m 16s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/ed20d8bed2684940858f8a271fe37a43 : SUCCESS in 1h 26m 16s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/4eb47319ce5748ab955f22259d5bff6c : SUCCESS in 24m 29s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/83b6ef4427a9440493632d9ad32ce72d : SUCCESS in 29m 58s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/1cbfbde12c6e4df9893687fcc4116410 : SUCCESS in 5m 19s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/d21310756c574172b5f9f268e3ad4eaa : SUCCESS in 23m 56s","accounts_in_message":[],"_revision_number":3},{"id":"3d580fbe56f7110c4d0028594e8998e2579c809b","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-11 19:52:51.000000000","message":"Uploaded patch set 4: Commit message was updated.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"b7490de1ecf145d36209f10d1d47ae33b131983d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 21:27:49.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a0e34016173d40cda850ae4ed9b89b0b\n\n- horizon-cross-designate-dashboard-python https://zuul.opendev.org/t/openstack/build/23feb8e8977f4f5a93ca54643ecfcc9d : SUCCESS in 2m 52s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/d43c148117cb4a97a10454ba2ba6026d : SUCCESS in 3m 08s (non-voting)\n- horizon-cross-ironic-ui-npm https://zuul.opendev.org/t/openstack/build/770282b0abc8421788b7341ca0ba89bc : SUCCESS in 5m 18s (non-voting)\n- horizon-cross-octavia-dashboard-python https://zuul.opendev.org/t/openstack/build/d46bb3b538274eb79c8f25c1de6127ef : SUCCESS in 3m 53s (non-voting)\n- horizon-cross-magnum-ui-python https://zuul.opendev.org/t/openstack/build/f15e00046e6a425d8d94a9971c769d6f : SUCCESS in 3m 37s (non-voting)\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/5fba0fc714e64312ae5fecbe48dddeff : SUCCESS in 5m 23s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/2a395afdea2e46a2bc6a6accc20b7989 : SUCCESS in 4m 11s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/7c73f66f749e4897b9e8c22f2ee7b5f9 : SUCCESS in 6m 04s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/dbca136354d54732b4368edf0df87ad0 : SUCCESS in 13m 32s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/b9246bd0b06440c8976f899117b05e16 : SUCCESS in 16m 06s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/40d1dd5ff661484cbed4ecc8359e43eb : SUCCESS in 18m 26s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/87496e3f671f4c3ca83259250d025c29 : SUCCESS in 4m 51s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/c404de27f64443fcb4f694138c85e4e7 : SUCCESS in 13m 45s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/fc5855803c42467fadbc279a684d1972 : SUCCESS in 13m 18s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fbb9bcf6db414f758c45eea4f4301015 : SUCCESS in 7m 58s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5eab71188f434e4a913bb4abe2290516 : SUCCESS in 13m 02s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/72753b5963db480abcf4e7bcfe0940ba : SUCCESS in 6m 04s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/afbf1d3a3f2944479f1204b5bf33ab8b : SUCCESS in 1h 24m 56s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/5a41cbd993ed4f54b82b25f281677bac : SUCCESS in 31m 42s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/68818958b51f4bef9233e070c1646f8c : SUCCESS in 29m 40s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/246018ba4ea548f79fd3148f76a971a1 : SUCCESS in 2m 28s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/69eea026df4347b8812d711f80770b37 : SUCCESS in 29m 50s","accounts_in_message":[],"_revision_number":4},{"id":"6f8cceb0f503e597928bb304ba82a2e4af9c9173","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-12 17:10:44.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"098ce326c8ad1f165e0ae819e5a7bbdeebd16687","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-12 18:42:05.000000000","message":"Patch Set 4:\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/47428a1e85ce4d908226ca200614dc04\n\n- horizon-cross-designate-dashboard-python https://zuul.opendev.org/t/openstack/build/d547b723bdf2462f91006f2727dda7a8 : SUCCESS in 3m 21s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/7c94594c8c2643d0b31ec1a0f78d23c4 : SUCCESS in 3m 43s (non-voting)\n- horizon-cross-ironic-ui-npm https://zuul.opendev.org/t/openstack/build/9e7da37d879c4af097ffefa57eaf655a : SUCCESS in 5m 13s (non-voting)\n- horizon-cross-octavia-dashboard-python https://zuul.opendev.org/t/openstack/build/5dd5703b59c449a4b7a89bc14e5a3b18 : SUCCESS in 3m 38s (non-voting)\n- horizon-cross-magnum-ui-python https://zuul.opendev.org/t/openstack/build/2aeb94a089744b65a39ce910702febfd : SUCCESS in 3m 01s (non-voting)\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/d5afc418380143e0a91b7431fa31bc10 : SUCCESS in 7m 02s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/df006ae51bf24266b4052888cf4d9149 : SUCCESS in 4m 13s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/cfa20eda47194d1b8a73c9236ad4d825 : SUCCESS in 6m 01s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/061c3c896883402e910ec1409997b333 : SUCCESS in 16m 29s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/2b8aa929988f4f95a27a2af575b3a153 : SUCCESS in 12m 53s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/62cf0e24dfc84323a8bcf760913ff8e3 : SUCCESS in 16m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0c0b9e50e6c4457aa13c0cf7ff622594 : SUCCESS in 4m 40s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/2240b9dca40147bf822d9963b1bcfe3c : SUCCESS in 19m 43s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/d643363eb1a64cb4a783e975bb176f75 : SUCCESS in 22m 12s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/eca69972968e4d7c980d91f4b23a7ffa : SUCCESS in 15m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a3458c2b84d74086bb0345a3f8ef86a2 : SUCCESS in 11m 52s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/2572a605e12244f2a447aee3ee18c8a7 : SUCCESS in 6m 09s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/00a215be14a147a6b6e21a0f3d9d2796 : SUCCESS in 1h 24m 56s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/5e73259666254ee292c62c1336a5094d : SUCCESS in 33m 51s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/120686ff3c21446887e588c7c8a10d1c : SUCCESS in 31m 18s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/ba28f54026134ad8a9a5b40d2d799f5d : SUCCESS in 4m 41s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/34dffd68d0f742d28e882b26a296adab : SUCCESS in 32m 50s","accounts_in_message":[],"_revision_number":4},{"id":"c055e16a817d8101c419f3b10234071f6a367c9a","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-24 14:03:39.000000000","message":"Patch Set 4:\n\nThis change is ready for review.","accounts_in_message":[],"_revision_number":4},{"id":"30ae3d1cbdebe26d717d274012d82e040602df06","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-06-24 15:01:05.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"7087b0443077b0a35713d43f291b9a5a6396fd58","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-24 16:36:51.000000000","message":"Patch Set 4:\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ec4cdee8441843da84119f98091ddf46\n\n- horizon-cross-designate-dashboard-python https://zuul.opendev.org/t/openstack/build/5c237d9fa84a478590beb570e812ea4c : SUCCESS in 4m 12s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/216b3a7456aa4e7da6ba77ecbed775dd : SUCCESS in 4m 39s (non-voting)\n- horizon-cross-ironic-ui-npm https://zuul.opendev.org/t/openstack/build/4ae0ec971b324f4d9a878c2eb995de71 : SUCCESS in 6m 06s (non-voting)\n- horizon-cross-octavia-dashboard-python https://zuul.opendev.org/t/openstack/build/e8074c27ef36404082bbae6424223818 : SUCCESS in 5m 22s (non-voting)\n- horizon-cross-magnum-ui-python https://zuul.opendev.org/t/openstack/build/462d36842e9f44cf8a858a3f50b0e377 : SUCCESS in 2m 24s (non-voting)\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/ae2dbf53c128418f8030a29473235eee : SUCCESS in 7m 27s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/ad5bf56119d14a67bc1bb3e6a9da26e1 : SUCCESS in 2m 57s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/9b7d1219523041c8b4dd51a8343b8c1b : SUCCESS in 7m 45s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a2c66d5794294c518e0a19632d19a72e : SUCCESS in 18m 27s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/ff328519fb014be3a9f92c747e8d1cc1 : SUCCESS in 15m 51s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/a73b604fa2fc467b8666b586abad3bfa : SUCCESS in 18m 00s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/93d448502d2c488a8ff1138d1f0f9442 : SUCCESS in 2m 56s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/26debbc84b684265936a736730e26659 : SUCCESS in 14m 10s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/8c5b509857a64149bd22873756b59a41 : SUCCESS in 21m 32s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/61839396f7c145bc9b1cd6d5de6beb44 : SUCCESS in 14m 53s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/245a57a2fcfa43a8bc32bad40af8b683 : SUCCESS in 14m 43s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/cfc037b2fa0a45969bde0f860d1129e1 : SUCCESS in 10m 01s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/4c4f6e42d3a649ac8a0d15cbf43a7755 : SUCCESS in 1h 29m 44s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/992e4ee8b99c477fbc15325d2da08d52 : SUCCESS in 33m 39s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/d7dc0d325fae412697afd7941f5aa644 : SUCCESS in 13m 42s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/1382657c50444d8ab9d1f57094784055 : SUCCESS in 4m 24s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/9fc1f3b5a4c141398669b81fa384d4f4 : SUCCESS in 30m 51s","accounts_in_message":[],"_revision_number":4},{"id":"a197c20525c5666a1b15e4e613c67097823b09ea","author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"date":"2026-06-25 12:21:51.000000000","message":"Patch Set 4: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"a8160865a7fef095a3ff11a20906912a32101c91","author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"date":"2026-06-25 13:49:15.000000000","message":"Patch Set 4: Code-Review-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"fb5239d753c7188b28d284b9598a9263e25e786f","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-07-07 21:03:04.000000000","message":"Topic fix/keypair-create-message-delivery removed","accounts_in_message":[],"_revision_number":4},{"id":"d8a4679653905aa417bd39628789d52a337c3911","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-07-07 21:03:11.000000000","message":"Topic set to de-angularize","accounts_in_message":[],"_revision_number":4},{"id":"6960974805424c3c030359e5f51c322227bc384a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-07-08 19:17:54.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Code-Review+2, Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"c2a95fd48ff40094f0386f282a612977e7736736","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-07-08 19:19:54.000000000","message":"Patch Set 4:\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"db82e36a8b8ae65cd7ac5fb5f728da0509e297b7","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-07-08 19:20:30.000000000","message":"Patch Set 5:\n\n(2 comments)","accounts_in_message":[],"_revision_number":5},{"id":"978ea4afa8fb7bf0e69f2e7c22db647f2c4987c9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"date":"2026-07-08 19:21:47.000000000","message":"Uploaded patch set 6: Commit message was updated.","accounts_in_message":[],"_revision_number":6},{"id":"8deb53b9c06a972741eb72af69f1df466a42edd4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-08 20:54:46.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/548a9da71a144f07be0e9e52820dfadb\n\n- horizon-cross-designate-dashboard-python https://zuul.opendev.org/t/openstack/build/4bf3b880163f4a6db2ef28038c7397ca : SUCCESS in 2m 51s (non-voting)\n- horizon-cross-heat-dashboard-python https://zuul.opendev.org/t/openstack/build/f047927bfe3b4350a9f3fe2e37a7d9e4 : FAILURE in 3m 44s (non-voting)\n- horizon-cross-ironic-ui-npm https://zuul.opendev.org/t/openstack/build/322e61ea53504c1f879fa91138d1d46b : SUCCESS in 6m 06s (non-voting)\n- horizon-cross-octavia-dashboard-python https://zuul.opendev.org/t/openstack/build/517165d9baaa4345af743892e4733689 : SUCCESS in 3m 36s (non-voting)\n- horizon-cross-magnum-ui-python https://zuul.opendev.org/t/openstack/build/673fe716a2d24d5c8145cc3e48c34f8d : SUCCESS in 3m 32s (non-voting)\n- horizon-cross-manila-ui-python https://zuul.opendev.org/t/openstack/build/f40b977905e44cb4aefd0a3a748f104f : SUCCESS in 3m 47s (non-voting)\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/e65af63566304cbc9144882ad8411faf : SUCCESS in 5m 17s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/e60f8d2630dc4c2b9096e44d83a6c526 : SUCCESS in 7m 27s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/de657b6d68a643b69cb5ca21da38517c : SUCCESS in 14m 21s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/f7a62c1df27f42bbb4fc596de7bef62d : SUCCESS in 17m 13s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/e04cc3870b5144f4b25176975067bfed : SUCCESS in 17m 03s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9c5e63a815dc4445bf9e7a9688a7daf6 : SUCCESS in 3m 10s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/32604ed00cbc4626839b88ed059260c3 : SUCCESS in 19m 46s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/df293da822ee4688945e283f9c99d6d3 : SUCCESS in 21m 07s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fc53096fd6ea4850a0a812ed2c3e584f : SUCCESS in 15m 10s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/3a555084e2c1494788146ab696af68d5 : SUCCESS in 6m 14s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/6b76867c8bd343a09ad48f02ae05bb94 : SUCCESS in 5m 54s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/bac27c62974f406da46d7a2338b20e78 : SUCCESS in 1h 31m 35s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/0853a9229403405da86ff0e48df4cfaa : SUCCESS in 32m 48s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/87fb7e5cc1d84bed9a47dc7d53a5ffe8 : SUCCESS in 29m 45s\n- horizon-tox-bandit-baseline https://zuul.opendev.org/t/openstack/build/4eef045289014a198fbeb9faa334c77d : SUCCESS in 3m 24s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/7812c00a2e7f4b968e0defac2633bd58 : SUCCESS in 33m 28s","accounts_in_message":[],"_revision_number":6},{"id":"5d59632d090d48028aa56fad91037d22558e1743","author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"date":"2026-07-09 05:57:28.000000000","message":"Patch Set 6: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"a5a7fb6e3b98b882300737c76510eabdd2d96bae","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2026-07-09 08:38:23.000000000","message":"Patch Set 6: Code-Review+1","accounts_in_message":[],"_revision_number":6},{"id":"1c65a7f018420b1bd4de7e9077e5dd5101201a8b","author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"date":"2026-07-09 13:55:34.000000000","message":"Patch Set 6: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"b462312343e3e1bba71136699e4e3f78bb48a257","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 13:56:05.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":6},{"id":"865f5619a282014aae689417bdd7232abd5f2718","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 15:32:42.000000000","message":"Patch Set 6: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e7bbba2938434332abbdfb03fa4a20fd\n\n- horizon-nodejs20-run-lint https://zuul.opendev.org/t/openstack/build/2a41bccfb9f04d9fb3521623e423f58a : SUCCESS in 4m 16s\n- horizon-nodejs20-run-test https://zuul.opendev.org/t/openstack/build/9fe0247982d94c04aec13072a8f544ce : SUCCESS in 6m 03s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f2f24e6d7a9a45798659fd21a0eef85d : SUCCESS in 17m 29s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/ad2c405bfcb74e08a2a932a1e24558cb : SUCCESS in 14m 02s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/3e96786ab92f4a17b7050f4a8ef5eff4 : SUCCESS in 15m 24s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/994cacbcfd9642c09f0f77a56010ccd0 : SUCCESS in 4m 51s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/7415058e43734bda8ae8eb47f8776c89 : SUCCESS in 19m 06s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/56caa0d55fc0412890f364b2ed672ae5 : SUCCESS in 15m 28s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f1953bce1f304f1aad2c2dec1ae1adec : SUCCESS in 12m 20s\n- horizon-dsvm-tempest-plugin https://zuul.opendev.org/t/openstack/build/0688f28fcdbc4ba1838f814b44334e34 : SUCCESS in 37m 03s\n- horizon-selenium-headless https://zuul.opendev.org/t/openstack/build/c12b1b36c9b247869166e181cb5b1e9d : SUCCESS in 6m 53s\n- horizon-integration-pytest https://zuul.opendev.org/t/openstack/build/dd15be27194f42e7911c230c216f3b82 : SUCCESS in 1h 31m 58s\n- horizon-ui-pytest https://zuul.opendev.org/t/openstack/build/e43793ce175945fe89a585d9942c5261 : SUCCESS in 38m 50s\n- horizon-tempest-plugin-ipv6 https://zuul.opendev.org/t/openstack/build/cec6f24d302847b299a962158aca42f2 : SUCCESS in 31m 07s","accounts_in_message":[],"_revision_number":6},{"id":"cba1d7043bdc3eeb4a924a370c8e2061261bbc06","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 15:32:43.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":6},{"id":"8ac9c682f752a62a484025154e91187ee7353d9b","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 15:34:31.000000000","message":"Patch Set 6:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5098d013a6e8496fbb9981a66ee485fa\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/99a75442ae57435b9986837199fddfd0 : SUCCESS in 1m 30s","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"61239433bcc0c525a3b76beed991414f0efa5de8","revisions":{"66da8c72423a0481381221fab16997e7766f8f25":{"kind":"REWORK","_number":1,"created":"2026-06-11 14:05:15.000000000","uploader":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"ref":"refs/changes/02/992902/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/02/992902/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/02/992902/1"}}},"commit":{"parents":[{"commit":"410c6ca5424774f01a7e225cc9ea8d8de928278f","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/410c6ca5424774f01a7e225cc9ea8d8de928278f"}]}],"author":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 13:59:57.000000000","tz":-240},"committer":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 14:04:24.000000000","tz":-240},"subject":"Fix key pair create success message lost on page redirect","message":"Fix key pair create success message lost on page redirect\n\nWhen creating a key pair, the success message (\"Successfully created\nkey pair\") is never shown on the redirected index page. This is a\npre-existing bug in the Python (Django) key pairs panel.\n\nRoot cause: Horizon\u0027s messages.success() stores messages in\nrequest.horizon[\u0027async_messages\u0027] (in-memory) for AJAX requests,\nnot in Django\u0027s session-backed cookie storage. The\nCreateView.form_valid() method replaces the default\nHttpResponseRedirect with a render() response (for the .pem file\ndownload). HorizonMiddleware then takes the non-redirect branch\nand sends messages via the X-Horizon-Messages HTTP header instead\nof persisting them to the Django session. Browser-side JavaScript\ncreates transient DOM alert elements from that header, but\nimmediately navigates to the index page via X-Horizon-Location,\ndestroying those elements. The new page loads with an empty Django\nsession message store.\n\nThe fix manually moves any pending async_messages into the Django\nsession (via django.contrib.messages) before replacing the redirect\nwith render(). This ensures messages survive the page navigation\nand appear on the redirected index page.\n\nThis also eliminates an intermittent race condition in the Selenium\nintegration test test_create_keypair_demo, where WebDriverWait\n(polling every 500ms) has less than a 1% chance of catching the\ntransient alert elements before navigation destroys them.\n\nChange-Id: I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243\nSigned-off-by: Owen McGonagle \u003comcgonag@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/66da8c72423a0481381221fab16997e7766f8f25"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/66da8c72423a0481381221fab16997e7766f8f25"}]},"branch":"refs/heads/master"},"0195c9e7acc768d1856e974686cadb1aad1c3277":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-06-11 15:49:23.000000000","uploader":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"ref":"refs/changes/02/992902/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/02/992902/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/02/992902/2"}}},"commit":{"parents":[{"commit":"410c6ca5424774f01a7e225cc9ea8d8de928278f","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/410c6ca5424774f01a7e225cc9ea8d8de928278f"}]}],"author":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 13:59:57.000000000","tz":-240},"committer":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 15:49:12.000000000","tz":-240},"subject":"Fix key pair create success message lost on page redirect","message":"Fix key pair create success message lost on page redirect\n\nWhen creating a key pair, the success toast (\"Successfully created\nkey pair\") never appears on the redirected index page. The .pem\ndownloads but no confirmation is shown.\n\nRoot cause: CreateView.form_valid() replaces the HttpResponseRedirect\nwith a render() response for the .pem download. This causes\nHorizonMiddleware to send messages via X-Horizon-Messages header\ninstead of persisting them to the Django session. The browser creates\ntransient DOM alerts from that header, then immediately navigates\nto the index page via X-Horizon-Location, destroying them.\n\nFix: persist any pending async_messages into the Django session\nbefore replacing the redirect with render(). Messages now survive\nthe page navigation and appear on the redirected index page.\n\nAlso eliminates a race condition in the Selenium test\ntest_create_keypair_demo, where the transient alerts were\noccasionally caught by WebDriverWait before navigation.\n\nChange-Id: I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243\nSigned-off-by: Owen McGonagle \u003comcgonag@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/0195c9e7acc768d1856e974686cadb1aad1c3277"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/0195c9e7acc768d1856e974686cadb1aad1c3277"}]},"branch":"refs/heads/master"},"1c682d67c132444f00505c2d4a77f705fe975eba":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2026-06-11 16:06:39.000000000","uploader":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"ref":"refs/changes/02/992902/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/02/992902/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/02/992902/3"}}},"commit":{"parents":[{"commit":"410c6ca5424774f01a7e225cc9ea8d8de928278f","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/410c6ca5424774f01a7e225cc9ea8d8de928278f"}]}],"author":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 13:59:57.000000000","tz":-240},"committer":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 16:06:33.000000000","tz":-240},"subject":"Fix key pair create success message lost on page redirect","message":"Fix key pair create success message lost on page redirect\n\nWhen creating a key pair, the success toast (\"Successfully created\nkey pair\") never appears on the redirected index page. The .pem\ndownloads but no confirmation is shown. This bug only manifests\nwhen the Python/Django key pairs panel is enabled; the AngularJS\npanel handles the toast and .pem download entirely client-side,\nbypassing this code path.\n\nRoot cause: CreateView.form_valid() replaces the HttpResponseRedirect\nwith a render() response for the .pem download. This causes\nHorizonMiddleware to send messages via X-Horizon-Messages header\ninstead of persisting them to the Django session. The browser creates\ntransient DOM alerts from that header, then immediately navigates\nto the index page via X-Horizon-Location, destroying them.\n\nFix: persist any pending async_messages into the Django session\nbefore replacing the redirect with render(). Messages now survive\nthe page navigation and appear on the redirected index page.\n\nAlso eliminates a race condition in the Selenium test\ntest_create_keypair_demo, where the transient alerts were\noccasionally caught by WebDriverWait before navigation.\n\nChange-Id: I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243\nSigned-off-by: Owen McGonagle \u003comcgonag@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/1c682d67c132444f00505c2d4a77f705fe975eba"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/1c682d67c132444f00505c2d4a77f705fe975eba"}]},"branch":"refs/heads/master"},"8df84e10a17d1b0ec65e838005a0a420677c799d":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2026-06-11 19:52:51.000000000","uploader":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"ref":"refs/changes/02/992902/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/02/992902/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/02/992902/4"}}},"commit":{"parents":[{"commit":"410c6ca5424774f01a7e225cc9ea8d8de928278f","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/410c6ca5424774f01a7e225cc9ea8d8de928278f"}]}],"author":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 13:59:57.000000000","tz":-240},"committer":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 19:52:34.000000000","tz":-240},"subject":"Fix key pair create success message lost on page redirect","message":"Fix key pair create success message lost on page redirect\n\nWhen creating a key pair, the success toast (\"Successfully created\nkey pair\") never appears on the redirected index page. The .pem\ndownloads but no confirmation is shown. This bug only manifests\nwhen the Python/Django key pairs panel is enabled; the AngularJS\npanel handles the toast and .pem download entirely client-side,\nbypassing this code path.\n\nRoot cause: CreateView.form_valid() replaces the HttpResponseRedirect\nwith a render() response for the .pem download. This causes\nHorizonMiddleware to send messages via X-Horizon-Messages header\ninstead of persisting them to the Django session. The browser creates\ntransient DOM alerts from that header, then immediately navigates\nto the index page via X-Horizon-Location, destroying them.\n\nFix: persist any pending async_messages into the Django session\nbefore replacing the redirect with render(). Messages now survive\nthe page navigation and appear on the redirected index page.\n\nAlso eliminates a race condition in the Selenium test\ntest_create_keypair_demo, where the transient alerts were\noccasionally caught by WebDriverWait before navigation.\n\nDepends-On: https://review.opendev.org/c/openstack/horizon/+/993023\nChange-Id: I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243\nSigned-off-by: Owen McGonagle \u003comcgonag@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/8df84e10a17d1b0ec65e838005a0a420677c799d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/8df84e10a17d1b0ec65e838005a0a420677c799d"}]},"branch":"refs/heads/master"},"f882989b6ecdf235b3571675af18a05cbebfcc8b":{"kind":"REWORK","_number":5,"created":"2026-07-08 19:17:54.000000000","uploader":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"ref":"refs/changes/02/992902/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/02/992902/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/02/992902/5"}}},"commit":{"parents":[{"commit":"410c6ca5424774f01a7e225cc9ea8d8de928278f","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/410c6ca5424774f01a7e225cc9ea8d8de928278f"}]}],"author":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 13:59:57.000000000","tz":-240},"committer":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-07-08 19:17:49.000000000","tz":-240},"subject":"Fix key pair create success message lost on page redirect","message":"Fix key pair create success message lost on page redirect\n\nWhen creating a key pair, the success toast (\"Successfully created\nkey pair\") never appears on the redirected index page. The .pem\ndownloads but no confirmation is shown. This bug only manifests\nwhen the Python/Django key pairs panel is enabled; the AngularJS\npanel handles the toast and .pem download entirely client-side,\nbypassing this code path.\n\nRoot cause: CreateView.form_valid() replaces the HttpResponseRedirect\nwith a render() response for the .pem download. This causes\nHorizonMiddleware to send messages via X-Horizon-Messages header\ninstead of persisting them to the Django session. The browser creates\ntransient DOM alerts from that header, then immediately navigates\nto the index page via X-Horizon-Location, destroying them.\n\nFix: persist any pending async_messages into the Django session\nbefore replacing the redirect with render(). Messages now survive\nthe page navigation and appear on the redirected index page.\n\nAlso eliminates a race condition in the Selenium test\ntest_create_keypair_demo, where the transient alerts were\noccasionally caught by WebDriverWait before navigation.\n\nDepends-On: https://review.opendev.org/c/openstack/horizon/+/993023\nChange-Id: I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243\nSigned-off-by: Owen McGonagle \u003comcgonag@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/f882989b6ecdf235b3571675af18a05cbebfcc8b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/f882989b6ecdf235b3571675af18a05cbebfcc8b"}]},"branch":"refs/heads/master"},"61239433bcc0c525a3b76beed991414f0efa5de8":{"kind":"NO_CODE_CHANGE","_number":6,"created":"2026-07-08 19:21:47.000000000","uploader":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"ref":"refs/changes/02/992902/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/horizon","ref":"refs/changes/02/992902/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/horizon refs/changes/02/992902/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/horizon refs/changes/02/992902/6"}}},"commit":{"parents":[{"commit":"410c6ca5424774f01a7e225cc9ea8d8de928278f","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/410c6ca5424774f01a7e225cc9ea8d8de928278f"}]}],"author":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-06-11 13:59:57.000000000","tz":-240},"committer":{"name":"Owen McGonagle","email":"omcgonag@redhat.com","date":"2026-07-08 19:21:35.000000000","tz":-240},"subject":"Fix key pair create success message lost on page redirect","message":"Fix key pair create success message lost on page redirect\n\nWhen creating a key pair, the success toast (\"Successfully created\nkey pair\") never appears on the redirected index page. The .pem\ndownloads but no confirmation is shown. This bug only manifests\nwhen the Python/Django key pairs panel is enabled; the AngularJS\npanel handles the toast and .pem download entirely client-side,\nbypassing this code path.\n\nRoot cause: CreateView.form_valid() replaces the HttpResponseRedirect\nwith a render() response for the .pem download. This causes\nHorizonMiddleware to send messages via X-Horizon-Messages header\ninstead of persisting them to the Django session. The browser creates\ntransient DOM alerts from that header, then immediately navigates\nto the index page via X-Horizon-Location, destroying them.\n\nFix: persist any pending async_messages into the Django session\nbefore replacing the redirect with render(). Messages now survive\nthe page navigation and appear on the redirected index page.\n\nAlso eliminates a race condition in the Selenium test\ntest_create_keypair_demo, where the transient alerts were\noccasionally caught by WebDriverWait before navigation.\n\nChange-Id: I0e5b3f1949bd6a4c0b16a7adc33fb07c9bc82243\nSigned-off-by: Owen McGonagle \u003comcgonag@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/61239433bcc0c525a3b76beed991414f0efa5de8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/horizon/commit/61239433bcc0c525a3b76beed991414f0efa5de8"}]},"branch":"refs/heads/master"}},"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":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"}},{"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":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"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":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"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":{"label:Review-Priority\u003dMIN":""}}},{"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":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
