)]}'
{"id":"openstack%2Fnetworking-generic-switch~979350","triplet_id":"openstack%2Fnetworking-generic-switch~master~I4c084e67c9d4790e79b2088fcc889df8f8b52732","project":"openstack/networking-generic-switch","branch":"master","topic":"ironic-vxlan","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-03-16 02:57:11.000000000","reason":"Change was abandoned"},"10342":{"account":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"last_update":"2026-03-11 14:12:25.000000000","reason":"Change was abandoned"},"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-03-16 02:57:11.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I4c084e67c9d4790e79b2088fcc889df8f8b52732","subject":"AttributeError: delete_port_postcommit segment\u003dNone","status":"ABANDONED","created":"2026-03-06 20:21:32.000000000","updated":"2026-03-16 02:57:11.000000000","total_comment_count":6,"unresolved_comment_count":3,"has_review_started":true,"meta_rev_id":"8bd73e1dd62a1c43b0b555af2baac0f9c7ad3a7a","_number":979350,"virtual_id_number":979350,"owner":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"_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":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-03-15 20:40:03.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":-2,"max":2},"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":0,"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,"permitted_voting_range":{"min":-2,"max":2},"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},{"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":[{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":0,"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,"permitted_voting_range":{"min":-1,"max":1},"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},{"_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":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":0,"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,"permitted_voting_range":{"min":-1,"max":1},"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},{"_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":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},{"_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-03-06 21:29:10.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-03-06 22:58:18.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-03-09 17:43:09.000000000","updated_by":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"reviewer":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"state":"CC"},{"updated":"2026-03-09 18:40:26.000000000","updated_by":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"reviewer":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"state":"REVIEWER"}],"messages":[{"id":"c766c9023cd69834169366068d8f0a700a1d8cb3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-06 20:21:32.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7389111ca6306b7c9e327ad563aae53e4c332bf8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-06 21:29:10.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a6f4e000a40c4c5c98268b57ac1cbdfb\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c807cb4972024d7abb46a100a65e85d5 : SUCCESS in 4m 46s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/cc9698c1b3de40728e4f09d15abbe5d0 : SUCCESS in 4m 45s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/dff71178b45d441eadb7a950e29fd210 : SUCCESS in 5m 49s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/85dd1b2d1fb047ac8e8629d5c69f38c8 : SUCCESS in 9m 30s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0a6f45c3cacb41529e4841bae721996f : SUCCESS in 11m 14s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/c67dbc413bfc4c188e89f18f93d85773 : SUCCESS in 14m 03s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/38e8b6909ed748e1a763c06f2b71fccb : SUCCESS in 1h 06m 44s\n- networking-generic-switch-tox-codespell https://zuul.opendev.org/t/openstack/build/9736dec4b284444a83a62770e2f32008 : SUCCESS in 3m 20s","accounts_in_message":[],"_revision_number":1},{"id":"dfb1460e7ff98b4669bedbda40c93598307cf7f3","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-03-06 22:58:18.000000000","message":"Patch Set 1: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"a92addafa13f920fdabee474cc4157b6e822488f","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-03-06 23:08:33.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"ddc2681736bafcc4e5454cff1e229451d8149136","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-07 12:45:58.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"000679574352c806d6b569b068ea9e1c9ea3a633","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-09 13:30:15.000000000","message":"Patch Set 1: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"78a7d673ee1dbd5b3e771284195f9a589ebf2e1d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-09 13:31:10.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased. Commit message was updated.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n* Workflow-1\n","accounts_in_message":[],"_revision_number":2},{"id":"cb3051b79d49826c276bea281d83ed49372e04c6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-09 15:12:29.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b61375045f204704a583a1fa093351ac\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e4ccacd8db6f498491be2c9a59678513 : SUCCESS in 3m 10s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/adc977083d7e419eb648a983f7cf9ff5 : SUCCESS in 4m 42s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/583ae885cd244e0b8b63405ba3fca7fd : SUCCESS in 4m 34s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/8205ec98f58e479db46c5fca1afafc42 : SUCCESS in 7m 38s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/738b359cbf534dbeaf7562eb31b98723 : SUCCESS in 9m 01s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/e3574769ffa54055adfa932da2aad788 : SUCCESS in 22m 45s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/c2f62c148dac435b85dd5bf5ef783c18 : SUCCESS in 1h 38m 20s\n- networking-generic-switch-tox-codespell https://zuul.opendev.org/t/openstack/build/a4ab8a7e1c7240b39924d44eb91afc25 : SUCCESS in 2m 26s","accounts_in_message":[],"_revision_number":2},{"id":"80dc8335a13310e9fef8229f314badddebd6488b","author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"date":"2026-03-09 17:43:09.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"51d811a88a6901da7c6da3a650502f4bbc4bfa73","author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"date":"2026-03-09 18:40:26.000000000","message":"Patch Set 2: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"df1468eefd024b1493e86c3d87ffd56e73fdc800","tag":"autogenerated:gerrit:abandon","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-11 14:12:25.000000000","message":"Abandoned\n\nObsolete due to https://review.opendev.org/c/openstack/networking-generic-switch/+/979914","accounts_in_message":[],"_revision_number":2},{"id":"b132228159a63f23d9221926c2b94e9705e6b4cd","tag":"autogenerated:gerrit:restore","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-15 18:27:10.000000000","message":"Restored","accounts_in_message":[],"_revision_number":2},{"id":"5c81565b4aa27fb6240bd3ff1071b1e6784886ed","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-15 18:29:02.000000000","message":"Patch Set 3: Commit message was updated.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":3},{"id":"8b6bcae45adfa2f44229ff39ee1da25d198eb160","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-15 20:40:03.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/85713346489948cfa17df187a816786d\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a62dad8a85d24113b130755f17d61713 : SUCCESS in 4m 09s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/19dec693303748cea5d7aaf360730108 : SUCCESS in 3m 02s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/911057ca0baa49788d94ef049d03687a : SUCCESS in 7m 18s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/70a58917f8614b84959507aa935d84cd : SUCCESS in 7m 16s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3c0d217ac86f49a9957e79305667d391 : SUCCESS in 8m 12s\n- networking-generic-switch-tempest-dlm https://zuul.opendev.org/t/openstack/build/69506d2d0e524b17b4b3d0a9fd045892 : SUCCESS in 12m 15s\n- ironic-tempest-ipa-wholedisk-direct-multinode https://zuul.opendev.org/t/openstack/build/1c5cc47a49e64da4af6d274a24d74a28 : FAILURE in 2h 02m 15s\n- networking-generic-switch-tox-codespell https://zuul.opendev.org/t/openstack/build/827eddea42c345be8481252be07e62e3 : SUCCESS in 3m 11s","accounts_in_message":[],"_revision_number":3},{"id":"8bd73e1dd62a1c43b0b555af2baac0f9c7ad3a7a","tag":"autogenerated:gerrit:abandon","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-16 02:57:11.000000000","message":"Abandoned","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"d5c614d3a532c8f554050e0ae6bf1fdb8e2fe755","revisions":{"bf746830357d45e8b054942bfa5dfd69f1ebaf89":{"kind":"REWORK","_number":1,"created":"2026-03-06 20:21:32.000000000","uploader":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"ref":"refs/changes/50/979350/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/networking-generic-switch","ref":"refs/changes/50/979350/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/1"}}},"commit":{"parents":[{"commit":"2f0fb9b60c7627f1a5f5883d8d1fc2fd119e341a","subject":"Merge \"Aruba: Add error message patterns to detect errors\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/2f0fb9b60c7627f1a5f5883d8d1fc2fd119e341a"}]}],"author":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-06 18:52:15.000000000","tz":60},"committer":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-06 19:07:09.000000000","tz":60},"subject":"AttributeError: delete_port_postcommit segment\u003dNone","message":"AttributeError: delete_port_postcommit segment\u003dNone\n\nHandle None segment gracefully in _unplug_port_from_segment by using\ndefault values (VLAN 1, network_id \u0027unknown\u0027) instead of skipping the\nunplug operation entirely. This ensures physical switch ports are\ncleaned up even when the segment has been released before the\ndelete_port_postcommit hook executes.\n\nThe segment can be None when _expand_segment() fails to find the\nsegment in the database, which occurs in race conditions where dynamic\nsegments are released before port deletion completes. However, the\nlocal_link_information still contains the physical switch port details,\nso the port should still be unconfigured to prevent stale switch\nconfiguration.\n\nChanges:\n- Extract segment info with defaults before the link iteration loop\n- Use default VLAN 1 when segment is None (matches existing fallback)\n- Use \u0027unknown\u0027 for network_id in logging when segment is None\n- Skip L2VNI cleanup when segment is None (requires segment metadata)\n\nChange-Id: I4c084e67c9d4790e79b2088fcc889df8f8b52732\nSigned-off-by: Harald Jensås \u003chjensas@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/bf746830357d45e8b054942bfa5dfd69f1ebaf89"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/bf746830357d45e8b054942bfa5dfd69f1ebaf89"}]},"branch":"refs/heads/master"},"029e3195e78b87e0cd281b4aa04c60a168ac2377":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":2,"created":"2026-03-09 13:31:10.000000000","uploader":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"ref":"refs/changes/50/979350/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/networking-generic-switch","ref":"refs/changes/50/979350/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/2"}}},"commit":{"parents":[{"commit":"f890029d6d317ffb007332ee53766321b51ea53d","subject":"Merge \"Add troubleshooting and performance guide.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/f890029d6d317ffb007332ee53766321b51ea53d"}]}],"author":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-06 18:52:15.000000000","tz":60},"committer":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-09 13:30:40.000000000","tz":60},"subject":"AttributeError: delete_port_postcommit segment\u003dNone","message":"AttributeError: delete_port_postcommit segment\u003dNone\n\nHandle None segment gracefully in _unplug_port_from_segment by using\ndefault values (VLAN 1, network_id \u0027unknown\u0027) instead of skipping the\nunplug operation entirely. This ensures physical switch ports are\ncleaned up even when the segment has been released before the\ndelete_port_postcommit hook executes.\n\nThe segment can be None when _expand_segment() fails to find the\nsegment in the database, which occurs in race conditions where dynamic\nsegments are released before port deletion completes. However, the\nlocal_link_information still contains the physical switch port details,\nso the port should still be unconfigured to prevent stale switch\nconfiguration.\n\nChanges:\n- Extract segment info with defaults before the link iteration loop\n- Use default VLAN 1 when segment is None (matches existing fallback)\n- Use \u0027unknown\u0027 for network_id in logging when segment is None\n- Skip L2VNI cleanup when segment is None (requires segment metadata)\n\nAssisted-By: Claude (claude-4.5-sonnet)\nChange-Id: I4c084e67c9d4790e79b2088fcc889df8f8b52732\nSigned-off-by: Harald Jensås \u003chjensas@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/029e3195e78b87e0cd281b4aa04c60a168ac2377"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/029e3195e78b87e0cd281b4aa04c60a168ac2377"}]},"branch":"refs/heads/master"},"d5c614d3a532c8f554050e0ae6bf1fdb8e2fe755":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2026-03-15 18:29:02.000000000","uploader":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"ref":"refs/changes/50/979350/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/networking-generic-switch","ref":"refs/changes/50/979350/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/networking-generic-switch refs/changes/50/979350/3"}}},"commit":{"parents":[{"commit":"f890029d6d317ffb007332ee53766321b51ea53d","subject":"Merge \"Add troubleshooting and performance guide.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/f890029d6d317ffb007332ee53766321b51ea53d"}]}],"author":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-06 18:52:15.000000000","tz":60},"committer":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-15 18:29:02.000000000","tz":0},"subject":"AttributeError: delete_port_postcommit segment\u003dNone","message":"AttributeError: delete_port_postcommit segment\u003dNone\n\nHandle None segment gracefully in _unplug_port_from_segment by using\ndefault values (VLAN 1, network_id \u0027unknown\u0027) instead of skipping the\nunplug operation entirely. This ensures physical switch ports are\ncleaned up even when the segment has been released before the\ndelete_port_postcommit hook executes.\n\nThe segment can be None when _expand_segment() fails to find the\nsegment in the database, which occurs in race conditions where dynamic\nsegments are released before port deletion completes. However, the\nlocal_link_information still contains the physical switch port details,\nso the port should still be unconfigured to prevent stale switch\nconfiguration.\n\nChanges:\n- Extract segment info with defaults before the link iteration loop\n- Use default VLAN 1 when segment is None (matches existing fallback)\n- Use \u0027unknown\u0027 for network_id in logging when segment is None\n- Skip L2VNI cleanup when segment is None (requires segment metadata)\n\nRelated-Bug: 2144497\nAssisted-By: Claude (claude-4.5-sonnet)\nChange-Id: I4c084e67c9d4790e79b2088fcc889df8f8b52732\nSigned-off-by: Harald Jensås \u003chjensas@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/d5c614d3a532c8f554050e0ae6bf1fdb8e2fe755"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/networking-generic-switch/commit/d5c614d3a532c8f554050e0ae6bf1fdb8e2fe755"}]},"branch":"refs/heads/master","description":"Edit commit message"}},"requirements":[],"submit_records":[],"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":{}}},{"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":"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":{}}},{"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":{}}}]}
