)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"bb6b7095b933fda9759e07a61c1afbef9f564edf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"12ff5ac3_f6dddc19","updated":"2026-04-17 01:00:08.000000000","message":"recheck ironic devstack plugin fixed","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"c57cfb73ca9dce1aad8609230c0508491fe9809d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9c164cac_32a61a3a","updated":"2026-06-02 11:31:37.000000000","message":"Thanks for adjusting the default mtu handling.  LGTM","commit_id":"e97a1d60f4ef1ae9daa584615f65222dfbd85d99"},{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"06b290b5_af5aae81","updated":"2026-08-11 17:44:23.000000000","message":"-1 is specifically for the unavoidable behavior change for operators who have network.mtu set in lots of places already.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2ef80b5156d77027587e0eb1135d6de55785cffe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"93a21e2d_5824fa72","updated":"2026-07-20 16:26:35.000000000","message":"recheck bug 2161344 should now be fixed.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"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"},"change_message_id":"98cbe23b20c9d5e1f03f14134e6b27f85d188ab8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"dc7291f4_bd062014","in_reply_to":"06b290b5_af5aae81","updated":"2026-08-25 17:45:34.000000000","message":"Renewing this concern.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b7a25be50da80ac7d4430459f82324215a06bc3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6ad5988f_113e21cd","in_reply_to":"c710df2c_502e7da5","updated":"2026-09-01 18:56:22.000000000","message":"I think this was resolved in patchset by having a default false configuration option. I the assumption that the MTU is wrong, but that the dhcp is somehow then magically correct then its a bad assumption, because that mtu value gets announced and embedded in the configuration and on the router flows.\n\nSo, I think we\u0027ve done the needful here, but if we disagree lets get on a call to discuss.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1ed21380a3eb8ce1964ae76a9b894b05903f9e5f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c710df2c_502e7da5","in_reply_to":"dc7291f4_bd062014","updated":"2026-09-01 14:19:58.000000000","message":"So, the reality is most operators do MTU\u0027s wrong anyway, we can make it default off, but we\u0027re actually making the UX worse by defaulting it off. (...and honestly haven\u0027t had time to revisit this.)","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"}],"doc/source/admin/general-configuration.rst":[{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[{"line_number":161,"context_line":"networks to the physical switch ports. This is configured on a per-device"},{"line_number":162,"context_line":"basis using two options."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"``ngs_port_default_mtu`` sets the default MTU for access (bound) ports. When"},{"line_number":165,"context_line":"a Neutron network has no MTU attribute, this value is used instead. It is also"},{"line_number":166,"context_line":"used to reset the port MTU when a port is unbound. If this option is not set,"},{"line_number":167,"context_line":"no MTU management occurs::"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a20c520b_8afc3e6d","line":165,"range":{"start_line":164,"start_character":72,"end_line":165,"end_character":67},"updated":"2026-08-11 17:44:23.000000000","message":"GR-OSS Group Review:\n- Doug (cardoe) presented a concern where MTU is represented inconsistently across neutron/neutron-lib (one presents MTU as a non-nullable int, the other presents it as a nullable int/value). There is some uncertainty around the actual behavior here, and whether or not MTU may EVER not be passed down from Neutron. We need to more strongly validate this assumption.\n\nDoug will validate this assumption on his own after group review.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b7a25be50da80ac7d4430459f82324215a06bc3","unresolved":true,"context_lines":[{"line_number":161,"context_line":"networks to the physical switch ports. This is configured on a per-device"},{"line_number":162,"context_line":"basis using two options."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"``ngs_port_default_mtu`` sets the default MTU for access (bound) ports. When"},{"line_number":165,"context_line":"a Neutron network has no MTU attribute, this value is used instead. It is also"},{"line_number":166,"context_line":"used to reset the port MTU when a port is unbound. If this option is not set,"},{"line_number":167,"context_line":"no MTU management occurs::"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9b290bf8_94267ee8","line":165,"range":{"start_line":164,"start_character":72,"end_line":165,"end_character":67},"in_reply_to":"536ad0f3_e15b5303","updated":"2026-09-01 18:56:22.000000000","message":"Claude seems to believe the network representation always has an mtu value because it is defaulted in the database to 1500 unless otherwise set.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"afd1674e09dca1645ca01f3709b68227cd830ff5","unresolved":true,"context_lines":[{"line_number":161,"context_line":"networks to the physical switch ports. This is configured on a per-device"},{"line_number":162,"context_line":"basis using two options."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"``ngs_port_default_mtu`` sets the default MTU for access (bound) ports. When"},{"line_number":165,"context_line":"a Neutron network has no MTU attribute, this value is used instead. It is also"},{"line_number":166,"context_line":"used to reset the port MTU when a port is unbound. If this option is not set,"},{"line_number":167,"context_line":"no MTU management occurs::"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"fea29f42_f98c7c30","line":165,"range":{"start_line":164,"start_character":72,"end_line":165,"end_character":67},"in_reply_to":"a20c520b_8afc3e6d","updated":"2026-08-24 10:54:31.000000000","message":"Has this concern been addressed?","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1ed21380a3eb8ce1964ae76a9b894b05903f9e5f","unresolved":true,"context_lines":[{"line_number":161,"context_line":"networks to the physical switch ports. This is configured on a per-device"},{"line_number":162,"context_line":"basis using two options."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"``ngs_port_default_mtu`` sets the default MTU for access (bound) ports. When"},{"line_number":165,"context_line":"a Neutron network has no MTU attribute, this value is used instead. It is also"},{"line_number":166,"context_line":"used to reset the port MTU when a port is unbound. If this option is not set,"},{"line_number":167,"context_line":"no MTU management occurs::"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"536ad0f3_e15b5303","line":165,"range":{"start_line":164,"start_character":72,"end_line":165,"end_character":67},"in_reply_to":"fea29f42_f98c7c30","updated":"2026-09-01 14:19:58.000000000","message":"I honestly haven\u0027t had a chance to dig into it, but it feels like theory out of generalized configuration frustration as opposed to the actual network options which get hydrated. I\u0027ll need to sit down and actually check, but I think its coming from the db records not the helpers.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"}],"networking_generic_switch/devices/netmiko_devices/__init__.py":[{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"fb05a530a2c9cc0cb7d5cde8a985cefce9401de7","unresolved":true,"context_lines":[{"line_number":631,"context_line":"                port\u003dport,"},{"line_number":632,"context_line":"                segmentation_id\u003dsegmentation_id)"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"        if self.SET_PORT_MTU and mtu:"},{"line_number":635,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":636,"context_line":"                self.SET_PORT_MTU, port\u003dport, mtu\u003dmtu)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        return self.send_commands_to_device(cmds)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"18d1930c_96066710","line":636,"range":{"start_line":634,"start_character":8,"end_line":636,"end_character":54},"updated":"2026-04-20 15:48:06.000000000","message":"For the sake of the standalone case, I\u0027d like to see this done the same way that the default_vlan was done (see line 613) so that it can be overridden by the caller where necessary, but in other cases falls back to the config default. \n\nSomething like or similar to:\n\n```suggestion\n        port_mtu \u003d mtu or self._get_port_default_mtu()\n        if self.SET_PORT_MTU and port_mtu:\n           cmds +\u003d self._format_commands(\n                self.SET_PORT_MTU, port\u003dport, mtu\u003dport_mtu) \n```","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"c57cfb73ca9dce1aad8609230c0508491fe9809d","unresolved":false,"context_lines":[{"line_number":631,"context_line":"                port\u003dport,"},{"line_number":632,"context_line":"                segmentation_id\u003dsegmentation_id)"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"        if self.SET_PORT_MTU and mtu:"},{"line_number":635,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":636,"context_line":"                self.SET_PORT_MTU, port\u003dport, mtu\u003dmtu)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        return self.send_commands_to_device(cmds)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"adf353b7_2a9f3d9f","line":636,"range":{"start_line":634,"start_character":8,"end_line":636,"end_character":54},"in_reply_to":"18d1930c_96066710","updated":"2026-06-02 11:31:37.000000000","message":"Done","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"fb05a530a2c9cc0cb7d5cde8a985cefce9401de7","unresolved":true,"context_lines":[{"line_number":668,"context_line":"                port\u003dport,"},{"line_number":669,"context_line":"                segmentation_id\u003dport_default_vlan)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        default_mtu \u003d self._get_port_default_mtu()"},{"line_number":672,"context_line":"        if self.SET_PORT_MTU and default_mtu:"},{"line_number":673,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":674,"context_line":"                self.SET_PORT_MTU, port\u003dport, mtu\u003ddefault_mtu)"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        if self._disable_inactive_ports() and self.DISABLE_PORT:"},{"line_number":677,"context_line":"            cmds +\u003d self._format_commands(self.DISABLE_PORT, port\u003dport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ddd5071e_8ac1fb38","line":674,"range":{"start_line":671,"start_character":0,"end_line":674,"end_character":62},"updated":"2026-04-20 15:48:06.000000000","message":"Similar to the comment above in plug_port_to_network, I\u0027d like to see this handle an override in the function args so that here similar to how it was done on line 646. \n\nSomething like:\n\n\n```suggestion\n        default_mtu \u003d mtu or self._get_port_default_mtu()\n        if self.SET_PORT_MTU and default_mtu:\n            cmds +\u003d self._format_commands(\n                self.SET_PORT_MTU, port\u003dport, mtu\u003ddefault_mtu)\n```","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"c57cfb73ca9dce1aad8609230c0508491fe9809d","unresolved":false,"context_lines":[{"line_number":668,"context_line":"                port\u003dport,"},{"line_number":669,"context_line":"                segmentation_id\u003dport_default_vlan)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        default_mtu \u003d self._get_port_default_mtu()"},{"line_number":672,"context_line":"        if self.SET_PORT_MTU and default_mtu:"},{"line_number":673,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":674,"context_line":"                self.SET_PORT_MTU, port\u003dport, mtu\u003ddefault_mtu)"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        if self._disable_inactive_ports() and self.DISABLE_PORT:"},{"line_number":677,"context_line":"            cmds +\u003d self._format_commands(self.DISABLE_PORT, port\u003dport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e5712787_16f8a356","line":674,"range":{"start_line":671,"start_character":0,"end_line":674,"end_character":62},"in_reply_to":"ddd5071e_8ac1fb38","updated":"2026-06-02 11:31:37.000000000","message":"Done","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"fb05a530a2c9cc0cb7d5cde8a985cefce9401de7","unresolved":true,"context_lines":[{"line_number":711,"context_line":"                bond\u003dbond,"},{"line_number":712,"context_line":"                segmentation_id\u003dsegmentation_id)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        if self.SET_BOND_MTU and mtu:"},{"line_number":715,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":716,"context_line":"                self.SET_BOND_MTU, bond\u003dbond, mtu\u003dmtu)"},{"line_number":717,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cbea9028_ee0addc7","line":714,"updated":"2026-04-20 15:48:06.000000000","message":"equivalent comment here to what I mentioned in the plug_port_to_network","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"c57cfb73ca9dce1aad8609230c0508491fe9809d","unresolved":false,"context_lines":[{"line_number":711,"context_line":"                bond\u003dbond,"},{"line_number":712,"context_line":"                segmentation_id\u003dsegmentation_id)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        if self.SET_BOND_MTU and mtu:"},{"line_number":715,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":716,"context_line":"                self.SET_BOND_MTU, bond\u003dbond, mtu\u003dmtu)"},{"line_number":717,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6365f21f_2986c4fd","line":714,"in_reply_to":"cbea9028_ee0addc7","updated":"2026-06-02 11:31:37.000000000","message":"Done","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"fb05a530a2c9cc0cb7d5cde8a985cefce9401de7","unresolved":true,"context_lines":[{"line_number":753,"context_line":"                bond\u003dbond,"},{"line_number":754,"context_line":"                segmentation_id\u003dport_default_vlan)"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"        default_mtu \u003d self._get_port_default_mtu()"},{"line_number":757,"context_line":"        if self.SET_BOND_MTU and default_mtu:"},{"line_number":758,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":759,"context_line":"                self.SET_BOND_MTU, bond\u003dbond, mtu\u003ddefault_mtu)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c24403d9_2b5be934","line":756,"range":{"start_line":756,"start_character":0,"end_line":756,"end_character":50},"updated":"2026-04-20 15:48:06.000000000","message":"equivalent comment here to what I mentioned in the delete_port","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"c57cfb73ca9dce1aad8609230c0508491fe9809d","unresolved":false,"context_lines":[{"line_number":753,"context_line":"                bond\u003dbond,"},{"line_number":754,"context_line":"                segmentation_id\u003dport_default_vlan)"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"        default_mtu \u003d self._get_port_default_mtu()"},{"line_number":757,"context_line":"        if self.SET_BOND_MTU and default_mtu:"},{"line_number":758,"context_line":"            cmds +\u003d self._format_commands("},{"line_number":759,"context_line":"                self.SET_BOND_MTU, bond\u003dbond, mtu\u003ddefault_mtu)"}],"source_content_type":"text/x-python","patch_set":1,"id":"89b646bb_ce095ec3","line":756,"range":{"start_line":756,"start_character":0,"end_line":756,"end_character":50},"in_reply_to":"c24403d9_2b5be934","updated":"2026-06-02 11:31:37.000000000","message":"Done","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[{"line_number":695,"context_line":"        if not self.PLUG_BOND_TO_NETWORK:"},{"line_number":696,"context_line":"            return self.plug_port_to_network(bond, segmentation_id,"},{"line_number":697,"context_line":"                                             trunk_details\u003dtrunk_details,"},{"line_number":698,"context_line":"                                             default_vlan\u003ddefault_vlan,"},{"line_number":699,"context_line":"                                             mtu\u003dmtu)"},{"line_number":700,"context_line":"        cmds \u003d []"},{"line_number":701,"context_line":"        if self._disable_inactive_ports() and self.ENABLE_BOND:"}],"source_content_type":"text/x-python","patch_set":5,"id":"f37ec98e_19f2dbc1","line":698,"updated":"2026-08-11 17:44:23.000000000","message":"This change appears unrelated to the rest of the changeset. Why are we adding default_vlan here? If this is an unrelated bugfix can we split it out, and that would enable us to backport the fix.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b7a25be50da80ac7d4430459f82324215a06bc3","unresolved":false,"context_lines":[{"line_number":695,"context_line":"        if not self.PLUG_BOND_TO_NETWORK:"},{"line_number":696,"context_line":"            return self.plug_port_to_network(bond, segmentation_id,"},{"line_number":697,"context_line":"                                             trunk_details\u003dtrunk_details,"},{"line_number":698,"context_line":"                                             default_vlan\u003ddefault_vlan,"},{"line_number":699,"context_line":"                                             mtu\u003dmtu)"},{"line_number":700,"context_line":"        cmds \u003d []"},{"line_number":701,"context_line":"        if self._disable_inactive_ports() and self.ENABLE_BOND:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5d295dba_bb6b54ad","line":698,"in_reply_to":"f37ec98e_19f2dbc1","updated":"2026-09-01 18:56:22.000000000","message":"Done","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[{"line_number":737,"context_line":"        if not self.UNPLUG_BOND_FROM_NETWORK:"},{"line_number":738,"context_line":"            return self.delete_port(bond, segmentation_id,"},{"line_number":739,"context_line":"                                    trunk_details\u003dtrunk_details,"},{"line_number":740,"context_line":"                                    default_vlan\u003ddefault_vlan,"},{"line_number":741,"context_line":"                                    mtu\u003dmtu)"},{"line_number":742,"context_line":"        cmds \u003d self._format_commands(self.UNPLUG_BOND_FROM_NETWORK,"},{"line_number":743,"context_line":"                                     bond\u003dbond,"}],"source_content_type":"text/x-python","patch_set":5,"id":"277b924f_aba7ee24","line":740,"updated":"2026-08-11 17:44:23.000000000","message":"default_vlan added here, too","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b7a25be50da80ac7d4430459f82324215a06bc3","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        if not self.UNPLUG_BOND_FROM_NETWORK:"},{"line_number":738,"context_line":"            return self.delete_port(bond, segmentation_id,"},{"line_number":739,"context_line":"                                    trunk_details\u003dtrunk_details,"},{"line_number":740,"context_line":"                                    default_vlan\u003ddefault_vlan,"},{"line_number":741,"context_line":"                                    mtu\u003dmtu)"},{"line_number":742,"context_line":"        cmds \u003d self._format_commands(self.UNPLUG_BOND_FROM_NETWORK,"},{"line_number":743,"context_line":"                                     bond\u003dbond,"}],"source_content_type":"text/x-python","patch_set":5,"id":"00576afb_9425d548","line":740,"in_reply_to":"277b924f_aba7ee24","updated":"2026-09-01 18:56:22.000000000","message":"Done","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c58731255fe6260d630e9397757221406e0f2fad","unresolved":true,"context_lines":[{"line_number":460,"context_line":"            cmds +\u003d self._format_commands(self.ADD_NETWORK_TO_TRUNK,"},{"line_number":461,"context_line":"                                          port\u003dport,"},{"line_number":462,"context_line":"                                          segmentation_id\u003dsegmentation_id)"},{"line_number":463,"context_line":"            if self._manage_mtu() and self.SET_PORT_MTU and trunk_mtu:"},{"line_number":464,"context_line":"                cmds +\u003d self._format_commands("},{"line_number":465,"context_line":"                    self.SET_PORT_MTU, port\u003dport, mtu\u003dtrunk_mtu)"},{"line_number":466,"context_line":"        return self.send_commands_to_device(cmds)"}],"source_content_type":"text/x-python","patch_set":8,"id":"b40b41fe_0e8e857f","line":463,"updated":"2026-09-09 10:58:34.000000000","message":"Here and below: wdyt about logging a warning when a non-default MTU is provided but SET_PORT_MTU/SET_BOND_MTU is empty? Maybe also a debyg message when _manage_mtu is false?","commit_id":"5e73d6a43cf14dfff4fde67ef6f6fc5b0948d43b"}],"networking_generic_switch/generic_switch_mech.py":[{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[{"line_number":424,"context_line":"                mtu \u003d None"},{"line_number":425,"context_line":"                if isinstance(network, dict):"},{"line_number":426,"context_line":"                    mtu \u003d network.get(\u0027mtu\u0027)"},{"line_number":427,"context_line":"                if not mtu:"},{"line_number":428,"context_line":"                    mtu \u003d switch._get_port_default_mtu()"},{"line_number":429,"context_line":"                trunk_mtu \u003d switch._get_trunk_port_mtu()"},{"line_number":430,"context_line":"                if mtu and trunk_mtu and mtu \u003e trunk_mtu:"}],"source_content_type":"text/x-python","patch_set":5,"id":"46a0215f_78e972d4","line":427,"updated":"2026-08-11 17:44:23.000000000","message":"I know there are probably API contracts with Neutron where we shouldn\u0027t do this... but given the operating model of NGS for a decade+ was \"ignore MTU values in neutron\", it seems like we may want a NGS config turnoff for handling MTUs altogether. I just don\u0027t want to put an existing Ironic operator in the boat of upgrading NGS and having bad MTUs propagate around.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b7a25be50da80ac7d4430459f82324215a06bc3","unresolved":true,"context_lines":[{"line_number":424,"context_line":"                mtu \u003d None"},{"line_number":425,"context_line":"                if isinstance(network, dict):"},{"line_number":426,"context_line":"                    mtu \u003d network.get(\u0027mtu\u0027)"},{"line_number":427,"context_line":"                if not mtu:"},{"line_number":428,"context_line":"                    mtu \u003d switch._get_port_default_mtu()"},{"line_number":429,"context_line":"                trunk_mtu \u003d switch._get_trunk_port_mtu()"},{"line_number":430,"context_line":"                if mtu and trunk_mtu and mtu \u003e trunk_mtu:"}],"source_content_type":"text/x-python","patch_set":5,"id":"e89415c6_e18453dc","line":427,"in_reply_to":"46a0215f_78e972d4","updated":"2026-09-01 18:56:22.000000000","message":"So I think it\u0027s more nuanced then that actually.\n\nFor a decade+, operators have had to statically configure the MTU\u0027s on switch ports and then match the network MTUs in neutron, or at least, ideally match, but a mismatch is not super problematic.\n\nSo if they wanted to plug in a network with a larger MTU oh, all the switch ports have to be reconfigured manually, then workloads deployed which is super problematic in an automated fashion because its not automated then.\n\nWhich in itself is not really a problem here. Here we\u0027re focused on trying to automate the resolution of such issues through a feature in NGS. But the root issue is that MTU is enforced on attached routers. While there *are* rules on the packet reception side on interfaces, MTUs are enforced on the transmission side of attached interfaces, including on routers. Meaning operators get caught in traffic flow issues more often with static network configuration attempting to override the configuration state of the environment utilizing manual configuration.\n\nTo simplify and shift the issue, the MTU values in neutron were never ignored, they were always enforced on the routers and packet handling (sans, ovn having PMTU issues in the past). Now, using external routers, that may change things, but it is super rare behavior pattern from what I\u0027ve seen.\n\nI guess the right middle ground is to make it configurable (which we already have done, default False) but framing this as somehow breaking upon upgrade and assuming \"bad MTUs\" magically propagate is wrong, because they would have had to haven wrong and miss-matching the entire time and having packets getting dropped because they are trying to mash inconsistency together.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c58731255fe6260d630e9397757221406e0f2fad","unresolved":true,"context_lines":[{"line_number":645,"context_line":"        if isinstance(network, dict):"},{"line_number":646,"context_line":"            mtu \u003d network.get(\u0027mtu\u0027)"},{"line_number":647,"context_line":"        if not mtu:"},{"line_number":648,"context_line":"            mtu \u003d switch._get_port_default_mtu()"},{"line_number":649,"context_line":"        if not mtu:"},{"line_number":650,"context_line":"            return None"},{"line_number":651,"context_line":"        trunk_mtu \u003d switch._get_trunk_port_mtu()"}],"source_content_type":"text/x-python","patch_set":8,"id":"f7db9736_6316795d","line":648,"updated":"2026-09-09 10:58:34.000000000","message":"Let\u0027s avoid calling private methods here. The defaulting logic already lives in the generic code. This behavior may introduce an unnecessary difference between Neutron and standalone implementations.","commit_id":"5e73d6a43cf14dfff4fde67ef6f6fc5b0948d43b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c58731255fe6260d630e9397757221406e0f2fad","unresolved":true,"context_lines":[{"line_number":648,"context_line":"            mtu \u003d switch._get_port_default_mtu()"},{"line_number":649,"context_line":"        if not mtu:"},{"line_number":650,"context_line":"            return None"},{"line_number":651,"context_line":"        trunk_mtu \u003d switch._get_trunk_port_mtu()"},{"line_number":652,"context_line":"        if trunk_mtu and mtu \u003e trunk_mtu:"},{"line_number":653,"context_line":"            raise ngs_exc.GenericSwitchMtuExceedError("},{"line_number":654,"context_line":"                mtu\u003dmtu,"}],"source_content_type":"text/x-python","patch_set":8,"id":"86acd95a_b81a9982","line":651,"updated":"2026-09-09 10:58:34.000000000","message":"Same","commit_id":"5e73d6a43cf14dfff4fde67ef6f6fc5b0948d43b"}],"networking_generic_switch/tests/unit/test_generic_switch_mech.py":[{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[{"line_number":1205,"context_line":"        self.switch_mock._get_trunk_port_mtu.return_value \u003d None"},{"line_number":1206,"context_line":"        driver.update_port_postcommit(mock_context)"},{"line_number":1207,"context_line":"        self.switch_mock.plug_port_to_network.assert_called_once_with("},{"line_number":1208,"context_line":"            2222, 42, mtu\u003d1500)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    @mock.patch.object(provisioning_blocks, \u0027provisioning_complete\u0027,"},{"line_number":1211,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f9dcd687_bf8d1675","line":1208,"updated":"2026-08-11 17:44:23.000000000","message":"Can we add an additional test case validating that if network.mtu\u003d0, we behave the same as if no MTU was sent.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b7a25be50da80ac7d4430459f82324215a06bc3","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        self.switch_mock._get_trunk_port_mtu.return_value \u003d None"},{"line_number":1206,"context_line":"        driver.update_port_postcommit(mock_context)"},{"line_number":1207,"context_line":"        self.switch_mock.plug_port_to_network.assert_called_once_with("},{"line_number":1208,"context_line":"            2222, 42, mtu\u003d1500)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    @mock.patch.object(provisioning_blocks, \u0027provisioning_complete\u0027,"},{"line_number":1211,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"45badd62_9fa4a392","line":1208,"in_reply_to":"f9dcd687_bf8d1675","updated":"2026-09-01 18:56:22.000000000","message":"Done in patchset 6.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"}],"releasenotes/notes/add-mtu-management-e41fefe85b21.yaml":[{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"fb05a530a2c9cc0cb7d5cde8a985cefce9401de7","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    control the behavior. When configured, port MTU is set from the Neutron"},{"line_number":7,"context_line":"    network\u0027s MTU attribute during binding and reset to the default on unbind."},{"line_number":8,"context_line":"    Trunk port MTU is set when VLANs are created, and serves as an upper bound"},{"line_number":9,"context_line":"    for access port MTU validation. MTU commands are supported on Arista EOS,"},{"line_number":10,"context_line":"    ArubaOS-CX, Cisco NX-OS, Cumulus NCLU/NVUE, Dell OS10, Juniper Junos,"},{"line_number":11,"context_line":"    Ruijie, and SONiC. Devices without MTU command templates silently skip"},{"line_number":12,"context_line":"    MTU configuration, preserving backward compatibility."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1263c53a_290651e0","line":9,"range":{"start_line":9,"start_character":53,"end_line":9,"end_character":63},"updated":"2026-04-20 15:48:06.000000000","message":"For BiFrost testing support (and maybe other cases), it would be nice to have OVS supported added.  Something like:\n\n```\n    SET_MTU_PORT \u003d (\n        \u0027ovs-vsctl set interface {port} mtu_request\u003d{mtu}\u0027,\n    )\n```","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"c57cfb73ca9dce1aad8609230c0508491fe9809d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    control the behavior. When configured, port MTU is set from the Neutron"},{"line_number":7,"context_line":"    network\u0027s MTU attribute during binding and reset to the default on unbind."},{"line_number":8,"context_line":"    Trunk port MTU is set when VLANs are created, and serves as an upper bound"},{"line_number":9,"context_line":"    for access port MTU validation. MTU commands are supported on Arista EOS,"},{"line_number":10,"context_line":"    ArubaOS-CX, Cisco NX-OS, Cumulus NCLU/NVUE, Dell OS10, Juniper Junos,"},{"line_number":11,"context_line":"    Ruijie, and SONiC. Devices without MTU command templates silently skip"},{"line_number":12,"context_line":"    MTU configuration, preserving backward compatibility."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"ef1901ef_56dedd8e","line":9,"range":{"start_line":9,"start_character":53,"end_line":9,"end_character":63},"in_reply_to":"1263c53a_290651e0","updated":"2026-06-02 11:31:37.000000000","message":"Done","commit_id":"10f0f49d4b071d85a9c2d300450da7df024c60cd"},{"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"},"change_message_id":"7dddc4a1c0558144b9fd3ef38cf0f6193fa0f77b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds opt-in MTU management for switch ports. Two new per-device"},{"line_number":5,"context_line":"    configuration options ``ngs_port_default_mtu`` and ``ngs_trunk_port_mtu``"},{"line_number":6,"context_line":"    control the behavior. When configured, port MTU is set from the Neutron"},{"line_number":7,"context_line":"    network\u0027s MTU attribute during binding and reset to the default on unbind."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"f66cb0e0_e31b806c","line":4,"updated":"2026-08-11 17:44:23.000000000","message":"This MTU management is not opt-in if MTUs are already set in operator networks. Only the trunk and default MTUs are configurable. We likely need to put in a high level toggle.","commit_id":"131d24d1509277221316f79cc6d0490ffe9e730b"}]}
