)]}'
{"id":"openstack%2Fnetworking-generic-switch~988220","triplet_id":"openstack%2Fnetworking-generic-switch~master~I3dbb4aa265d3b7fd91f1464e9a72ae31a5b38723","project":"openstack/networking-generic-switch","branch":"master","topic":"switch-genericswitchdevice","attention_set":{},"removed_from_attention_set":{"23851":{"account":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"last_update":"2026-05-12 18:57:20.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I3dbb4aa265d3b7fd91f1464e9a72ae31a5b38723","subject":"Modernize GenericSwitchDevice to use abc.ABC","status":"MERGED","created":"2026-05-12 09:15:42.000000000","updated":"2026-05-12 18:59:15.000000000","submitted":"2026-05-12 18:57:20.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"988220-switch-genericswitchdevice","meta_rev_id":"aa435eb78c9da120e822fff5479a8f4b39678a46","_number":988220,"virtual_id_number":988220,"owner":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},{"value":0,"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-05-12 18:57:20.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":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"all":[{"value":2,"date":"2026-05-12 17:30:37.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},{"value":2,"date":"2026-05-12 17:31:01.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"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":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"all":[{"value":0,"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},{"value":1,"date":"2026-05-12 17:31:04.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"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},"Backport-Candidate":{"approved":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"all":[{"value":1,"date":"2026-05-12 17:30:37.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},{"value":0,"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Do Not Backport"," 0":"Backport Review Needed","+1":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-05-12 09:57:49.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-05-12 17:30:37.000000000","updated_by":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"reviewer":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"state":"REVIEWER"},{"updated":"2026-05-12 17:31:01.000000000","updated_by":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"reviewer":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"state":"REVIEWER"}],"messages":[{"id":"e127b7b2574241c064dbd724ea0a49725b18c36e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"date":"2026-05-12 09:15:42.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a555dca38e74ce4ea20b09a9d809a726f83c4fb8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 09:57:49.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7a5cb8cb67cb472d8a9dd9143e7eec72\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/25e8c5072d01431bb502b5a12a23e49f : SUCCESS in 4m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/a22c91e0ac984ac4a429879d8d0af428 : SUCCESS in 4m 20s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/0c4f2380ab634aeab344ca0bd07e3598 : SUCCESS in 4m 11s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ee6209fcf1524d04b3a5d5c904dc5a5c : SUCCESS in 6m 19s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/add15818e74049249db7e728f8207eb4 : SUCCESS in 9m 19s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/887ac8694e1046c2b72d6570550951e4 : SUCCESS in 20m 53s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/1dae8b9a14494ede9cfba193b4c34cfe : SUCCESS in 40m 31s\n- networking-generic-switch-tox-codespell https://zuul.opendev.org/t/openstack/build/de2ec449865244029373f376f0e871be : SUCCESS in 3m 25s","accounts_in_message":[],"_revision_number":1},{"id":"1e86033f3b65efd3661f820881d6a71f4444bbe9","author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"date":"2026-05-12 17:30:37.000000000","message":"Patch Set 1: Backport-Candidate+1 Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"7b32a3718be43aca16db7669ff4b8c691dc5263f","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2026-05-12 17:31:01.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"9161bd5cdba0cbee1746e8af2a84f4f9a14c0136","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2026-05-12 17:31:04.000000000","message":"Patch Set 1: Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"10f08755f961fd32bd1490dd7b75d51b8ade53a1","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 17:31:38.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"286a9d57345cc84112bd023d01d10e6ecd74fdcd","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 18:57:20.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a903a95530704020b354acc7b2c1ca8e\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b80c459f1cc046ffae79abb8b821af59 : SUCCESS in 2m 57s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/178b095e69b6457caca9677971f4298a : SUCCESS in 4m 02s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/21fb1e06c29e44468714fe3e547bcb3d : SUCCESS in 5m 10s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9ef2d639ccd44bc29dc392080e4fed86 : SUCCESS in 10m 06s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a75fa4af832547a4a9ec90ca5570d0ab : SUCCESS in 4m 19s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/dc2d3fe7f86740aeb63a11c04286dfab : SUCCESS in 13m 35s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/2b146259811f420eb07b0173763b9106 : SUCCESS in 44m 37s","accounts_in_message":[],"_revision_number":1},{"id":"11757062628d4598bd89b541e8a7cba36fd7b103","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 18:57:20.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"aa435eb78c9da120e822fff5479a8f4b39678a46","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 18:59:15.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/bc36d6aa6d144e528228429c53feff23\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c52ffd05b90f42489db59955b3aef862 : SUCCESS in 45s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"2dd65b92d75f0b287e3ff1937fb502136c3e0d7a","revisions":{"2dd65b92d75f0b287e3ff1937fb502136c3e0d7a":{"kind":"REWORK","_number":1,"created":"2026-05-12 09:15:42.000000000","uploader":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"ref":"refs/changes/20/988220/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/networking-generic-switch","ref":"refs/changes/20/988220/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/20/988220/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/20/988220/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/20/988220/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/networking-generic-switch refs/changes/20/988220/1"}}},"commit":{"parents":[{"commit":"125a3b1b2e1672e264aa25da7955ba936e50b8ee","subject":"Merge \"Add Cumulus NVUE multicast BUM replication support\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/125a3b1b2e1672e264aa25da7955ba936e50b8ee"}]}],"author":{"name":"Riccardo Pittau","email":"elfosardo@gmail.com","date":"2026-05-12 09:15:23.000000000","tz":120},"committer":{"name":"Riccardo Pittau","email":"elfosardo@gmail.com","date":"2026-05-12 09:15:33.000000000","tz":120},"subject":"Modernize GenericSwitchDevice to use abc.ABC","message":"Modernize GenericSwitchDevice to use abc.ABC\n\nReplace the legacy `class GenericSwitchDevice(object, metaclass\u003dabc.ABCMeta)`\nwith the idiomatic `class GenericSwitchDevice(abc.ABC)`. Functionally\nequivalent, cleaner for a Python 3.10+ codebase.\n\nChange-Id: I3dbb4aa265d3b7fd91f1464e9a72ae31a5b38723\nSigned-off-by: Riccardo Pittau \u003celfosardo@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/2dd65b92d75f0b287e3ff1937fb502136c3e0d7a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/2dd65b92d75f0b287e3ff1937fb502136c3e0d7a"}]},"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":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"}},{"label":"Backport-Candidate","status":"MAY","applied_by":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."}}]}],"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":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"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":""}}}]}
