)]}'
{"id":"openstack%2Fcyborg-tempest-plugin~992329","triplet_id":"openstack%2Fcyborg-tempest-plugin~master~I6b95347c51a5647a29c45afc72bb91dd7717e4d6","project":"openstack/cyborg-tempest-plugin","branch":"master","topic":"bp/consistent-and-secure-rbac","attention_set":{},"removed_from_attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-07-21 13:15:03.000000000","reason":"\u003cGERRIT_ACCOUNT_11604\u003e replied on the change","reason_account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},"12393":{"account":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"last_update":"2026-07-21 16:20:25.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I6b95347c51a5647a29c45afc72bb91dd7717e4d6","subject":"Add new-defaults config and multi-persona client aliases","status":"MERGED","created":"2026-06-08 17:40:21.000000000","updated":"2026-07-21 16:20:25.000000000","submitted":"2026-07-21 16:20:25.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":20,"unresolved_comment_count":1,"has_review_started":true,"submission_id":"992329-bp/consistent-and-secure-rbac","meta_rev_id":"92c5f41f5b26d9076b8a893083e0618fed6893a5","_number":992329,"virtual_id_number":992329,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-07-21 16:20:24.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":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":2,"date":"2026-07-21 13:15:03.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"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":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":1,"date":"2026-07-21 15:29:50.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"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":{"CC":[{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"}],"REVIEWER":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-08 18:16:48.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":"2026-06-22 08:36:43.000000000","updated_by":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"reviewer":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"state":"CC"},{"updated":"2026-06-30 09:25:22.000000000","updated_by":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"reviewer":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"state":"REVIEWER"}],"messages":[{"id":"f60606c0fb0f2f065d9643200b2d4ccf443346a0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-08 17:40:21.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"87789430f9211c839ea761872bac33faded01754","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-08 17:57:50.000000000","message":"Topic set to bp/consistent-and-secure-rbac","accounts_in_message":[],"_revision_number":1},{"id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-08 18:16:48.000000000","message":"Patch Set 1: Verified-1\n\n(8 comments)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/4b9a089d441a4e6089b4bf08c01504ad\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3daa9e5785c84b12807a46aae1a1cfbe : FAILURE in 2m 33s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/074f624b23da45ac842450963aecec2d : SUCCESS in 14m 35s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/bd95c569a4164d14a2a0b2c9232ddd89 : SUCCESS in 23m 32s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/28617bb962dc43d1af3aaf0dea81fcf3 : SUCCESS in 30m 41s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/cb4d20de8f054644b78ec21288d652b4 : SUCCESS in 17m 42s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/bd75f26f998e4f0096da40f03d0d8ce5 : SUCCESS in 25m 19s","accounts_in_message":[],"_revision_number":1},{"id":"d6e88993649bace74226a2c42e44a565ebb3cfb0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-08 18:46:18.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":"0bff85f5130516dcb3f3f21bb99cd40a932eda45","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-08 18:54:47.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"e3278e5060b856ad008c9be51aea2674331d487a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-08 19:38:10.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/98ae388db4b14e1cbe0bb88b01f0d8d6\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/183a024b3cfc4e8da14665da046a3def : SUCCESS in 2m 49s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/e70c787ee7924efab139fc671d523013 : SUCCESS in 31m 19s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/f61bf832f185445fb1073bf65f4e7de1 : SUCCESS in 36m 48s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/3de2c8a0bf194d1ea55a401dee136735 : SUCCESS in 36m 16s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/131897f565384863ae5cb22424fb1fc6 : SUCCESS in 21m 24s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/9331e2ecac2e47fa80b9a96ecc24e0ed : SUCCESS in 31m 52s","accounts_in_message":[],"_revision_number":3},{"id":"30e96ac9222fdd9eb541b62ed108679db397a070","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-22 08:36:14.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"fe754a1aef7420203362ebd6111f0137f16b82d8","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-06-22 08:36:43.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"5ff8b65124070932fe2c324a28458dc2757d9c21","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-06-22 10:42:42.000000000","message":"Patch Set 3:\n\nBuild failed (automatic-ci pipeline). To rerun just this ci comment\n\"teim-ci: auto\". To rerun other ci jobs comment \"recheck\".\nNote this ci does run on \"recheck\".\n\nhttps://zuul.teim.app/t/main/buildset/1ef59adbaf264934aeb5cfe62a68be1b\n\n- teim-code-review https://zuul.teim.app/t/main/build/869b0ff2a15e4300935df715f5a2370b : FAILURE in 4m 06s","accounts_in_message":[],"_revision_number":3},{"id":"9e444b0b6bca4ada4d91b90aab29317c32e860fe","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-22 23:46:34.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"1e84aeee506eec09024b99407ee8904d618fdb0f","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-06-22 23:47:03.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"26d2c89b24886304af6eca9b10de45d7c73f0a75","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-06-23 02:34:16.000000000","message":"Patch Set 3:\n\nBuild failed (automatic-ci pipeline). To rerun just this ci comment\n\"teim-ci: auto\". To rerun other ci jobs comment \"recheck\".\nNote this ci does run on \"recheck\".\n\nhttps://zuul.teim.app/t/main/buildset/e2eace9e483b43859d98ba309db06573\n\n- teim-code-review https://zuul.teim.app/t/main/build/5675aaa83df44024909fc153045b9454 : FAILURE in 18m 37s","accounts_in_message":[],"_revision_number":3},{"id":"3aad2989793339a19e4948bd9e7d9653940e815a","author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"date":"2026-06-30 09:25:22.000000000","message":"Patch Set 3: Code-Review+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":3},{"id":"cd948d031f4cf148bcd6ca2ca563d17a6cdc3375","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-06 20:49:45.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.\n\nCopied Votes:\n* Code-Review+1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"c858c9a0c687c9bdbba6164591ba522b415e3545","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-06 20:50:49.000000000","message":"Patch Set 4:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":4},{"id":"dc82b08a87fa35a511713bd0b3c31f105d9d25f5","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-06 20:53:09.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"2b0003ec287c1293111752e5d984234cbf65ed1c","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-06 21:23:08.000000000","message":"Patch Set 4:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/623fba21c6d048f0a516963d2d062871\n\n- teim-code-review https://zuul.teim.app/t/main/build/50e1b0c7557348f3a8d84eab07b5c60d : SUCCESS in 9m 33s\n\nWarning:\n  BaseAPITest.setup_clients() creates cyborg_reader_client, cyborg_member_client, and cyborg_manager_client aliases, but all eight API test subclasses still use self.os_admin.cyborg_client exclusively. No test method references any of the new least-privilege aliases, so the RBAC behavior under diff... Impact: The enforce_scope config option and alias selection logic are unexercised. If the alias wiring is incorrect (e.g., wrong persona mapped), no test will catch it. Additionally, the actual Cyborg RBAC policy under different personas is not validated. Recommendation: In a follow-up patch (or as part of this blueprint series), update at least some existing tests to use the least-privilege aliases (e.g., self.cyborg_reader_client for read operations, self.cyborg_member_client for ARQ create/delete) and add tests that assert 403 Forbidden when a lesser persona attempts a privileged action.","accounts_in_message":[],"_revision_number":4},{"id":"b3d3f5fae2f9ba990d6545e8373e4712c78578f1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-06 21:33:05.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/60c5086704804c689458020a9eeb49f8\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a32489e889794951b660afeb00f7c47e : SUCCESS in 4m 26s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/c1bed1dae72142fd949c87611a7265e1 : SUCCESS in 15m 50s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/e4bbddbb47c44311b44bedcc9f894e58 : SUCCESS in 30m 12s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/48bf27ffa52846578b9e328806b1a730 : SUCCESS in 14m 37s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/708787871f034a88ad61f1c4bc7c2b58 : SUCCESS in 14m 26s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/df9b2ec303824cfd918f4b9d79378f51 : SUCCESS in 32m 49s","accounts_in_message":[],"_revision_number":4},{"id":"0389ea7aab8785e2d294897497075fcce3f890c7","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-06 21:33:06.000000000","message":"Patch Set 4: Verified-2\n\nBuild failed (gate pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\nhttps://zuul.opendev.org/t/openstack/buildset/29de5ef0f9434e4bbe91b3aa42e49322\n\n\nWarning:\n  Change 992297,5 in project openstack/cyborg does not share a change queue with 992329 in project openstack/cyborg-tempest-plugin","accounts_in_message":[],"_revision_number":4},{"id":"df6bbd8cd6428359c4954f53ee1254fe818ac351","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-06 21:40:47.000000000","message":"Patch Set 4: -Code-Review Workflow-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"7d56a34e1480f850f7e8654326766e5076cd985a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-06 21:56:22.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-2 (copy condition: \"NEVER\")\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"071b22b0d4aeb1739990f05892fb952b1a3c5faf","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-06 21:58:21.000000000","message":"Patch Set 5:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":5},{"id":"a9a72220dde47fd0e9a87ee30d25754419c3f11d","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-06 22:13:38.000000000","message":"Patch Set 5:\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/3a2afa8865014cffb6cc3c0d93c9d04e\n\n- teim-code-review https://zuul.teim.app/t/main/build/397ed9d5d58847999510150d21df65e9 : SUCCESS in 7m 44s","accounts_in_message":[],"_revision_number":5},{"id":"572fa1630b7ca9eebcba67735a628e432ac99dca","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-06 22:36:43.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5458d9a6ea4f4a83add1b539cb58f63d\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b8e06f2d620b4a76accb5b03c0256bf6 : SUCCESS in 3m 14s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/972a7b0944a042ab9972a3e5a757c47d : SUCCESS in 13m 37s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/c5b73597a4ec44ecaa9766dbd3afa79e : SUCCESS in 22m 58s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/c64e4b3a11e64d87a5627e45ddec3b18 : SUCCESS in 31m 56s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/eca38e4e1dc140db911d3f74f085d91f : SUCCESS in 32m 35s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/3263907a90e1410c98ad4cf9c14fa69e : SUCCESS in 33m 34s","accounts_in_message":[],"_revision_number":5},{"id":"0bf56b5a12f1f36806b69167712755ee0c5ab1d3","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-07 10:39:26.000000000","message":"Patch Set 5: Workflow-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":5},{"id":"e94198424f9de4f5c6ae33d3b79b95f9dffb76ed","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-07 10:40:49.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"62a1dee18b2de12624b0871bbb9260fae6cec0fc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-20 15:10:47.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"8b22ff80af5c8f9147d6cd3859ad76624461a837","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-20 15:11:11.000000000","message":"Patch Set 6:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":6},{"id":"11738fbcab4a54cf027670a5f41690912f0e7279","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-20 15:13:04.000000000","message":"Patch Set 6: Workflow-1","accounts_in_message":[],"_revision_number":6},{"id":"dd00c45beddae160a73c912fc3228e537cebd60b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-20 16:12:27.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fb8a03360f96427da238f01c037ed11a\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9f013a30d2534da19b3bbd38b44c0bea : SUCCESS in 4m 02s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/9e20882884f541fbb224d1c289d6c4c6 : SUCCESS in 55m 28s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/aa796284ed714615805501fd2cf314c3 : SUCCESS in 34m 38s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/51b2adbeadde4679a70ec26a457f58e6 : SUCCESS in 23m 49s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/92b69936e6864e9d83a9552e1f1d746b : SUCCESS in 29m 35s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/11f8c44aa7984bd1b505ad49013cc686 : SUCCESS in 44m 41s","accounts_in_message":[],"_revision_number":6},{"id":"a7af3d32891aaa739014034170dadb78c7d56898","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-20 17:01:41.000000000","message":"Patch Set 6:\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/dc93896bbd06422a8c664f213b24afcf\n\n- teim-code-review https://zuul.teim.app/t/main/build/c4a6a66ffe464ea6bacb39490cea9f85 : SUCCESS in 10m 56s","accounts_in_message":[],"_revision_number":6},{"id":"7da514f7d7c78cb98b205b3f1c2155e849c044fe","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-21 10:24:28.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":7},{"id":"1842f9616984e293583ead0d241530f8f5777723","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-21 10:34:37.000000000","message":"Patch Set 7: Verified-1\n\nThis change depends on a change that failed to merge.\n\nChange https://review.opendev.org/c/openstack/cyborg/+/992297 is needed.","accounts_in_message":[],"_revision_number":7},{"id":"f9839f35b65ac63dfa226a51bce1b9c65fa30e4f","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-21 11:52:02.000000000","message":"Patch Set 7:\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"0beba044fed38d5100d66fcc232cd92214b31148","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-21 11:52:20.000000000","message":"Patch Set 7:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":7},{"id":"6949f7d8db2272835d2a8c2f510cb2eb8102f95b","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-21 12:21:29.000000000","message":"Patch Set 7:\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/2ce8644dd3ba47cda373b0b7b86201d8\n\n- teim-code-review https://zuul.teim.app/t/main/build/79dc7aabee044b5cbf70c741ed40fb89 : SUCCESS in 9m 41s","accounts_in_message":[],"_revision_number":7},{"id":"a9e110eaac29a6c8854ec271a8385ea8278bb008","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-21 13:05:26.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2226069285fc42acbb17266d88d53985\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3f494536956440d0b807dd4aacc12838 : SUCCESS in 4m 09s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/e1b232808d2d42f08161891f21c4bb1f : SUCCESS in 59m 40s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/9b4fdb039ee247c2959de9ad146834f4 : SUCCESS in 20m 29s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/b732976d18db4b85819b8135a629bd31 : SUCCESS in 32m 53s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/ca60d8533ca14fe5abf38ec016bf4624 : SUCCESS in 20m 34s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/74e534d42aa249c4a53cb43c53a7fe01 : SUCCESS in 43m 19s","accounts_in_message":[],"_revision_number":7},{"id":"fc064a98436267a99abb4a31fc74cbd1baf76456","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-21 13:15:03.000000000","message":"Patch Set 7: Code-Review+2","accounts_in_message":[],"_revision_number":7},{"id":"257e31e2baaece8a0a97a1c53f9603e2bdc78d09","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-21 15:29:50.000000000","message":"Patch Set 7: Workflow+1","accounts_in_message":[],"_revision_number":7},{"id":"1c1988a4f2cfef9ee68770b0b2891b2241ae387b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-21 15:30:34.000000000","message":"Patch Set 7: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":7},{"id":"f49cb6dff57e02e96c983fc33fed2ab75876e04c","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-21 16:20:24.000000000","message":"Patch Set 7: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b626fa2e694e4938ac172937f54368bf\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/626fe0888981492da20ab0c6caa4964c : SUCCESS in 3m 35s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/30c76143334e42c8a21825bb97fc1040 : SUCCESS in 33m 57s\n- cyborg-tempest-2026-1 https://zuul.opendev.org/t/openstack/build/602ff51a7baf4faea363133b1a41a8d3 : SUCCESS in 30m 31s\n- cyborg-tempest-2025-2 https://zuul.opendev.org/t/openstack/build/c054565ca00f4e829623716878797ee0 : SUCCESS in 31m 58s\n- cyborg-tempest-2025-1 https://zuul.opendev.org/t/openstack/build/ce3f2fab04c74c069d7476af24534698 : SUCCESS in 31m 39s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/473df6bc60d24a07ac40f51c3f46edad : SUCCESS in 44m 49s","accounts_in_message":[],"_revision_number":7},{"id":"92c5f41f5b26d9076b8a893083e0618fed6893a5","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-21 16:20:25.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":7}],"current_revision_number":7,"current_revision":"30bd6e8b21791ad18129dbb674c1406954c4020a","revisions":{"7323de0751ebebe3ca9010126822dddef1b0b1f0":{"kind":"REWORK","_number":1,"created":"2026-06-08 17:40:21.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/1"}}},"commit":{"parents":[{"commit":"6dd66d88428ab86b37ebae80906435a1a656c948","subject":"Remove custom service_token handling, adopt tempest native","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/6dd66d88428ab86b37ebae80906435a1a656c948"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 17:39:54.000000000","tz":60},"subject":"Add enforce_scope config and multi-persona client aliases","message":"Add enforce_scope config and multi-persona client aliases\n\nAdd [enforce_scope] cyborg config option to the plugin, following\nthe same pattern as nova, neutron, glance, and cinder in core\ntempest. The option indicates whether Cyborg is running with\nenforce_scope and enforce_new_defaults enabled.\n\nUpdate BaseAPITest to request credentials for all Keystone\npersonas: admin, project_admin, project_manager, project_member,\nproject_reader, and service_user. Create a CyborgRestClient for\neach persona and expose least-privilege alias attributes that\nselect the appropriate client based on the config option:\n\n  cyborg_arq_read_client  -- reader (new) / admin (legacy)\n  cyborg_arq_write_client -- member (new) / admin (legacy)\n  cyborg_hw_read_client   -- manager (new) / admin (legacy)\n  cyborg_dp_read_client   -- reader (new) / admin (legacy)\n  cyborg_dp_write_client  -- always admin\n  cyborg_admin_client     -- always admin\n  cyborg_service_client   -- service role\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from all API test\nsubclasses so they inherit BaseAPITest\u0027s full credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/7323de0751ebebe3ca9010126822dddef1b0b1f0"}]},"branch":"refs/heads/master"},"49c56e48aecc95d1236a5e3c5354fd45c842be42":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-06-08 18:46:18.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/2"}}},"commit":{"parents":[{"commit":"4db92ff257aaccafa6a7fac5069b4b3c57234b28","subject":"Ensure unique device profile names and cleanup in API tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/4db92ff257aaccafa6a7fac5069b4b3c57234b28"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 18:44:21.000000000","tz":60},"subject":"Add enforce_scope config and multi-persona client aliases","message":"Add enforce_scope config and multi-persona client aliases\n\nAdd [enforce_scope] cyborg config option to the plugin, following\nthe same pattern as nova, neutron, glance, and cinder in core\ntempest. The option indicates whether Cyborg is running with\nenforce_scope and enforce_new_defaults enabled.\n\nUpdate BaseAPITest to request credentials for all Keystone\npersonas: admin, project_admin, project_manager, project_member,\nproject_reader, and service_user. Create a CyborgRestClient for\neach persona and expose least-privilege alias attributes that\nselect the appropriate client based on the config option:\n\n  cyborg_arq_read_client  -- reader (new) / admin (legacy)\n  cyborg_arq_write_client -- member (new) / admin (legacy)\n  cyborg_hw_read_client   -- manager (new) / admin (legacy)\n  cyborg_dp_read_client   -- reader (new) / admin (legacy)\n  cyborg_dp_write_client  -- always admin\n  cyborg_admin_client     -- always admin\n  cyborg_service_client   -- service role\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from all API test\nsubclasses so they inherit BaseAPITest\u0027s full credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/49c56e48aecc95d1236a5e3c5354fd45c842be42"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/49c56e48aecc95d1236a5e3c5354fd45c842be42"}]},"branch":"refs/heads/master"},"f0ce8befc494decb6c33a6cf35af4d643947ae32":{"kind":"REWORK","_number":3,"created":"2026-06-08 18:54:47.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/3"}}},"commit":{"parents":[{"commit":"4db92ff257aaccafa6a7fac5069b4b3c57234b28","subject":"Ensure unique device profile names and cleanup in API tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/4db92ff257aaccafa6a7fac5069b4b3c57234b28"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 18:54:01.000000000","tz":60},"subject":"Add enforce_scope config and multi-persona client aliases","message":"Add enforce_scope config and multi-persona client aliases\n\nAdd [enforce_scope] cyborg config option to the plugin, following\nthe same pattern as nova, neutron, glance, and cinder in core\ntempest. The option indicates whether Cyborg is running with\nenforce_scope and enforce_new_defaults enabled.\n\nUpdate BaseAPITest to request credentials for all Keystone\npersonas: admin, project_admin, project_manager, project_member,\nproject_reader, and service_user. Create a CyborgRestClient for\neach persona and expose least-privilege alias attributes that\nselect the appropriate client based on the config option:\n\n  cyborg_arq_read_client  -- reader (new) / admin (legacy)\n  cyborg_arq_write_client -- member (new) / admin (legacy)\n  cyborg_hw_read_client   -- manager (new) / admin (legacy)\n  cyborg_dp_read_client   -- reader (new) / admin (legacy)\n  cyborg_dp_write_client  -- always admin\n  cyborg_admin_client     -- always admin\n  cyborg_service_client   -- service role\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from all API test\nsubclasses so they inherit BaseAPITest\u0027s full credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/f0ce8befc494decb6c33a6cf35af4d643947ae32"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/f0ce8befc494decb6c33a6cf35af4d643947ae32"}]},"branch":"refs/heads/master"},"53234476773aa66dc1f6571c30eda053cbe90b44":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2026-07-06 20:49:45.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/4"}}},"commit":{"parents":[{"commit":"8345a94eb1e9427374b9bfac9b1cfdd9d0524b13","subject":"Ensure unique device profile names and cleanup in API tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/8345a94eb1e9427374b9bfac9b1cfdd9d0524b13"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-07-06 20:40:32.000000000","tz":60},"subject":"Add enforce_scope config and multi-persona client aliases","message":"Add enforce_scope config and multi-persona client aliases\n\nAdd [enforce_scope] cyborg config option to the plugin, following\nthe same pattern as nova, neutron, glance, and cinder in core\ntempest. The option indicates whether Cyborg is running with\nenforce_scope and enforce_new_defaults enabled.\n\nUpdate BaseAPITest to request credentials for all Keystone\npersonas: admin, project_admin, project_manager, project_member,\nproject_reader, and service_user. Create a CyborgRestClient for\neach persona and expose least-privilege alias attributes that\nselect the appropriate client based on the config option:\n\n  cyborg_arq_read_client  -- reader (new) / admin (legacy)\n  cyborg_arq_write_client -- member (new) / admin (legacy)\n  cyborg_hw_read_client   -- manager (new) / admin (legacy)\n  cyborg_dp_read_client   -- reader (new) / admin (legacy)\n  cyborg_dp_write_client  -- always admin\n  cyborg_admin_client     -- always admin\n  cyborg_service_client   -- service role\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from all API test\nsubclasses so they inherit BaseAPITest\u0027s full credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/53234476773aa66dc1f6571c30eda053cbe90b44"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/53234476773aa66dc1f6571c30eda053cbe90b44"}]},"branch":"refs/heads/master"},"7070653af8208310edb2fc4ca1b98dac6e726348":{"kind":"REWORK","_number":5,"created":"2026-07-06 21:56:22.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/5"}}},"commit":{"parents":[{"commit":"9af03099ea49d97bc3bd162c316e80acd43f5b34","subject":"Ensure unique device profile names and cleanup in API tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/9af03099ea49d97bc3bd162c316e80acd43f5b34"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-07-06 21:49:59.000000000","tz":60},"subject":"Add enforce_scope config and multi-persona client aliases","message":"Add enforce_scope config and multi-persona client aliases\n\nAdd [enforce_scope] cyborg config option to the plugin, following\nthe same pattern as nova, neutron, glance, and cinder in core\ntempest. The option indicates whether Cyborg is running with\nenforce_scope and enforce_new_defaults enabled.\n\nUpdate BaseAPITest to request credentials for all Keystone\npersonas: admin, project_admin, project_manager, project_member,\nproject_reader, and service_user. Create CyborgRestClient instances\nfor each persona and expose canonical persona clients that select\nthe appropriate persona based on the config option:\n\n  cyborg_admin_client   -- always admin\n  cyborg_manager_client -- manager (new) / admin (legacy)\n  cyborg_member_client  -- member (new) / admin (legacy)\n  cyborg_reader_client  -- reader (new) / admin (legacy)\n  cyborg_service_client -- service role\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from all API test\nsubclasses so they inherit BaseAPITest\u0027s full credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/7070653af8208310edb2fc4ca1b98dac6e726348"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/7070653af8208310edb2fc4ca1b98dac6e726348"}]},"branch":"refs/heads/master"},"f879a43f481ecd37e06a319b62f16f776f4a15d9":{"kind":"REWORK","_number":6,"created":"2026-07-20 15:10:47.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/6"}}},"commit":{"parents":[{"commit":"140fa11488cc72af0ef150c2b2ab04025295db50","subject":"Prefer lspci over sysfs for PCI device detection","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/140fa11488cc72af0ef150c2b2ab04025295db50"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-07-20 15:01:45.000000000","tz":60},"subject":"Add enforce_scope config and multi-persona client aliases","message":"Add enforce_scope config and multi-persona client aliases\n\nAdd [enforce_scope] cyborg config option to the plugin, following\nthe same pattern as nova, neutron, glance, and cinder in core\ntempest. The option indicates whether Cyborg is running with\nenforce_scope and enforce_new_defaults enabled.\n\nUpdate BaseAPITest to request credentials for all Keystone\npersonas: admin, project_admin, project_manager, project_member,\nproject_reader, and service_user. Create CyborgRestClient instances\nfor each persona and expose canonical persona clients that select\nthe appropriate persona based on the config option:\n\n  cyborg_admin_client   -- always admin\n  cyborg_manager_client -- manager (new) / admin (legacy)\n  cyborg_member_client  -- member (new) / admin (legacy)\n  cyborg_reader_client  -- reader (new) / admin (legacy)\n  cyborg_service_client -- service role\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from all API test\nsubclasses so they inherit BaseAPITest\u0027s full credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/f879a43f481ecd37e06a319b62f16f776f4a15d9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/f879a43f481ecd37e06a319b62f16f776f4a15d9"}]},"branch":"refs/heads/master"},"30bd6e8b21791ad18129dbb674c1406954c4020a":{"kind":"REWORK","_number":7,"created":"2026-07-21 10:24:28.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/29/992329/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg-tempest-plugin","ref":"refs/changes/29/992329/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg-tempest-plugin refs/changes/29/992329/7"}}},"commit":{"parents":[{"commit":"140fa11488cc72af0ef150c2b2ab04025295db50","subject":"Prefer lspci over sysfs for PCI device detection","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/140fa11488cc72af0ef150c2b2ab04025295db50"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-08 16:24:23.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-07-21 09:46:26.000000000","tz":60},"subject":"Add new-defaults config and multi-persona client aliases","message":"Add new-defaults config and multi-persona client aliases\n\nAdd a plugin-specific [cyborg_policy] enforce_new_defaults option. This\nselects whether tests use Cyborg\u0027s new policy defaults without deprecated\nrule fallbacks. Scope remains enforced whenever a policy declares\nscope_types and is not configurable through this option.\n\nUpdate BaseAPITest to request credentials for the admin, project_admin,\nproject_manager, project_member, project_reader, and service_user\npersonas. Create CyborgRestClient instances for each persona and expose\ncanonical clients that select least-privilege reader, member, and manager\npersonas when new defaults are enabled, with admin fallback in legacy\nmode. The admin and service clients retain their dedicated personas.\n\nRemove credentials \u003d [\u0027admin\u0027] overrides from API test subclasses so they\ninherit BaseAPITest\u0027s credential set.\n\nPartial-Implements: blueprint consistent-and-secure-rbac\nAssisted-By: pi opus-4.6 (orchestrator)\nAssisted-By: pi sonnet-4.6 (implementer)\nAssisted-By: pi gpt-5.5 (reviewer)\nDepends-On: https://review.opendev.org/c/openstack/cyborg/+/992297\nChange-Id: I6b95347c51a5647a29c45afc72bb91dd7717e4d6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/30bd6e8b21791ad18129dbb674c1406954c4020a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg-tempest-plugin/commit/30bd6e8b21791ad18129dbb674c1406954c4020a"}]},"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":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}}]}],"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":""}}}]}
