)]}'
{"/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"}],"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"}],"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":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"}],"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"}],"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"}],"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"}]}
