)]}'
{"id":"openstack%2Fvitrage~962712","triplet_id":"openstack%2Fvitrage~stable%2F2024.2~If629023052aa2c067c419bba10837f77bcc3e59c","project":"openstack/vitrage","branch":"stable/2024.2","hashtags":[],"change_id":"If629023052aa2c067c419bba10837f77bcc3e59c","subject":"Replace eval with function matching","status":"MERGED","created":"2025-10-01 18:51:08.000000000","updated":"2025-10-01 20:50:51.000000000","submitted":"2025-10-01 20:49:57.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":"962712","cherry_pick_of_change":962658,"cherry_pick_of_patch_set":1,"meta_rev_id":"4608f903dc31bb3dd4e086ce95f4f475a969afad","_number":962712,"virtual_id_number":962712,"owner":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2025-10-01 20:49:57.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":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"all":[{"value":2,"date":"2025-10-01 19:15:38.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},{"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":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"all":[{"value":1,"date":"2025-10-01 19:15:38.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"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-10-01 19:59:11.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":"9c12a3db0e7534be72b3d347656021262c4bc11e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-10-01 18:51:08.000000000","message":"Patch Set 1: Cherry Picked from branch stable/2025.2.","accounts_in_message":[],"_revision_number":1},{"id":"f50ff538e698e8dd351f18a07cb6b3348209dd0d","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-10-01 19:15:38.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"8d4c2c254679ce835bb4a4e441e0c000833fd567","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 19:59:11.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6c4cb24c787a42cdab14c4a2cfa71637\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d34f7e1e12474fac818612670ff04d79 : SUCCESS in 3m 29s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/6eab2813be8640789b1d9f76fa325294 : SUCCESS in 4m 17s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/f01159d2a841457cb79f4777c4e4eb48 : SUCCESS in 4m 18s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/249fc0f722924eb59e7567e337a67873 : SUCCESS in 4m 56s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/8467b23e0f8c4a14a6ede2cdeb64806f : SUCCESS in 4m 56s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/7e8b5e240d264aee813de07f3fedec82 : SUCCESS in 3m 22s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3059b140e85e4e86960f8e4519133099 : SUCCESS in 5m 01s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c06b2060c1db448ba1900b3c841d155a : SUCCESS in 2m 36s\n- vitrage-tempest-plugin-api https://zuul.opendev.org/t/openstack/build/24efc59a12df4e0f9870d77933c15cd6 : FAILURE in 18m 01s (non-voting)\n- vitrage-tempest-plugin-api-ipv6-only https://zuul.opendev.org/t/openstack/build/9b9dd0ab3c5448308759cc5098c9decf : FAILURE in 43m 02s (non-voting)\n- vitrage-tempest-plugin-datasources https://zuul.opendev.org/t/openstack/build/aa399dfa637946a182f980744e8b40ac : FAILURE in 57m 49s (non-voting)\n- vitrage-grenade https://zuul.opendev.org/t/openstack/build/3499e86819c54463a73c2e7338c147d8 : SUCCESS in 23m 33s","accounts_in_message":[],"_revision_number":1},{"id":"2aea6ae850877f990e18f0be3fb6623a1cc6d05b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 19:59:34.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"551fb4e22c5892ef45ac239954aa9a4c8318f8fa","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 20:49:57.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a47428df22ef49e5b3019d6a63eeb480\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/21c763a169e643bd894e09c4645969e5 : SUCCESS in 3m 10s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/af55fe81024b42909ac8ec6fbeb75795 : SUCCESS in 4m 10s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/dbe6849c41d54a3299a2a77afe8347ae : SUCCESS in 4m 39s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/9e79dc1164174875bb89902bd9804044 : SUCCESS in 5m 06s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/a98a0978527d4abe89020547747a666d : SUCCESS in 4m 24s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2334dd2b174e4b1ab7f34145a337fff0 : SUCCESS in 3m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0929a1e0f1a641e8b320a06409a0fef5 : SUCCESS in 2m 26s\n- vitrage-grenade https://zuul.opendev.org/t/openstack/build/622e530ee25e4b1aa2ba361ff9dff605 : SUCCESS in 38m 32s","accounts_in_message":[],"_revision_number":1},{"id":"3dc9488036291e01f8f10f2043afd1bde7683101","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 20:49:57.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"4608f903dc31bb3dd4e086ce95f4f475a969afad","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 20:50:51.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/de5b7eca24ba47828f0d72573797a098\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/55ad6fcbf3df4e8eac13ef6a35f9df2a : SUCCESS in 44s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/ee9223997d6b49e6a8d9fffd8dbf9796 : SUCCESS in 36s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"2a35b519eb2d50b5ebcd8dd08650b95ef37dfad4","revisions":{"2a35b519eb2d50b5ebcd8dd08650b95ef37dfad4":{"kind":"REWORK","_number":1,"created":"2025-10-01 18:51:08.000000000","uploader":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"ref":"refs/changes/12/962712/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/vitrage","ref":"refs/changes/12/962712/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/12/962712/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/12/962712/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/12/962712/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/vitrage refs/changes/12/962712/1"}}},"commit":{"parents":[{"commit":"946ad89ec439dae5da2b809b53fb833d32369471","subject":"Add unit testing for graph.query","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/946ad89ec439dae5da2b809b53fb833d32369471"}]}],"author":{"name":"Dmitriy Rabotyagov","email":"dmitriy@adria-cloud.com","date":"2025-09-30 18:46:39.000000000","tz":120},"committer":{"name":"Dmitriy Rabotyagov","email":"dmitriy@adria-cloud.com","date":"2025-10-01 18:51:08.000000000","tz":0},"subject":"Replace eval with function matching","message":"Replace eval with function matching\n\nUsing eval in code is not safe and may lead to security\nrisks, especially given that query itself is supplied by a user.\n\nThis refactors the code making is presumably safe\nand prone to code injections, which are possible with eval.\n\nStory: 2011539\nTask: 52866\nChange-Id: If629023052aa2c067c419bba10837f77bcc3e59c\nSigned-off-by: Dmitriy Rabotyagov \u003cdmitriy@adria-cloud.com\u003e\n(cherry picked from commit 5b57e2b32a6d02992a28d9a671ebba5e308fd141)\n(cherry picked from commit 89df4bd2ffda1a5ddea66cd828438a6a171a3b11)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/2a35b519eb2d50b5ebcd8dd08650b95ef37dfad4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/2a35b519eb2d50b5ebcd8dd08650b95ef37dfad4"}]},"branch":"refs/heads/stable/2024.2"}},"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":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"}}]}],"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":"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":{}}}]}
