)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df6bbd8cd6428359c4954f53ee1254fe818ac351","unresolved":true,"context_lines":[{"line_number":17,"context_line":"each persona and expose least-privilege alias attributes that"},{"line_number":18,"context_line":"select the appropriate client based on the config option:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  cyborg_arq_read_client  -- reader (new) / admin (legacy)"},{"line_number":21,"context_line":"  cyborg_arq_write_client -- member (new) / admin (legacy)"},{"line_number":22,"context_line":"  cyborg_hw_read_client   -- manager (new) / admin (legacy)"},{"line_number":23,"context_line":"  cyborg_dp_read_client   -- reader (new) / admin (legacy)"},{"line_number":24,"context_line":"  cyborg_dp_write_client  -- always admin"},{"line_number":25,"context_line":"  cyborg_admin_client     -- always admin"},{"line_number":26,"context_line":"  cyborg_service_client   -- service role"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Remove credentials \u003d [\u0027admin\u0027] overrides from all API test"},{"line_number":29,"context_line":"subclasses so they inherit BaseAPITest\u0027s full credential set."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5712b5cb_96a38f3c","line":26,"range":{"start_line":20,"start_character":0,"end_line":26,"end_character":41},"updated":"2026-07-06 21:40:47.000000000","message":"... i forgot to fix this\n\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","commit_id":"53234476773aa66dc1f6571c30eda053cbe90b44"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bf56b5a12f1f36806b69167712755ee0c5ab1d3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"each persona and expose least-privilege alias attributes that"},{"line_number":18,"context_line":"select the appropriate client based on the config option:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  cyborg_arq_read_client  -- reader (new) / admin (legacy)"},{"line_number":21,"context_line":"  cyborg_arq_write_client -- member (new) / admin (legacy)"},{"line_number":22,"context_line":"  cyborg_hw_read_client   -- manager (new) / admin (legacy)"},{"line_number":23,"context_line":"  cyborg_dp_read_client   -- reader (new) / admin (legacy)"},{"line_number":24,"context_line":"  cyborg_dp_write_client  -- always admin"},{"line_number":25,"context_line":"  cyborg_admin_client     -- always admin"},{"line_number":26,"context_line":"  cyborg_service_client   -- service role"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Remove credentials \u003d [\u0027admin\u0027] overrides from all API test"},{"line_number":29,"context_line":"subclasses so they inherit BaseAPITest\u0027s full credential set."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f35370d_19334028","line":26,"range":{"start_line":20,"start_character":0,"end_line":26,"end_character":41},"in_reply_to":"5712b5cb_96a38f3c","updated":"2026-07-07 10:39:26.000000000","message":"Done","commit_id":"53234476773aa66dc1f6571c30eda053cbe90b44"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"3aad2989793339a19e4948bd9e7d9653940e815a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"58835bd1_01ee61ab","updated":"2026-06-30 09:25:22.000000000","message":"lgtm\n\nAll 8 test files correctly remove credentials \u003d [\u0027admin\u0027] so they inherit the full persona set from BaseAPITest.","commit_id":"f0ce8befc494decb6c33a6cf35af4d643947ae32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9e444b0b6bca4ada4d91b90aab29317c32e860fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3c0f2449_b3324089","updated":"2026-06-22 23:46:34.000000000","message":"teim-ci: auto","commit_id":"f0ce8befc494decb6c33a6cf35af4d643947ae32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"30e96ac9222fdd9eb541b62ed108679db397a070","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"64a78694_36a91bd2","updated":"2026-06-22 08:36:14.000000000","message":"teim-ci: auto","commit_id":"f0ce8befc494decb6c33a6cf35af4d643947ae32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9839f35b65ac63dfa226a51bce1b9c65fa30e4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"03cf3ae4_8cd94908","updated":"2026-07-21 11:52:02.000000000","message":"recheck","commit_id":"30bd6e8b21791ad18129dbb674c1406954c4020a"}],"cyborg_tempest_plugin/config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bf56b5a12f1f36806b69167712755ee0c5ab1d3","unresolved":true,"context_lines":[{"line_number":26,"context_line":"                help\u003d\"Whether or not cyborg is expected to be available\")"},{"line_number":27,"context_line":"]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"enforce_scope_group \u003d cfg.OptGroup("},{"line_number":30,"context_line":"    name\u003d\"enforce_scope\","},{"line_number":31,"context_line":"    title\u003d\"OpenStack Services with enforce scope\""},{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"EnforceScopeGroup \u003d ["},{"line_number":35,"context_line":"    cfg.BoolOpt("},{"line_number":36,"context_line":"        \"cyborg\","},{"line_number":37,"context_line":"        default\u003dFalse,"},{"line_number":38,"context_line":"        help\u003d\"Does the Cyborg API enforce scope and new defaults? \""},{"line_number":39,"context_line":"             \"Enable when cyborg.conf [oslo_policy] \""},{"line_number":40,"context_line":"             \"enforce_new_defaults and enforce_scope are both True.\","},{"line_number":41,"context_line":"    ),"},{"line_number":42,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"fe340ad2_e864f715","line":42,"range":{"start_line":29,"start_character":0,"end_line":42,"end_character":1},"updated":"2026-07-07 10:39:26.000000000","message":"so i need to tweak this.\n\nin master we are going to unconditional enforce scope\ndue to the remove of that config option form oslo.policy.\n\nwe need to update this to be enfoce_new_defaults instead.\nor perhaps split this into two options.","commit_id":"7070653af8208310edb2fc4ca1b98dac6e726348"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e94198424f9de4f5c6ae33d3b79b95f9dffb76ed","unresolved":true,"context_lines":[{"line_number":26,"context_line":"                help\u003d\"Whether or not cyborg is expected to be available\")"},{"line_number":27,"context_line":"]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"enforce_scope_group \u003d cfg.OptGroup("},{"line_number":30,"context_line":"    name\u003d\"enforce_scope\","},{"line_number":31,"context_line":"    title\u003d\"OpenStack Services with enforce scope\""},{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"EnforceScopeGroup \u003d ["},{"line_number":35,"context_line":"    cfg.BoolOpt("},{"line_number":36,"context_line":"        \"cyborg\","},{"line_number":37,"context_line":"        default\u003dFalse,"},{"line_number":38,"context_line":"        help\u003d\"Does the Cyborg API enforce scope and new defaults? \""},{"line_number":39,"context_line":"             \"Enable when cyborg.conf [oslo_policy] \""},{"line_number":40,"context_line":"             \"enforce_new_defaults and enforce_scope are both True.\","},{"line_number":41,"context_line":"    ),"},{"line_number":42,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"28f9c6f4_c507af24","line":42,"range":{"start_line":29,"start_character":0,"end_line":42,"end_character":1},"in_reply_to":"fe340ad2_e864f715","updated":"2026-07-07 10:40:49.000000000","message":"https://review.opendev.org/c/openstack/cyborg/+/995867","commit_id":"7070653af8208310edb2fc4ca1b98dac6e726348"}],"cyborg_tempest_plugin/tests/api/base.py":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"3aad2989793339a19e4948bd9e7d9653940e815a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        cls.cyborg_service_client \u003d ("},{"line_number":93,"context_line":"            cls._make_cyborg_client(cls.os_service_user))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Wire up persona-based aliases.  When enforce_scope.cyborg"},{"line_number":96,"context_line":"        # is True (new defaults active) each alias uses the minimum"},{"line_number":97,"context_line":"        # persona required by the policy.  When False (legacy mode)"},{"line_number":98,"context_line":"        # every alias falls back to admin so existing jobs keep"}],"source_content_type":"text/x-python","patch_set":3,"id":"53da7151_bcad3816","line":95,"range":{"start_line":95,"start_character":47,"end_line":95,"end_character":67},"updated":"2026-06-30 09:25:22.000000000","message":"Yes, correct!\n\nTempest results from cyborg-tempest-srbac https://review.opendev.org/c/openstack/cyborg/+/992332\nhttps://5126e99bb555fcd10074-f8d3aa66ce3962c6e3c5c35044bdfdd4.ssl.cf1.rackcdn.com/openstack/21ccea317c924406b12ce9ab3cc22cc5/job-output.txt\n\nhttps://5126e99bb555fcd10074-f8d3aa66ce3962c6e3c5c35044bdfdd4.ssl.cf1.rackcdn.com/openstack/21ccea317c924406b12ce9ab3cc22cc5/controller/logs/tempest_conf.txt\n```\n[enforce_scope]\ncyborg \u003d True\n```\nIt is a bridge between old and new, \n\nWhen enforce_scope.cyborg \u003d False, aliases point to admin — tests behave exactly like before. Perefect.","commit_id":"f0ce8befc494decb6c33a6cf35af4d643947ae32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df6bbd8cd6428359c4954f53ee1254fe818ac351","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    least-privilege alias attributes that select the appropriate"},{"line_number":33,"context_line":"    client based on whether Cyborg is running with enforce_scope and"},{"line_number":34,"context_line":"    enforce_new_defaults enabled (CONF.enforce_scope.cyborg)."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    Persona clients available after setup_clients():"},{"line_number":37,"context_line":"      os_admin.cyborg_client          -- admin role"},{"line_number":38,"context_line":"      os_project_admin.cyborg_client  -- project-scoped admin"},{"line_number":39,"context_line":"      os_project_manager.cyborg_client -- project-scoped manager"},{"line_number":40,"context_line":"      os_project_member.cyborg_client -- project-scoped member"},{"line_number":41,"context_line":"      os_project_reader.cyborg_client -- project-scoped reader"},{"line_number":42,"context_line":"      cyborg_service_client           -- service role"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    Persona-based aliases (use these in tests):"},{"line_number":45,"context_line":"      cyborg_admin_client   -- always admin"},{"line_number":46,"context_line":"      cyborg_manager_client -- manager (new) / admin (legacy)"},{"line_number":47,"context_line":"      cyborg_member_client  -- member (new) / admin (legacy)"},{"line_number":48,"context_line":"      cyborg_reader_client  -- reader (new) / admin (legacy)"},{"line_number":49,"context_line":"      cyborg_service_client -- service role"},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    credentials \u003d ["},{"line_number":53,"context_line":"        \u0027primary\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"4be9e899_c4b15862","line":50,"range":{"start_line":35,"start_character":1,"end_line":50,"end_character":7},"updated":"2026-07-06 21:40:47.000000000","message":"i shoudl actuly just simplfiy this and instciate the alised client direcitly\n\nsince that is what i shoudl be using so i shoudl promot those to the canoncal ones rather then an alias.","commit_id":"53234476773aa66dc1f6571c30eda053cbe90b44"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bf56b5a12f1f36806b69167712755ee0c5ab1d3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    least-privilege alias attributes that select the appropriate"},{"line_number":33,"context_line":"    client based on whether Cyborg is running with enforce_scope and"},{"line_number":34,"context_line":"    enforce_new_defaults enabled (CONF.enforce_scope.cyborg)."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    Persona clients available after setup_clients():"},{"line_number":37,"context_line":"      os_admin.cyborg_client          -- admin role"},{"line_number":38,"context_line":"      os_project_admin.cyborg_client  -- project-scoped admin"},{"line_number":39,"context_line":"      os_project_manager.cyborg_client -- project-scoped manager"},{"line_number":40,"context_line":"      os_project_member.cyborg_client -- project-scoped member"},{"line_number":41,"context_line":"      os_project_reader.cyborg_client -- project-scoped reader"},{"line_number":42,"context_line":"      cyborg_service_client           -- service role"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    Persona-based aliases (use these in tests):"},{"line_number":45,"context_line":"      cyborg_admin_client   -- always admin"},{"line_number":46,"context_line":"      cyborg_manager_client -- manager (new) / admin (legacy)"},{"line_number":47,"context_line":"      cyborg_member_client  -- member (new) / admin (legacy)"},{"line_number":48,"context_line":"      cyborg_reader_client  -- reader (new) / admin (legacy)"},{"line_number":49,"context_line":"      cyborg_service_client -- service role"},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    credentials \u003d ["},{"line_number":53,"context_line":"        \u0027primary\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ef7b8d89_56fa7623","line":50,"range":{"start_line":35,"start_character":1,"end_line":50,"end_character":7},"in_reply_to":"4be9e899_c4b15862","updated":"2026-07-07 10:39:26.000000000","message":"Done","commit_id":"53234476773aa66dc1f6571c30eda053cbe90b44"},{"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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"2b0003ec287c1293111752e5d984234cbf65ed1c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # persona required by the policy.  When False (legacy mode)"},{"line_number":98,"context_line":"        # every alias falls back to admin so existing jobs keep"},{"line_number":99,"context_line":"        # passing unchanged."},{"line_number":100,"context_line":"        cls.cyborg_admin_client \u003d cls.os_admin.cyborg_client"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if CONF.enforce_scope.cyborg:"},{"line_number":103,"context_line":"            cls.cyborg_reader_client \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"b7cea28d_21d8602f","line":100,"updated":"2026-07-06 21:23:08.000000000","message":"The commit message lists seven resource-specific alias names (cyborg_arq_read_client, cyborg_arq_write_client, cyborg_hw_read_client, cyborg_dp_read_client, cyborg_dp_write_client, cyborg_admin_client, cyborg_service_client). However base.py defines only five generic persona aliases (cyborg_admin...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Future developers or reviewers reading the commit log will expect resource-specific aliases (cyborg_arq_read_client etc.) and will not find them. Conversely, the generic persona aliases that are implemented (cyborg_reader_client, cyborg_member_client, cyborg_manager_client) are undocumented in th...\n\n**Suggestion**:\nUpdate the commit message (amend before merge) so the alias list matches the actual implementation: cyborg_admin_client (always admin), cyborg_reader_client (reader new / admin legacy), cyborg_member_client (member new / admin legacy), cyborg_manager_client (manager new / admin legacy), cyborg_service_client (service role).","commit_id":"53234476773aa66dc1f6571c30eda053cbe90b44"}],"cyborg_tempest_plugin/tests/api/test_accelerator_request.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        super(TestAcceleratorRequestController, cls).skip_checks()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _create_dp(self, name):"},{"line_number":37,"context_line":"        \"\"\"Create a device profile and register cleanup.\"\"\""},{"line_number":38,"context_line":"        client \u003d self.os_admin.cyborg_client"},{"line_number":39,"context_line":"        dp \u003d [{\"name\": name, \"groups\": _FAKE_DP_GROUPS}]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ae6506e7_90fa6918","line":36,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_accelerator_request_negative.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        super(AcceleratorRequestNegativeTest, cls).skip_checks()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":31,"context_line":"    @decorators.idempotent_id(\u0027a1e6dd06-c64f-49cd-ae4d-defde0b5e662\u0027)"},{"line_number":32,"context_line":"    def test_get_non_existent_accelerator_request(self):"},{"line_number":33,"context_line":"        # get the non-existent accelerator request"}],"source_content_type":"text/x-python","patch_set":1,"id":"608fdb7f_453b00d6","line":30,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_deployable_negative.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        super(DeployableNegativeTest, cls).skip_checks()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":31,"context_line":"    @decorators.idempotent_id(\u00276c79a89c-bbdd-401a-b470-817c1aa8b9cf\u0027)"},{"line_number":32,"context_line":"    def test_get_non_existent_deployable(self):"},{"line_number":33,"context_line":"        # get the non-existent deployable"}],"source_content_type":"text/x-python","patch_set":1,"id":"4e13f526_250f9a8c","line":30,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_deployables.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(TestDeployables, cls).skip_checks()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @decorators.idempotent_id(\u00276bc3d256-2c1e-4a72-a87d-66d7ab5688b5\u0027)"},{"line_number":29,"context_line":"    def test_list_deployables(self):"},{"line_number":30,"context_line":"        response \u003d self.os_admin.cyborg_client.list_deployables()"},{"line_number":31,"context_line":"        self.assertEqual(\u0027deployables\u0027, list(response.keys())[0])"}],"source_content_type":"text/x-python","patch_set":1,"id":"aa81e0d4_f22af4c9","line":28,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_device.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(TestDevice, cls).skip_checks()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @decorators.idempotent_id(\u00276f4bf672-1b8e-4e3e-8562-de64093bad52\u0027)"},{"line_number":29,"context_line":"    def test_list_get_device(self):"},{"line_number":30,"context_line":"        response \u003d self.os_admin.cyborg_client.list_devices()"},{"line_number":31,"context_line":"        self.assertEqual(\u0027devices\u0027, list(response.keys())[0])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a31d569_f8b36b94","line":28,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_device_negative.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        super(DeviceNegativeTest, cls).skip_checks()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":31,"context_line":"    @decorators.idempotent_id(\u0027d904a4c8-5fe0-4884-814f-2f8a0aecdf01\u0027)"},{"line_number":32,"context_line":"    def test_get_non_existent_device(self):"},{"line_number":33,"context_line":"        # get the non-existent device"}],"source_content_type":"text/x-python","patch_set":1,"id":"c92c4362_abc1ed5f","line":30,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_device_profile.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(TestDeviceProfileController, cls).skip_checks()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @decorators.idempotent_id(\u002759bee5a9-1af3-42bd-8a51-d7b5ecb2049f\u0027)"},{"line_number":30,"context_line":"    def test_create_device_profile(self):"},{"line_number":31,"context_line":"        dp \u003d cyborg_data.NORMAL_DEVICE_PROFILE_DATA1"},{"line_number":32,"context_line":"        response \u003d self.os_admin.cyborg_client.create_device_profile(dp)"}],"source_content_type":"text/x-python","patch_set":1,"id":"efa2d5a7_67bb8234","line":29,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}],"cyborg_tempest_plugin/tests/api/test_device_profile_negative.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"289b1dd355ce744eac0b2a5ba83a052921cb35f4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        super(DeviceProfileNegativeTest, cls).skip_checks()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":33,"context_line":"    @decorators.idempotent_id(\u00272b4bcea3-af0f-4168-9d79-135aab333c7e\u0027)"},{"line_number":34,"context_line":"    def test_get_non_existent_device_profile(self):"},{"line_number":35,"context_line":"        # get the non-existent device_profile"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a660b48_3013658e","line":32,"updated":"2026-06-08 18:16:48.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7323de0751ebebe3ca9010126822dddef1b0b1f0"}]}
