)]}'
{"id":"openstack%2Fcyborg~1002254","triplet_id":"openstack%2Fcyborg~master~I608ab35a11f4be09e50301c62a7480da889c5fe6","project":"openstack/cyborg","branch":"master","attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-08-25 10:50:20.000000000","reason":"Someone else replied on the change"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I608ab35a11f4be09e50301c62a7480da889c5fe6","subject":"objects: Add conductor indirection for OVOs","status":"NEW","created":"2026-08-25 10:49:43.000000000","updated":"2026-08-25 12:04:50.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"25ec00f5866dfa2932bb6707eb5e3689ef20ed6d","_number":1002254,"virtual_id_number":1002254,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-08-25 12:04:50.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"]}],"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"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-25 10:50:20.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-08-25 12:04:50.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":"6aadf5bf342bcdc1c1f8c62588b95bbae7b67a2b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-08-25 10:49:43.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a21d2bf341493aeb2daa78e4df77d8d341242494","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-08-25 10:50:20.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"7ed781a3c99b0495d53308c55fdb4133458d3c17","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-08-25 11:44:25.000000000","message":"Patch Set 1:\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/d80cbe3226b6411580f9ceac4ab1d733\n\n- teim-code-review https://zuul.teim.app/t/main/build/1ee7d8aebbf04ac1962414d489b9ffdc : SUCCESS in 26m 00s\n\nWarning:\n  The change bumps the conductor RPC API to 1.1 and makes cyborg-agent dispatch remotable object methods to the conductor. This introduces a deployment-ordering constraint: a new agent calling an old (1.0) conductor will fail every object indirection call (the client pins version\u003d\u00271.1\u0027 per call, so oslo_messaging rejects it). The constraint is only recorded in a code comment inside cyborg/cmd/agent.py; neither the commit message nor a reno note (the project ships releasenotes/notes/) tells operators that conductors must be upgraded before agents during rolling upgrades. Impact: Operators performing a rolling upgrade who upgrade agents before conductors will see object indirection calls fail against 1.0 conductors, with no release note or upgrade documentation warning them of the required ordering. The failure is fail-fast and recoverable (upgrade the conductor), so impact is limited to operations/documentation. Recommendation: Add a short reno note (and one line in the commit message) stating that the conductor RPC API is now 1.1 and that cyborg-conductor must be upgraded before cyborg-agent for remotable object method dispatch to work during rolling upgrades.","accounts_in_message":[],"_revision_number":1},{"id":"25ec00f5866dfa2932bb6707eb5e3689ef20ed6d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-25 12:04:50.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/32a4a332f08748438317d85ee432b557\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1c013493bf34455c850eadec460a7a12 : SUCCESS in 4m 50s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/230ea4d4657744e4bcc1cabc646aa705 : SUCCESS in 6m 02s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7521d9f4df904186accf15ecb595e1a9 : SUCCESS in 8m 24s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1f8306be678e4fe5a55ada2474ba5974 : SUCCESS in 4m 40s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/6f08ec2d35764a70b4fbefe463b8aea2 : SUCCESS in 3m 59s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/bc8504d6d608433b9983171c963d1c2b : SUCCESS in 3m 45s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/4efd2d1933a44bc2af222f7f615f1aed : SUCCESS in 5m 57s (non-voting)\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/5ebea2742f6d4b2eac11f102582301d5 : SUCCESS in 4m 10s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/6ecff07b9cd44ca2ba62f87d6d2d4400 : SUCCESS in 1h 00m 32s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/0e448bc3e4244a9db5b9ae1fe9cd0d13 : SUCCESS in 46m 39s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/a807af1d87da4b3ea7c520f6440c395a : SUCCESS in 58m 05s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e6c14da84eed40cca5a0fff6fadfaa0d : SUCCESS in 52m 51s\n- cyborg-tempest-srbac https://zuul.opendev.org/t/openstack/build/12ef40bde97e43d581108c1a5fe9f47a : SUCCESS in 57m 40s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"0e4a932d42805169e10160664727825706900777","revisions":{"0e4a932d42805169e10160664727825706900777":{"kind":"REWORK","_number":1,"created":"2026-08-25 10:49:43.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/54/1002254/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/54/1002254/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/54/1002254/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/54/1002254/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/54/1002254/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/54/1002254/1"}}},"commit":{"parents":[{"commit":"62eaf2b118a7500698b5d56779e0b28d1ee8d84b","subject":"conductor: Retain missing allocated devices","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/62eaf2b118a7500698b5d56779e0b28d1ee8d84b"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-08-24 21:03:03.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-08-25 10:43:08.000000000","tz":0},"subject":"objects: Add conductor indirection for OVOs","message":"objects: Add conductor indirection for OVOs\n\nCyborg versioned objects can be serialized over RPC, but services\nwithout database access cannot invoke their logical operations through\nthe conductor. This prevents the agent from using canonical objects\nwithout adding purpose-built RPC methods.\n\nAdd generic conductor dispatch for remotable class and instance actions,\nincluding object version backports and recursive backports for lists of\nobjects. Bump the conductor RPC API to 1.1, configure cyborg-agent to\nuse it as the object indirection API, and export the supported remotable\ndecorator for object methods added by follow-up changes.\n\nChange-Id: I608ab35a11f4be09e50301c62a7480da889c5fe6\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\nAssisted-By: pi gpt-5.6-sol\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/0e4a932d42805169e10160664727825706900777"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/0e4a932d42805169e10160664727825706900777"}]},"branch":"refs/heads/master"}},"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":""}}}]}
