)]}'
{"id":"openstack%2Fkeystone~961900","triplet_id":"openstack%2Fkeystone~stable%2F2025.2~I1a0ecd80a44eae6032e985091032aa91ee5c81a5","project":"openstack/keystone","branch":"stable/2025.2","topic":"use-secrets-library-in-oauth1-sql-backend","attention_set":{},"removed_from_attention_set":{"35986":{"account":{"_account_id":35986,"name":"Adrian Jarvis","email":"adrian.r.jarvis@gmail.com","username":"adrian_jarvis"},"last_update":"2025-12-12 17:38:05.000000000","reason":"Change was submitted"},"27900":{"account":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"last_update":"2025-12-10 08:26:44.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I1a0ecd80a44eae6032e985091032aa91ee5c81a5","subject":"Replace the random library with secrets in oauth1","status":"MERGED","created":"2025-09-21 23:02:45.000000000","updated":"2025-12-12 17:40:15.000000000","submitted":"2025-12-12 17:38:05.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":"961900-use-secrets-library-in-oauth1-sql-backend","meta_rev_id":"45e69caa8755cf62756950a4729ef83bcf99ff60","_number":961900,"virtual_id_number":961900,"owner":{"_account_id":35986,"name":"Adrian Jarvis","email":"adrian.r.jarvis@gmail.com","username":"adrian_jarvis"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"value":0,"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2025-12-12 17:38:05.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}],"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":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"all":[{"value":2,"date":"2025-12-12 15:52:41.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"value":2,"date":"2025-12-10 08:26:44.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2025-12-05 21:01:48.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}],"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":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"all":[{"value":1,"date":"2025-12-12 15:52:41.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"value":0,"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-09-22 00:15:26.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":"2025-12-05 21:01:48.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"state":"REVIEWER"},{"updated":"2025-12-05 21:01:48.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"state":"REVIEWER"},{"updated":"2025-12-12 15:52:41.000000000","updated_by":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"reviewer":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"state":"REVIEWER"}],"messages":[{"id":"8e2bf15039446ed59daf90f4355898e3576059de","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":35986,"name":"Adrian Jarvis","email":"adrian.r.jarvis@gmail.com","username":"adrian_jarvis"},"date":"2025-09-21 23:02:45.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a25d9b02b76b97771f2d3265deca7d02c4d74ed5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-22 00:15:26.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c6ee10f0646a4c4b981d3b9d7f581c77\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/f5c7a9c399154aa98cf013670d847867 : SUCCESS in 13m 39s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/82866aade10949f9870813a69d1959c2 : SUCCESS in 7m 29s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/4a1ef589e1514d66982bccedb7b668ff : SUCCESS in 12m 23s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/c95e3547d9dd467fbd37235653e0e782 : SUCCESS in 13m 06s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/8b4041a12a7a4253983afdb88ad88320 : SUCCESS in 16m 21s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2436c8aaa20849f394c0a4a9c23f3c3f : SUCCESS in 12m 44s\n- grenade https://zuul.opendev.org/t/openstack/build/b78df83104484973a8ce730b3eeb997c : SUCCESS in 42m 40s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/70c411553ef54c8f93a18a89f0700212 : SUCCESS in 1h 11m 54s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/e07c45baad0d4877acdac00c5f728b53 : SUCCESS in 15m 20s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/de4341de9f9e490c8b67530347bf6e9d : SUCCESS in 28m 43s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/6b3a18a6a10149879ffe33bd4dbf8c06 : FAILURE in 10m 26s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/4f49e67852df4c5c83d42cc61120331a : FAILURE in 27m 15s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/f6cd6191303a476e8bb2e2cd12701d9e : SUCCESS in 26m 42s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/75505bc06b5343f3873752704ebcdd27 : SUCCESS in 21m 38s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/67e67ac0d8494e3d92601c57c86b0c10 : SUCCESS in 33m 47s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ee80c9c2ab6f49bea7e4ead1cfe620cb : SUCCESS in 1h 01m 10s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/4b3ddf864b2e4bad83e56860d403b893 : FAILURE in 38m 52s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/b55edcfd41d0459598de454850c1752c : SUCCESS in 8m 04s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"0464e950899c4db865bbd0c3423d527a4ad1e85a","author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2025-12-05 21:01:48.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"cc14bf1c346b33b5ffcec7c48657050758300bab","author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"date":"2025-12-10 08:26:44.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"e3f9c59e58972a1083d5d1bd0ad479582a8ce727","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2025-12-12 15:52:41.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"643b4ac2a9b6b80d8f58f058baf2840464e1d2dc","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 15:53:30.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"93748fbfcb06ea4218f4f24882e001720c906b8c","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 17:38:05.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/df56673be1a745c5a3896ec8abf00052\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0c4f361deae845148c595a4bd1ac3591 : SUCCESS in 7m 55s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/a5fe44b8cce14fe285171abf81bc0685 : SUCCESS in 10m 28s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/613ec48fa4034916ae0082c7f1d0fe70 : SUCCESS in 7m 56s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c46747f8b79b42a8a9172eb4ca7dc9e6 : SUCCESS in 13m 18s\n- grenade https://zuul.opendev.org/t/openstack/build/adf61646f0de459f9a818f6c4b9dfc93 : SUCCESS in 29m 11s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/6c3f3a3d4f5a40f5872378915cbc654a : SUCCESS in 59m 07s\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/525c60d132dc421e87dc666aca154063 : SUCCESS in 14m 30s\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/8b995e9afb2c49f5af97d59fcfaed546 : SUCCESS in 25m 13s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/68ed2f5aa3be4d9192791f7e952f1467 : SUCCESS in 34m 36s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/c19636140d5643b48a3e3e672c2d6f4e : FAILURE in 19m 43s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"4164cfb22fe2ea488e0222e3b04c212d8fa3bdf8","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 17:38:05.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"45e69caa8755cf62756950a4729ef83bcf99ff60","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 17:40:15.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/bcf32b6979144186a4fa708f303f157c\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4144a0beef154dfeb2c6dcb8e9f15a4e : SUCCESS in 56s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"0ade43a83c8c44034fbf962dd566670bb1f86fdb","revisions":{"0ade43a83c8c44034fbf962dd566670bb1f86fdb":{"kind":"REWORK","_number":1,"created":"2025-09-21 23:02:45.000000000","uploader":{"_account_id":35986,"name":"Adrian Jarvis","email":"adrian.r.jarvis@gmail.com","username":"adrian_jarvis"},"ref":"refs/changes/00/961900/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/00/961900/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/00/961900/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/00/961900/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/00/961900/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/00/961900/1"}}},"commit":{"parents":[{"commit":"4a376aaae91d201936be885231ebe19fecb57970","subject":"Update TOX_CONSTRAINTS_FILE for stable/2025.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4a376aaae91d201936be885231ebe19fecb57970"}]}],"author":{"name":"Adrian Jarvis","email":"adrian.jarvis@catalystcloud.nz","date":"2025-09-18 04:39:16.000000000","tz":720},"committer":{"name":"Adrian Jarvis","email":"adrian.jarvis@catalystcloud.nz","date":"2025-09-21 23:01:55.000000000","tz":720},"subject":"Replace the random library with secrets in oauth1","message":"Replace the random library with secrets in oauth1\n\nThe module keystone.oauth1.backends.sql was using the random library to\ngenerate the verifier of a request token.  The bandit security scanner\ntool from version 1.8.4 onwards identifies the use random.sample as a\nlow security issue, despite random actually being an alias to\nrandom.SystemRandom(). This change replaces the use of random library\nwith the secrets library and avoids the use of shadowing random.\n\nChange-Id: I1a0ecd80a44eae6032e985091032aa91ee5c81a5\nSigned-off-by: Adrian Jarvis \u003cadrian.jarvis@catalystcloud.nz\u003e\n(cherry picked from commit 420503a3731fec618e4e8a83415e8ec416ca35da)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0ade43a83c8c44034fbf962dd566670bb1f86fdb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0ade43a83c8c44034fbf962dd566670bb1f86fdb"}]},"branch":"refs/heads/stable/2025.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":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}}]}],"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":{}}}]}
