)]}'
{"id":"openstack%2Fnetworking-generic-switch~1006314","triplet_id":"openstack%2Fnetworking-generic-switch~master~I83b9f57f6e89ca7007e0cf6ccaae883eed6eb8b8","project":"openstack/networking-generic-switch","branch":"master","topic":"ngs-configdoc","attention_set":{},"removed_from_attention_set":{"24245":{"account":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"last_update":"2026-09-22 07:43:14.000000000","reason":"\u003cGERRIT_ACCOUNT_24245\u003e replied on the change","reason_account":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"}},"11655":{"account":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"last_update":"2026-09-22 18:13:41.000000000","reason":"Change was submitted"}},"hashtags":["ironic-week-prio"],"change_id":"I83b9f57f6e89ca7007e0cf6ccaae883eed6eb8b8","subject":"Describe internal per-switch options as cfg.Opt instances","status":"MERGED","created":"2026-09-18 18:02:51.000000000","updated":"2026-09-22 18:14:49.000000000","submitted":"2026-09-22 18:13:41.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":"1006314-ngs-configdoc","meta_rev_id":"4a93db2667688719e4a1c84c2e2164e5a6560fd7","_number":1006314,"virtual_id_number":1006314,"owner":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"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-09-22 18:13:41.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"}],"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":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"all":[{"value":2,"date":"2026-09-22 07:43:14.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":2,"date":"2026-09-22 15:56:02.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"]},{"value":2,"date":"2026-09-22 16:21:29.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"}],"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":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"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"]},{"value":1,"date":"2026-09-22 16:21:29.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"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"]},{"value":0,"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"}],"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":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-18 19:24:14.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-09-21 11:09:51.000000000","updated_by":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"reviewer":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"state":"REVIEWER"},{"updated":"2026-09-22 15:56:02.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"},{"updated":"2026-09-22 16:21:29.000000000","updated_by":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"reviewer":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"state":"REVIEWER"}],"messages":[{"id":"66dad2e70fc46d829eeb76932d5048186f47b9a3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"date":"2026-09-18 18:02:51.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4ef139da8c1ba29996cc50264352ce92aa46d80e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-18 19:24:14.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/165e2c33d7664f4184344787c158528e\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7a1abfd8ad3e478b9f088517932a086a : SUCCESS in 6m 16s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/ef3f17cde46544bd9d78922b17289fad : SUCCESS in 2m 39s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/98414d3b747b4245a736a5a76a4888f2 : SUCCESS in 6m 45s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ec6b425055454efdb7f267cb42a51b3b : SUCCESS in 5m 40s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/eecb9753dbdc4126932edc34e8fd2d87 : SUCCESS in 4m 35s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/32ae30bbb1ce4f9bb4335b0f9107cc93 : SUCCESS in 4m 29s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/0f3a622450284b2f8fd32c7de5a041d8 : SUCCESS in 9m 57s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/b5d6d8e8ff3342fab198c4dc510b1fa0 : SUCCESS in 1h 15m 21s\n- networking-baremetal-ovn-vxlan https://zuul.opendev.org/t/openstack/build/e40fc812a5e54a9992cb6374d8fa5d04 : SUCCESS in 19m 36s\n- networking-generic-switch-tox-codespell https://zuul.opendev.org/t/openstack/build/b1c771bd01e148ef845680adc11ec5da : SUCCESS in 2m 35s","accounts_in_message":[],"_revision_number":1},{"id":"3395ffb1e71e39e6e5adeefe3bcf2e135f7be87e","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-09-21 11:09:51.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"7e7ada6d005438d2ffcd68c674b392f8e6522b1e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"date":"2026-09-21 15:49:39.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+2 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"76f606ed631409a9f69639d1143eb2b4f63b4d6d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-21 17:42:44.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fb796f655b874c9bafe2803e734d8fe4\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ca134ad11a384b718d86ef4c00e4c322 : SUCCESS in 5m 03s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/0ad86d7b7016411d8b03c5b9d76389fa : SUCCESS in 4m 40s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/269c4bc5d536404bb9d96e7c9eaeb06d : SUCCESS in 5m 15s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/d4ecec8894ad40a3810384d313f3a0bb : SUCCESS in 5m 26s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e0281aa372674e11bea9f37b3aec6a6e : SUCCESS in 9m 24s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5f80d857b30d4225bfecdfb24ed04d5c : SUCCESS in 3m 40s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/9c5f9835501d4fc481665baec650483f : SUCCESS in 27m 43s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/2b700ec8e11046d5aa2dcc3d93fd2833 : SUCCESS in 1h 45m 29s\n- networking-baremetal-ovn-vxlan https://zuul.opendev.org/t/openstack/build/04cd190d38fd4fe9af351d24edac5384 : SUCCESS in 26m 29s\n- networking-generic-switch-tox-codespell https://zuul.opendev.org/t/openstack/build/368a54e1f85843739e5f618e2ee2881d : SUCCESS in 3m 27s","accounts_in_message":[],"_revision_number":2},{"id":"23534ce3f42adc59537960bbc3719f34e03f30c8","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-09-22 07:43:14.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"946c27d15e3031cc2c12135553e083e110c3b544","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"date":"2026-09-22 15:13:05.000000000","message":"Topic set to ngs-configdoc","accounts_in_message":[],"_revision_number":2},{"id":"5b3c7c0dc0b31e126598673baea55594f920ea01","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-09-22 15:56:02.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"5136a0b2412ffce8035de1975aecc01532afe01b","author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"date":"2026-09-22 16:21:29.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"958db631c046d0f6f0ecaeeb423948abf2bc1999","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 16:22:13.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"0a45ba313f5f7f55c2da49369f12ea2a769148a4","tag":"autogenerated:gerrit:setHashtag","author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"date":"2026-09-22 17:06:32.000000000","message":"Hashtag added: ironic-week-prio","accounts_in_message":[],"_revision_number":2},{"id":"71f29a9fddeb4842e0c8652ee5196cdc3d032f37","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 18:13:41.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3d491b2e1cc24325ac9fdda6fc61c19f\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/33a5b1c2c6724733a77ccfba14d1a79d : SUCCESS in 4m 33s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/566dd5cb57b84958af325e34ea5c2748 : SUCCESS in 4m 40s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/24cb6e73bdbf4948914070892f33fa83 : SUCCESS in 4m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6dbdaab49f5645b3834cae3a8a6a4eee : SUCCESS in 9m 14s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/affa11e827844958a3aee588410ad60d : SUCCESS in 4m 07s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/f46ec0864ac7401ca86eacfc3a1c1a76 : SUCCESS in 10m 07s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/756cdc8660a0475faec4ccb214f1806b : SUCCESS in 1h 46m 05s\n- networking-baremetal-ovn-vxlan https://zuul.opendev.org/t/openstack/build/f9eb8fb41156454a8226ec487465c900 : SUCCESS in 24m 28s","accounts_in_message":[],"_revision_number":2},{"id":"0085218f36af920d12a3d31246ab6698ad4aee1b","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 18:13:41.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"4a93db2667688719e4a1c84c2e2164e5a6560fd7","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 18:14:49.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/05568c47fe1e4ec59178886a6cbdae10\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1ad105aadd7a4b41aa30b2b150b32cb9 : SUCCESS in 55s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"bd8730998d027140bdbace805af2b9d4b60bbb2c","revisions":{"2607e78686b96f547ef1ef25405a4cb38fa32928":{"kind":"REWORK","_number":1,"created":"2026-09-18 18:02:51.000000000","uploader":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"ref":"refs/changes/14/1006314/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/networking-generic-switch","ref":"refs/changes/14/1006314/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/1"}}},"commit":{"parents":[{"commit":"c99c8626c431bd7faf3d0429c1c70315e10a2fe3","subject":"Merge \"tox: Remove redundant injection of VIRTUAL_ENV variable\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/c99c8626c431bd7faf3d0429c1c70315e10a2fe3"}]}],"author":{"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","date":"2026-09-18 16:42:13.000000000","tz":-420},"committer":{"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","date":"2026-09-18 18:01:47.000000000","tz":-420},"subject":"Describe internal per-switch options as cfg.Opt instances","message":"Describe internal per-switch options as cfg.Opt instances\n\nThe per-switch options in NGS_INTERNAL_OPTS, JUNIPER_INTERNAL_OPTS and\nOVS_INTERNAL_OPTS were carried as bare dicts, with their help text living\nonly as adjacent code comments. That text is not machine-readable, so it\ncannot be surfaced to operators or used for documentation generation.\n\nThese options are read from the dynamically-named [genericswitch:\u003cname\u003e]\nconfig sections, so the group names are not known ahead of time and the\noptions cannot be registered with oslo.config in the usual way. However,\ncfg.Opt instances are usable as standalone metadata carriers: each one\nrecords the option name, default, type and help text in a single place.\n\nConvert the three option lists to typed cfg.Opt instances and update the\nconsuming loops to read opt.name/opt.default. Behavior is unchanged:\nvalues are still stored as read from config and the existing helper\nmethods continue to perform any type coercion. The typed metadata enables\na follow-up change to generate operator documentation from these options.\n\nAssisted-By: Claude Opus 4.8\nChange-Id: I83b9f57f6e89ca7007e0cf6ccaae883eed6eb8b8\nSigned-off-by: Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/2607e78686b96f547ef1ef25405a4cb38fa32928"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/2607e78686b96f547ef1ef25405a4cb38fa32928"}]},"branch":"refs/heads/master"},"bd8730998d027140bdbace805af2b9d4b60bbb2c":{"kind":"REWORK","_number":2,"created":"2026-09-21 15:49:39.000000000","uploader":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"ref":"refs/changes/14/1006314/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/networking-generic-switch","ref":"refs/changes/14/1006314/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/networking-generic-switch refs/changes/14/1006314/2"}}},"commit":{"parents":[{"commit":"14bd1f233ea3df252c6c1a5a01e6374fa784d035","subject":"Merge \"Rename netconf_models to yang_models\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/14bd1f233ea3df252c6c1a5a01e6374fa784d035"}]}],"author":{"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","date":"2026-09-18 16:42:13.000000000","tz":-420},"committer":{"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","date":"2026-09-21 15:26:43.000000000","tz":-420},"subject":"Describe internal per-switch options as cfg.Opt instances","message":"Describe internal per-switch options as cfg.Opt instances\n\nThe per-switch options in NGS_INTERNAL_OPTS, JUNIPER_INTERNAL_OPTS and\nOVS_INTERNAL_OPTS were carried as bare dicts, with their help text living\nonly as adjacent code comments. That text is not machine-readable, so it\ncannot be surfaced to operators or used for documentation generation.\n\nThese options are read from the dynamically-named [genericswitch:\u003cname\u003e]\nconfig sections, so the group names are not known ahead of time and the\noptions cannot be registered with oslo.config in the usual way. However,\ncfg.Opt instances are usable as standalone metadata carriers: each one\nrecords the option name, default, type and help text in a single place.\n\nConvert the three option lists to typed cfg.Opt instances and update the\nconsuming loops to read opt.name/opt.default. Behavior is unchanged:\nvalues are still stored as read from config and the existing helper\nmethods continue to perform any type coercion. The typed metadata enables\na follow-up change to generate operator documentation from these options.\n\nAssisted-By: Claude Opus 4.8\nChange-Id: I83b9f57f6e89ca7007e0cf6ccaae883eed6eb8b8\nSigned-off-by: Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/bd8730998d027140bdbace805af2b9d4b60bbb2c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/bd8730998d027140bdbace805af2b9d4b60bbb2c"}]},"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":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"}},{"label":"Backport-Candidate","status":"MAY"}]}],"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":""}}}]}
