)]}'
{"id":"openstack%2Fpython-mistralclient~996714","triplet_id":"openstack%2Fpython-mistralclient~master~I9102a8d18fce773c6c2dfb2990b5f09be644911e","project":"openstack/python-mistralclient","branch":"master","hashtags":[],"change_id":"I9102a8d18fce773c6c2dfb2990b5f09be644911e","subject":"Delete ad-hoc actions leaked by workbook functional tests","status":"MERGED","created":"2026-07-09 20:19:11.000000000","updated":"2026-07-09 22:40:24.000000000","submitted":"2026-07-09 22:39:08.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"996714","meta_rev_id":"8c201d794099bc01297a8aced62e3c7f9982db40","_number":996714,"virtual_id_number":996714,"owner":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-07-09 22:39:07.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}],"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":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-07-09 22:17:30.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}],"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":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-07-09 22:17:30.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-07-09 21:19:43.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"71030050ddb1e99c3e3fbfe240b9882f274573b3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"date":"2026-07-09 20:19:11.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4a6be409390116bee6122f6bc2a6fbd75b8a4e70","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 21:19:43.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/60fcfd4843eb460d9ef45b9640ac3f34\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ee1a6ecabff94fce9b8bad12153a0280 : SUCCESS in 3m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/c3c652293f7b47b9bd5e7f64629b69ff : SUCCESS in 2m 54s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/5f473896df464b99b1ec089ddc5db374 : SUCCESS in 4m 54s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c81409d2dd21493f8255531c3b2b5b2f : SUCCESS in 5m 40s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2a2c923685ac45428102a9e46dcfa78a : SUCCESS in 2m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0f26c8286c14419aa90760b08e280bb2 : SUCCESS in 3m 22s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/724429da75d740b581860c7875ea3d5b : SUCCESS in 3m 41s (non-voting)\n- python-mistralclient-functional-devstack https://zuul.opendev.org/t/openstack/build/007ea24be5074c62895c937ac8d5a605 : SUCCESS in 52m 58s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"590dc25c94b82043609e33a6fbf40c89abf9153f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"date":"2026-07-09 21:33:45.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"71dbe09fe825cf370c89141a0c64f1d1bab66cdb","author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"date":"2026-07-09 22:17:30.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"1fd5d42b16b8d4a42f81f0232639b7733a8e990d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 22:30:47.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/215ef59d27a94ac2a618f46ec91398ee\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/93c90296d32d43d19d9dae8fc6e4bfdb : SUCCESS in 2m 58s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/3b516be256c54a50843f15e70020b43a : SUCCESS in 3m 26s (non-voting)\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f6d3ee80413f4dd09c703bf54fcd63d9 : SUCCESS in 3m 23s (non-voting)\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/9d1a8b60bd834077811ce537fb7d5bb7 : SUCCESS in 5m 52s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5ae1d8eb7ff445c98fbe7febeadf6a28 : SUCCESS in 3m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/1e8d998519b247769de5c08f46a814be : SUCCESS in 3m 23s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/56d3db8ee5b84916bde28f331399bd7c : SUCCESS in 3m 37s (non-voting)\n- python-mistralclient-functional-devstack https://zuul.opendev.org/t/openstack/build/abca643e18144c9381ac0c7e1674f918 : SUCCESS in 48m 45s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"6e4bdc8a77bcb6a15977cb27720b4a82c5d21e88","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 22:31:12.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"fb224811a0268b246bbf77803aa2848f44f7af1e","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 22:39:07.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/294c178228454b2abc5f685df053f1d0\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/74b9e7d3a6cd45a9a8e5123c9d0f1994 : SUCCESS in 2m 26s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/d3e9978f8c594523b9b8723bbe08bfd0 : SUCCESS in 3m 10s (non-voting)\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/02c37ee538764ec09df87889835047bf : SUCCESS in 3m 30s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b5258fd4fa894827929cfdd64d4abce5 : SUCCESS in 3m 04s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/bc3eea1059d44ae7921b1a895f098403 : SUCCESS in 3m 08s","accounts_in_message":[],"_revision_number":2},{"id":"5952d7f00a755a258c7157ed33d68b659822058c","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 22:39:08.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"8c201d794099bc01297a8aced62e3c7f9982db40","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-09 22:40:24.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2498e7596d9541139738498d100c519f\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/58f53e9982e740c68f909ef237e2d602 : SUCCESS in 39s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"1128517488be27c6e33ce68c5355438b3ddae603","revisions":{"0fd652513383d8fec5024be8631e7d798dd9d164":{"kind":"REWORK","_number":1,"created":"2026-07-09 20:19:11.000000000","uploader":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"ref":"refs/changes/14/996714/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-mistralclient","ref":"refs/changes/14/996714/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/1"}}},"commit":{"parents":[{"commit":"e7d46d0bf7c1eb4506b0b022d8859ee182b6b43f","subject":"Fix unit test failure caused by osprofiler 4.4.0","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-mistralclient/commit/e7d46d0bf7c1eb4506b0b022d8859ee182b6b43f"}]}],"author":{"name":"Arnaud Morin","email":"arnaud.morin@ovhcloud.com","date":"2026-07-09 19:01:04.000000000","tz":120},"committer":{"name":"Arnaud Morin","email":"arnaud.morin@ovhcloud.com","date":"2026-07-09 20:19:00.000000000","tz":120},"subject":"Delete ad-hoc actions leaked by workbook functional tests","message":"Delete ad-hoc actions leaked by workbook functional tests\n\nDeleting a workbook doesn\u0027t delete the workflows and ad-hoc actions\ncreated from it. The functional tests cleaned up the workbook and the\nwb.wf1 workflow but never the wb.ac1 action, so wb.ac1 rows leaked in\nboth the admin and the alt projects (the latter via\nWorkbookIsolationCLITests.test_workbook_name_uniqueness).\n\nOn the server side, admin DB lookups are insecure (cross-project), so\nonce two wb.ac1 rows exist, create_or_update_action_definition() may\npick the other project\u0027s row with an unordered first() and update its\nproject_id, violating the (name, namespace, project_id) unique\nconstraint. The resulting DBDuplicateEntry is raised at commit time and\nsurfaces as an HTTP 500 on every subsequent \u0027workbook-create\nwb_v2.yaml\u0027, intermittently failing the functional job depending on row\norder.\n\nRegister an action-delete cleanup in workbook_create() whenever the\nworkbook definition contains actions, and clean up the workflow and\naction leaked by test_workbook_create_delete, which creates the\nworkbook directly.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I9102a8d18fce773c6c2dfb2990b5f09be644911e\nSigned-off-by: Arnaud Morin \u003carnaud.morin@ovhcloud.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-mistralclient/commit/0fd652513383d8fec5024be8631e7d798dd9d164"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-mistralclient/commit/0fd652513383d8fec5024be8631e7d798dd9d164"}]},"branch":"refs/heads/master"},"1128517488be27c6e33ce68c5355438b3ddae603":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-07-09 21:33:45.000000000","uploader":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"ref":"refs/changes/14/996714/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-mistralclient","ref":"refs/changes/14/996714/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-mistralclient refs/changes/14/996714/2"}}},"commit":{"parents":[{"commit":"4cee2bb25a4d15e7dd1802f3e7e75520177446db","subject":"Fix unit test failure caused by osprofiler 4.4.0","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-mistralclient/commit/4cee2bb25a4d15e7dd1802f3e7e75520177446db"}]}],"author":{"name":"Arnaud Morin","email":"arnaud.morin@ovhcloud.com","date":"2026-07-09 19:01:04.000000000","tz":120},"committer":{"name":"Arnaud Morin","email":"arnaud.morin@ovhcloud.com","date":"2026-07-09 21:32:52.000000000","tz":120},"subject":"Delete ad-hoc actions leaked by workbook functional tests","message":"Delete ad-hoc actions leaked by workbook functional tests\n\nDeleting a workbook doesn\u0027t delete the workflows and ad-hoc actions\ncreated from it. The functional tests cleaned up the workbook and the\nwb.wf1 workflow but never the wb.ac1 action, so wb.ac1 rows leaked in\nboth the admin and the alt projects (the latter via\nWorkbookIsolationCLITests.test_workbook_name_uniqueness).\n\nOn the server side, admin DB lookups are insecure (cross-project), so\nonce two wb.ac1 rows exist, create_or_update_action_definition() may\npick the other project\u0027s row with an unordered first() and update its\nproject_id, violating the (name, namespace, project_id) unique\nconstraint. The resulting DBDuplicateEntry is raised at commit time and\nsurfaces as an HTTP 500 on every subsequent \u0027workbook-create\nwb_v2.yaml\u0027, intermittently failing the functional job depending on row\norder.\n\nRegister an action-delete cleanup in workbook_create() whenever the\nworkbook definition contains actions, and clean up the workflow and\naction leaked by test_workbook_create_delete, which creates the\nworkbook directly.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I9102a8d18fce773c6c2dfb2990b5f09be644911e\nSigned-off-by: Arnaud Morin \u003carnaud.morin@ovhcloud.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-mistralclient/commit/1128517488be27c6e33ce68c5355438b3ddae603"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-mistralclient/commit/1128517488be27c6e33ce68c5355438b3ddae603"}]},"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":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}}]}],"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":"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":""}}}]}
