)]}'
{"id":"openstack%2Fcyborg~1009067","triplet_id":"openstack%2Fcyborg~stable%2F2025.2~Ib46969ad24d4633a1761ac0d2ee1bb5d62420f40","project":"openstack/cyborg","branch":"stable/2025.2","attention_set":{"34452":{"account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"last_update":"2026-10-06 15:50:03.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"Ib46969ad24d4633a1761ac0d2ee1bb5d62420f40","subject":"device_profile: reject groups with no resources: key at POST","status":"NEW","created":"2026-10-06 14:44:10.000000000","updated":"2026-10-07 10:57:32.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"cherry_pick_of_change":1009066,"cherry_pick_of_patch_set":2,"meta_rev_id":"61b2dbd81627f408ee0ef611d7a8663b34cf4df5","_number":1009067,"virtual_id_number":1009067,"owner":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-10-07 10:57:32.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":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_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":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-10-06 15:50:03.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"e69b5f3fe0d9c2d4f931c29649d6212399da1bc3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-06 14:44:10.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"92789805089fcd0182969713a8756a95a5f9b56d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-06 15:50:03.000000000","message":"Patch Set 1: Verified-1\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/c3ff9b14a2834829858919e38bcb3b92\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/a2409f99e6834f3ba8ee5dd7822cc1ea : SUCCESS in 4m 27s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/09453c18240c43229a6bdc53374a3e5f : SUCCESS in 5m 29s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f08c20291f164ceeb117e634b53fce29 : FAILURE in 6m 54s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3a7d91f9715e465a981a945330287139 : SUCCESS in 6m 37s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/24617de2646b47bb877c68801027dee3 : SUCCESS in 3m 25s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/97878bd361cd4d2fa8fabfe425e3b7fe : SUCCESS in 6m 13s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3429c6f2eaa14506b349a884902b3a3a : SUCCESS in 6m 48s (non-voting)\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/a8195f73c3fd4f6db1990f20796be33e : SUCCESS in 43m 13s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/02deaade4a954c768e635a250f6c936c : SUCCESS in 20m 25s\n- cyborg-tox-bandit https://zuul.opendev.org/t/openstack/build/b2e2c23e6b6343a1870e447791706d97 : SUCCESS in 3m 36s","accounts_in_message":[],"_revision_number":1},{"id":"2646208de1dff569448b1eecf5d307ba2121b720","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-07 08:54:44.000000000","message":"Patch Set 2: Cherry Picked from branch stable/2026.1.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"2bc0bbeb21fd57e75256e6a13854bf10df5a34b7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-07 08:57:07.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased. Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"61b2dbd81627f408ee0ef611d7a8663b34cf4df5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-07 10:57:32.000000000","message":"Patch Set 3: Verified-1\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/8d1532a931f74f779c9394356bc6ab53\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0a061cd57d634ce986ad1fc3b6dfcf91 : SUCCESS in 4m 54s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0a04960fb13646d9bf6e24b6e0791289 : SUCCESS in 3m 55s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/073147592ce9405385ae18eff033f2bc : FAILURE in 7m 05s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/67724ffcfcc9431c9d374a9da0d9bcdf : FAILURE in 4m 44s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/32a522295b8144839227d9f20fce4597 : SUCCESS in 6m 00s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/53ac669351554ff0a97d299fde326b6c : SUCCESS in 4m 35s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f6a6a63aa5b24991999eebf953e61f86 : SUCCESS in 6m 47s (non-voting)\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/bfd49dfa06fc496584af9e987fd0a441 : SUCCESS in 31m 44s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/05d11853563841828f9566ca63fa47cd : SUCCESS in 39m 01s\n- cyborg-tox-bandit https://zuul.opendev.org/t/openstack/build/9ff7c056392e43229b9973f6970b68b9 : SUCCESS in 4m 07s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"fffd743e16b82e0362695ea5624ce293e6213ce4","revisions":{"7ba3f279975a8388d0c282b8b1f3bb11fcd5800b":{"kind":"REWORK","_number":1,"created":"2026-10-06 14:44:10.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/67/1009067/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/67/1009067/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/1"}}},"commit":{"parents":[{"commit":"5c7bde4256b0e6fe4ba94fb5ba42a1c9116821af","subject":"Require service token for bound ARQ operations","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/5c7bde4256b0e6fe4ba94fb5ba42a1c9116821af"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-30 09:26:10.000000000","tz":120},"committer":{"name":"Joan Gilabert","email":"jgilaber@redhat.com","date":"2026-10-06 14:44:10.000000000","tz":0},"subject":"device_profile: reject groups with no resources: key at POST","message":"device_profile: reject groups with no resources: key at POST\n\nA device profile group that contains only trait: or accel: keys and\nno resources: key is accepted by the API but fails at ARQ bind time\nwith an opaque InvalidParameterValue from\nget_resources_from_device_profile_group(). The user gets no\nactionable feedback at the point where the bad input was submitted.\n\nAdd a check at the end of the per-group validation loop in\n_validate_post_request() that raises InvalidParameterValue with a\nclear message when a group has no resources: key. This moves the\nenforcement from bind time to creation time.\n\nAdd a unit test covering the new rejection path.\n\nCloses-Bug: #2168261\nGenerated-By: opencode claude-sonnet-4-6\nChange-Id: Ib46969ad24d4633a1761ac0d2ee1bb5d62420f40\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n(cherry picked from commit 9ccbf2797943a223d92aace2c7fd3f287a53f2ff)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7ba3f279975a8388d0c282b8b1f3bb11fcd5800b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7ba3f279975a8388d0c282b8b1f3bb11fcd5800b"}]},"branch":"refs/heads/stable/2025.2","conflicts":{"base":"dfa0b80ca7060a799db191f73c32b5d9bd577103","ours":"5c7bde4256b0e6fe4ba94fb5ba42a1c9116821af","theirs":"9ccbf2797943a223d92aace2c7fd3f287a53f2ff","merge_strategy":"recursive","contains_conflicts":false}},"1faf49daf47fe7165f7ce98f18283a946a901d6b":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-10-07 08:54:44.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/67/1009067/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/67/1009067/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/2"}}},"commit":{"parents":[{"commit":"5c7bde4256b0e6fe4ba94fb5ba42a1c9116821af","subject":"Require service token for bound ARQ operations","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/5c7bde4256b0e6fe4ba94fb5ba42a1c9116821af"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-30 09:26:10.000000000","tz":120},"committer":{"name":"Joan Gilabert","email":"jgilaber@redhat.com","date":"2026-10-07 08:54:44.000000000","tz":0},"subject":"device_profile: reject groups with no resources: key at POST","message":"device_profile: reject groups with no resources: key at POST\n\nA device profile group that contains only trait: or accel: keys and\nno resources: key is accepted by the API but fails at ARQ bind time\nwith an opaque InvalidParameterValue from\nget_resources_from_device_profile_group(). The user gets no\nactionable feedback at the point where the bad input was submitted.\n\nAdd a check at the end of the per-group validation loop in\n_validate_post_request() that raises InvalidParameterValue with a\nclear message when a group has no resources: key. This moves the\nenforcement from bind time to creation time.\n\nAdd a unit test covering the new rejection path.\n\nCloses-Bug: #2168261\nGenerated-By: opencode claude-sonnet-4-6\n\nChange-Id: Ib46969ad24d4633a1761ac0d2ee1bb5d62420f40\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n(cherry picked from commit 9ccbf2797943a223d92aace2c7fd3f287a53f2ff)\n(cherry picked from commit 23e0f9046ddab39c9cfe5f12fea170bfd64fad66)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/1faf49daf47fe7165f7ce98f18283a946a901d6b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/1faf49daf47fe7165f7ce98f18283a946a901d6b"}]},"branch":"refs/heads/stable/2025.2","conflicts":{"base":"8b6c371d3bd6b59fae1e7968097d0ce042b10694","ours":"5c7bde4256b0e6fe4ba94fb5ba42a1c9116821af","theirs":"3a1d884fea0935530805e95aecf2c7d1a4047525","merge_strategy":"recursive","contains_conflicts":false}},"fffd743e16b82e0362695ea5624ce293e6213ce4":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":3,"created":"2026-10-07 08:57:07.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/67/1009067/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/67/1009067/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/67/1009067/3"}}},"commit":{"parents":[{"commit":"fdaeb0ada7ae9611da196a1d9fbf3bd68f5ab3dd","subject":"Remove deprecated get_legacy_facade usage","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/fdaeb0ada7ae9611da196a1d9fbf3bd68f5ab3dd"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-30 09:26:10.000000000","tz":120},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-07 08:56:54.000000000","tz":120},"subject":"device_profile: reject groups with no resources: key at POST","message":"device_profile: reject groups with no resources: key at POST\n\nA device profile group that contains only trait: or accel: keys and\nno resources: key is accepted by the API but fails at ARQ bind time\nwith an opaque InvalidParameterValue from\nget_resources_from_device_profile_group(). The user gets no\nactionable feedback at the point where the bad input was submitted.\n\nAdd a check at the end of the per-group validation loop in\n_validate_post_request() that raises InvalidParameterValue with a\nclear message when a group has no resources: key. This moves the\nenforcement from bind time to creation time.\n\nAdd a unit test covering the new rejection path.\n\nCloses-Bug: #2168261\nGenerated-By: opencode claude-sonnet-4-6\n\nChange-Id: Ib46969ad24d4633a1761ac0d2ee1bb5d62420f40\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n(cherry picked from commit 9ccbf2797943a223d92aace2c7fd3f287a53f2ff)\n(cherry picked from commit 23e0f9046ddab39c9cfe5f12fea170bfd64fad66)\n(cherry picked from commit 3a1d884fea0935530805e95aecf2c7d1a4047525)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/fffd743e16b82e0362695ea5624ce293e6213ce4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/fffd743e16b82e0362695ea5624ce293e6213ce4"}]},"branch":"refs/heads/stable/2025.2"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
