)]}'
{"id":"openstack%2Fkeystone~961901","triplet_id":"openstack%2Fkeystone~stable%2F2025.1~I1a0ecd80a44eae6032e985091032aa91ee5c81a5","project":"openstack/keystone","branch":"stable/2025.1","topic":"use-secrets-library-in-oauth1-sql-backend","attention_set":{},"removed_from_attention_set":{"27900":{"account":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"last_update":"2025-12-10 08:26:36.000000000","reason":"removed on reply"},"35986":{"account":{"_account_id":35986,"name":"Adrian Jarvis","email":"adrian.r.jarvis@gmail.com","username":"adrian_jarvis"},"last_update":"2025-12-12 17:58:47.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I1a0ecd80a44eae6032e985091032aa91ee5c81a5","subject":"Replace the random library with secrets in oauth1","status":"MERGED","created":"2025-09-21 23:08:31.000000000","updated":"2025-12-12 17:59:47.000000000","submitted":"2025-12-12 17:58:47.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"961901-use-secrets-library-in-oauth1-sql-backend","meta_rev_id":"406ef6bd89bddc216bb98c8b2e8661f77727971f","_number":961901,"virtual_id_number":961901,"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":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2025-12-12 17:58:47.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"},{"value":0,"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}],"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":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"all":[{"value":2,"date":"2025-12-10 08:26:36.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:39.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},{"value":2,"date":"2025-12-12 15:53:07.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}],"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":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"},{"value":1,"date":"2025-12-12 15:53:07.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}],"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-21 23:34:32.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":"CC"},{"updated":"2025-09-22 00:51:54.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:39.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:39.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:53:07.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":"1826bea076b36404b896e7c31ba427354d8aace0","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:08:31.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"1cc33f0352dc6866a598270ce0c4484a55b6dd17","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-21 23:34:32.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9c7c51b0073045feab516524b052427f\n\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/3f24a2f28a3048e59d339267cc61b5c1 : SUCCESS in 23m 58s (non-voting)\n- openstack-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/e3f86b854f6a4beb9836589e266f53f7 : SUCCESS in 24m 06s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"ded55dd64438a115d510ed384a27d21bb3e752be","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-22 00:51:54.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d433063c33a94f41a682fb09564e3139\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/da6d2c02beb14a4fa98606ad46bfb88d : SUCCESS in 17m 14s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5a46a87c9e574b9ab668e3e62ecf572d : SUCCESS in 6m 49s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/23a2079194a545b7902b89ea929cb9c6 : SUCCESS in 13m 24s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/a42de899309147aa9b2c9d319a4c0066 : SUCCESS in 10m 11s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/96ba9da726c04fd08103f7dddf0c5292 : SUCCESS in 13m 51s\n- grenade https://zuul.opendev.org/t/openstack/build/73a17f7b24014a06b6391d8426e9f0e4 : SUCCESS in 38m 31s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/31a19a0d49a5464dac2577812088e632 : SUCCESS in 1h 38m 44s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/7ee4be69ca854c1da5cb65a06f45786e : SUCCESS in 28m 57s\n- keystone-dsvm-py3-functional-fips https://zuul.opendev.org/t/openstack/build/644934390e9e4af182183b446b9e658d : FAILURE in 36m 43s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/3024e9016b78427f851eb9eae74c8962 : FAILURE in 15m 34s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-jammy-k2k https://zuul.opendev.org/t/openstack/build/a1f3faa674144d77ac9ae2c634943938 : SUCCESS in 27m 19s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/f41d29e85ab24f4796375cc8c4c375b9 : SUCCESS in 9m 41s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/b43700fac9494957bd41456f22f3bd4b : FAILURE in 18m 51s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e0f8f746f7da4798b06ec2b20a45111d : SUCCESS in 40m 50s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/68c0b67a6d804948b7f8940e6bc8437c : SUCCESS in 6m 52s (non-voting)\n- keystone-dsvm-functional-oidc-federation https://zuul.opendev.org/t/openstack/build/428b79bd94e546c3b191133005c55e4b : SUCCESS in 31m 22s","accounts_in_message":[],"_revision_number":1},{"id":"c1c2a81950458363d9e8fdd241b5ee96edb4ab34","author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2025-12-05 21:01:39.000000000","message":"Patch Set 1: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"434a8bc718c07896be3564a34d792c551dc036b4","author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"date":"2025-12-10 08:26:36.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"6dd99de4665cc9b05207ffbaa95a4d50ecd62a46","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2025-12-12 15:53:07.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"ee0231a98c147922e5e19e66d4d039730ec45fb7","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 15:53:44.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"e3c867a34c72900e200bee8f42bde3505026a9e1","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 17:58:47.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c21defe6eb70492896d072b557d80f10\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/19ce5fb92ed8498c877c6677eaf2dd73 : SUCCESS in 5m 23s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/d0de02db70c54081a59bf744f4762939 : SUCCESS in 9m 05s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/466c15bf0b894a6d8ac8ccfbe3f7bd93 : SUCCESS in 11m 28s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c8a24f19612c49ca89364c786906adc0 : SUCCESS in 13m 24s\n- grenade https://zuul.opendev.org/t/openstack/build/6f4b581315d24e0eab6a247ba3dc6ddb : SUCCESS in 47m 45s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/8d25b59d2aed43fbb02f919031f78ba9 : SUCCESS in 2h 00m 29s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/b6a192e31f624b908aee96dddc726d37 : SUCCESS in 14m 16s\n- keystone-dsvm-py3-functional-federation-ubuntu-jammy-k2k https://zuul.opendev.org/t/openstack/build/cf17aefc385d45b4afa98f43a34dfa07 : SUCCESS in 27m 21s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/1cbd9146a9f145b8a3b6154eb6a55627 : SUCCESS in 1h 00m 14s","accounts_in_message":[],"_revision_number":1},{"id":"4c23443b65275798155d99594ac45eac68f0f962","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 17:58:47.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"406ef6bd89bddc216bb98c8b2e8661f77727971f","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-12 17:59:47.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/23b77393afca430d9c942ba0dac34c29\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/93b69dd4669544dea9b2188186a97cf9 : SUCCESS in 50s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"f1e80dd69c631cc8e1d4cc5412e103833ed92137","revisions":{"f1e80dd69c631cc8e1d4cc5412e103833ed92137":{"kind":"REWORK","_number":1,"created":"2025-09-21 23:08:31.000000000","uploader":{"_account_id":35986,"name":"Adrian Jarvis","email":"adrian.r.jarvis@gmail.com","username":"adrian_jarvis"},"ref":"refs/changes/01/961901/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/01/961901/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/01/961901/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/01/961901/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/01/961901/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/01/961901/1"}}},"commit":{"parents":[{"commit":"0bfe3957e979d226bdf6172474daa74b7233a36e","subject":"Merge \"api: Add log when creating unscoped token\" into stable/2025.1","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0bfe3957e979d226bdf6172474daa74b7233a36e"}]}],"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:07:51.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(cherry picked from commit 0ade43a83c8c44034fbf962dd566670bb1f86fdb)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/f1e80dd69c631cc8e1d4cc5412e103833ed92137"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/f1e80dd69c631cc8e1d4cc5412e103833ed92137"}]},"branch":"refs/heads/stable/2025.1"}},"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":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"}},{"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":{}}}]}
