)]}'
{"id":"openstack%2Fvitrage~962617","triplet_id":"openstack%2Fvitrage~master~If629023052aa2c067c419bba10837f77bcc3e59c","project":"openstack/vitrage","branch":"master","hashtags":[],"change_id":"If629023052aa2c067c419bba10837f77bcc3e59c","subject":"Replace eval with function matching","status":"MERGED","created":"2025-09-30 18:46:49.000000000","updated":"2025-10-01 10:42:06.000000000","submitted":"2025-10-01 10:40:31.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":"962617","meta_rev_id":"cf8efdebbe03949ac6e1fe11c779fa00bc92e922","_number":962617,"virtual_id_number":962617,"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 10:40:31.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-09-30 19:51:01.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 09:38:08.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-09-30 20:10:44.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":"ce29088a5f5c75dbf6852a567ce251ab1f3fd0d5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-09-30 18:46:49.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7184cdadc89a5862242c6ceee553c673f0b4def4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-09-30 18:59:08.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"ac62952d067de450459566e3199de972ba9a9ee2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-09-30 19:09:16.000000000","message":"Patch Set 3: Patch Set 2 was rebased","accounts_in_message":[],"_revision_number":3},{"id":"160fa4bfc50f5c3c2ec7ffe16040840d656249b4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-09-30 19:16:40.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"923be299e58659b1c9e5acbee92379cb4e0fee17","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-09-30 19:51:01.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"f315cfd4aa98486ecf7be8741a21ff746d603547","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-30 20:10:44.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/436e927fa3ca4d37952375888e2a5585\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/dc5609f59cb8434d88e27b84a9a2d2b5 : SUCCESS in 2m 48s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/a8f57289a98e4f3e830617fee9309cce : SUCCESS in 4m 16s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/d946d70facf341c99c2ad515592260f2 : SUCCESS in 4m 13s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a2942bbedd844bef9abcfe199d0928ab : SUCCESS in 7m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/80eb828e4d1a43c2b0fbde9a73398474 : SUCCESS in 4m 21s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/b8eebc8aea7e47e59b46dad46b7f3f5b : SUCCESS in 2m 49s\n- vitrage-tempest-plugin-api https://zuul.opendev.org/t/openstack/build/fb6449cde1a7467daa7e952123e4f4f8 : FAILURE in 47m 58s (non-voting)\n- vitrage-tempest-plugin-api-ipv6-only https://zuul.opendev.org/t/openstack/build/0605c82bfc4b45eda97eab3ef85e62d5 : FAILURE in 27m 25s (non-voting)\n- vitrage-tempest-plugin-datasources https://zuul.opendev.org/t/openstack/build/f65b8040a4594d5dae9dddc52869642e : FAILURE in 52m 33s (non-voting)\n- vitrage-grenade https://zuul.opendev.org/t/openstack/build/a2b63eea9f8c4e9794d1f64aa5e91164 : SUCCESS in 32m 15s","accounts_in_message":[],"_revision_number":4},{"id":"49e8a1858382909aa48dcf4d0a339590c29918ec","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2025-10-01 09:38:08.000000000","message":"Patch Set 4: Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"b30c510cea92756e87df0cdd78f238cf5f55ea2b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 09:38:48.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"25d3ac060a8f7e59eb3d5435db0f30fcd9296b02","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 10:40:31.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1bc4e9e1cede42a1bcd1222e0a2bb1fa\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9e5bfd0aafac459bbdd018ce6bd1e37c : SUCCESS in 2m 24s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/f6e5382dc86a4feb8bbf81cb1f244231 : SUCCESS in 4m 04s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/8e150d5588e94f9e9820186db32aa155 : SUCCESS in 2m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/dd07a841dd314f5ba320f5ed569428cd : SUCCESS in 4m 06s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d2e183a014f64dce8ec99d05da8bea30 : SUCCESS in 1m 35s\n- vitrage-grenade https://zuul.opendev.org/t/openstack/build/5b4ec5d887984d3dabb0bee7a5729c2f : SUCCESS in 53m 42s","accounts_in_message":[],"_revision_number":4},{"id":"8a5f61bda2c65cb5c753a589d6216a34f4cbd48f","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 10:40:31.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"cf8efdebbe03949ac6e1fe11c779fa00bc92e922","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-01 10:42:06.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5132d50650934473990beb8a5780e4de\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d97560b924a942c6a5067b410b950c04 : SUCCESS in 43s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/8e90ead0c75e4ac49c685cd6af4513f8 : SUCCESS in 37s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"5b57e2b32a6d02992a28d9a671ebba5e308fd141","revisions":{"17564047fd14d75f3526769a8b251d3832cb3d00":{"kind":"REWORK","_number":1,"created":"2025-09-30 18:46:49.000000000","uploader":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"ref":"refs/changes/17/962617/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/vitrage","ref":"refs/changes/17/962617/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/vitrage refs/changes/17/962617/1"}}},"commit":{"parents":[{"commit":"a1f86950e1314b0c740f9cd9b7e9dbab7d02af51","subject":"Update master for stable/2025.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/a1f86950e1314b0c740f9cd9b7e9dbab7d02af51"}]}],"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-09-30 18:46:39.000000000","tz":120},"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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/17564047fd14d75f3526769a8b251d3832cb3d00"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/17564047fd14d75f3526769a8b251d3832cb3d00"}]},"branch":"refs/heads/master"},"6e82106e049c60735825aa25d3d3c3f715f099f8":{"kind":"REWORK","_number":2,"created":"2025-09-30 18:59:08.000000000","uploader":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"ref":"refs/changes/17/962617/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/vitrage","ref":"refs/changes/17/962617/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/vitrage refs/changes/17/962617/2"}}},"commit":{"parents":[{"commit":"a1f86950e1314b0c740f9cd9b7e9dbab7d02af51","subject":"Update master for stable/2025.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/a1f86950e1314b0c740f9cd9b7e9dbab7d02af51"}]}],"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-09-30 18:58:53.000000000","tz":120},"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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/6e82106e049c60735825aa25d3d3c3f715f099f8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/6e82106e049c60735825aa25d3d3c3f715f099f8"}]},"branch":"refs/heads/master"},"9a4e08dd02de1739bd96a09ac4a4f1b42aea10c5":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2025-09-30 19:09:16.000000000","uploader":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"ref":"refs/changes/17/962617/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/vitrage","ref":"refs/changes/17/962617/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/vitrage refs/changes/17/962617/3"}}},"commit":{"parents":[{"commit":"a45ca6541b3f3bfb881497e0cae4b03981e15401","subject":"Add unit testing for graph.query","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/a45ca6541b3f3bfb881497e0cae4b03981e15401"}]}],"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-09-30 19:09:16.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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/9a4e08dd02de1739bd96a09ac4a4f1b42aea10c5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/9a4e08dd02de1739bd96a09ac4a4f1b42aea10c5"}]},"branch":"refs/heads/master","description":"Rebase"},"5b57e2b32a6d02992a28d9a671ebba5e308fd141":{"kind":"REWORK","_number":4,"created":"2025-09-30 19:16:40.000000000","uploader":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"ref":"refs/changes/17/962617/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/vitrage","ref":"refs/changes/17/962617/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/vitrage refs/changes/17/962617/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/vitrage refs/changes/17/962617/4"}}},"commit":{"parents":[{"commit":"a45ca6541b3f3bfb881497e0cae4b03981e15401","subject":"Add unit testing for graph.query","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/a45ca6541b3f3bfb881497e0cae4b03981e15401"}]}],"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-09-30 19:15:14.000000000","tz":120},"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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/5b57e2b32a6d02992a28d9a671ebba5e308fd141"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/vitrage/commit/5b57e2b32a6d02992a28d9a671ebba5e308fd141"}]},"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":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":{}}}]}
