)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"dfc62249f811914e44678204783aa7518995e2e8","unresolved":true,"context_lines":[{"line_number":7,"context_line":"l2vni plug case with Cisco NXOS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds initial support to handle port binding as it"},{"line_number":10,"context_line":"relates to a heiarchical port binding request for VXLAN (or geneve)"},{"line_number":11,"context_line":"networks which are attached to specific segmentation Id value on"},{"line_number":12,"context_line":"a given physical network."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"8ed4befb_aff87574","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":24},"updated":"2026-02-11 06:54:10.000000000","message":"speling","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"746506fdb4569986ffff9e8714ac6f58fd66964f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"l2vni plug case with Cisco NXOS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds initial support to handle port binding as it"},{"line_number":10,"context_line":"relates to a heiarchical port binding request for VXLAN (or geneve)"},{"line_number":11,"context_line":"networks which are attached to specific segmentation Id value on"},{"line_number":12,"context_line":"a given physical network."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"d0dba8a7_d2e1c30b","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":24},"in_reply_to":"8ed4befb_aff87574","updated":"2026-02-22 20:23:43.000000000","message":"Done","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"dfc62249f811914e44678204783aa7518995e2e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"03f8e6f3_08783363","updated":"2026-02-11 06:54:10.000000000","message":"Looks good, all my comments are docs related","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"},{"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":"20bd319bf972c67f942362a9b6c3be33af4bfb20","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ddeb7ca7_9b5ca143","updated":"2026-02-10 19:07:14.000000000","message":"Witholding a +2 because it feels like we need a CCNA or something similar in order to review the cisco switch code. I did really appreciate the extensive comments and descriptions; I (think I) actually understand the data flow for this feature now.\n\nThis was done in a GR-OSS group review.","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"},{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"b6030ea83d5325b92caf91c26581a22e24483ded","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"731b424b_6410d4d3","updated":"2026-02-25 15:59:38.000000000","message":"Primarily reviewed for vendor syntax","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"e81cc10afc9b89844937fa8adab1a9755a0c57d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6882dd82_de876168","updated":"2026-02-24 18:52:44.000000000","message":"Upstream code review JAM.","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"07c8361ced00c73ce04300f584ce04060be9ade3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"946773c1_0182e7f5","updated":"2026-02-25 02:46:37.000000000","message":"recheck","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9368c24d98f181e69ffeabc33c435b8e9619395c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c7bd1933_e5430af3","updated":"2026-02-16 23:39:32.000000000","message":"recheck CI has been fixed on this repo.","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47972a56628293c82535a604f3ee1c75de80f491","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e642e81a_01a28ba4","updated":"2026-02-25 14:06:18.000000000","message":"recheck additional data point needed","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"583913725df9fd1ac6786b79a1d873f141d809cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"eac8a7ec_e0e71d70","updated":"2026-02-13 12:01:27.000000000","message":"recheck getting current ci state","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cf4b7397a9891331a2cd946c40ba13c0b82ceb67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9aee6925_3bcc2625","updated":"2026-02-26 00:00:57.000000000","message":"recheck multinode job fix merged","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e2229995fe469e08c355f40c7f09885f8e76a581","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8365f24b_2f11e396","updated":"2026-02-24 17:40:11.000000000","message":"recheck race condition in neutron-dhcp that was resolved","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ca7b69152a51c32ad8eeb72ff5ca35610d0ae734","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e5e4ab34_eaf422c2","updated":"2026-02-26 03:49:16.000000000","message":"recheck swift tempurl timeout","commit_id":"63d000929883980a98f50a6308144ae269193c13"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"bbb6668c42a36345280cad8918e67285432eb5ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"68b6786c_484eb903","updated":"2026-02-26 14:27:17.000000000","message":"recheck swift tempurl timeout.","commit_id":"63d000929883980a98f50a6308144ae269193c13"}],"networking_generic_switch/devices/__init__.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"a8196213655b4fc8eb3cdba1937746090e2fd2a4","unresolved":true,"context_lines":[{"line_number":265,"context_line":"        For switches that don\u0027t support VXLAN, this can be left as None"},{"line_number":266,"context_line":"        (will log a warning but not fail)."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        Example (Cisco NX-OS):"},{"line_number":269,"context_line":"            vlan 100"},{"line_number":270,"context_line":"              vn-segment 5000"},{"line_number":271,"context_line":"            interface nve1"},{"line_number":272,"context_line":"              member vni 5000"},{"line_number":273,"context_line":"                mcast-group 239.1.1.100"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        :param vni: The VXLAN Network Identifier"},{"line_number":276,"context_line":"        :param segmentation_id: VLAN ID to map to the VNI"}],"source_content_type":"text/x-python","patch_set":5,"id":"bbede7bc_b153e7f6","line":273,"range":{"start_line":268,"start_character":0,"end_line":273,"end_character":39},"updated":"2026-02-03 23:17:41.000000000","message":"nit, Do we want to update this example to use `ingress-replication protocol bgp` instead?","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7d693cfd4b96977232d57044f032869c2747afad","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        For switches that don\u0027t support VXLAN, this can be left as None"},{"line_number":266,"context_line":"        (will log a warning but not fail)."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        Example (Cisco NX-OS):"},{"line_number":269,"context_line":"            vlan 100"},{"line_number":270,"context_line":"              vn-segment 5000"},{"line_number":271,"context_line":"            interface nve1"},{"line_number":272,"context_line":"              member vni 5000"},{"line_number":273,"context_line":"                mcast-group 239.1.1.100"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        :param vni: The VXLAN Network Identifier"},{"line_number":276,"context_line":"        :param segmentation_id: VLAN ID to map to the VNI"}],"source_content_type":"text/x-python","patch_set":5,"id":"cb0a2988_7f0603b9","line":273,"range":{"start_line":268,"start_character":0,"end_line":273,"end_character":39},"in_reply_to":"bbede7bc_b153e7f6","updated":"2026-02-04 18:34:27.000000000","message":"Done","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"dfc62249f811914e44678204783aa7518995e2e8","unresolved":true,"context_lines":[{"line_number":274,"context_line":"              vn-segment 5000"},{"line_number":275,"context_line":"            interface nve1"},{"line_number":276,"context_line":"              member vni 5000"},{"line_number":277,"context_line":"                ingress-replication protocol bgp"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        :param vni: The VXLAN Network Identifier"},{"line_number":280,"context_line":"        :param segmentation_id: VLAN ID to map to the VNI"}],"source_content_type":"text/x-python","patch_set":6,"id":"41dc0679_dd577a81","line":277,"updated":"2026-02-11 06:54:10.000000000","message":"I\u0027m not sure switch specific details belong in the abstract interface method docs.","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"07c8361ced00c73ce04300f584ce04060be9ade3","unresolved":true,"context_lines":[{"line_number":274,"context_line":"              vn-segment 5000"},{"line_number":275,"context_line":"            interface nve1"},{"line_number":276,"context_line":"              member vni 5000"},{"line_number":277,"context_line":"                ingress-replication protocol bgp"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        :param vni: The VXLAN Network Identifier"},{"line_number":280,"context_line":"        :param segmentation_id: VLAN ID to map to the VNI"}],"source_content_type":"text/x-python","patch_set":6,"id":"61b491e9_656e5ec0","line":277,"in_reply_to":"41dc0679_dd577a81","updated":"2026-02-25 02:46:37.000000000","message":"Fair, I\u0027ll remove in a follow-up.","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cf4b7397a9891331a2cd946c40ba13c0b82ceb67","unresolved":false,"context_lines":[{"line_number":274,"context_line":"              vn-segment 5000"},{"line_number":275,"context_line":"            interface nve1"},{"line_number":276,"context_line":"              member vni 5000"},{"line_number":277,"context_line":"                ingress-replication protocol bgp"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        :param vni: The VXLAN Network Identifier"},{"line_number":280,"context_line":"        :param segmentation_id: VLAN ID to map to the VNI"}],"source_content_type":"text/x-python","patch_set":6,"id":"1641752c_7313125e","line":277,"in_reply_to":"61b491e9_656e5ec0","updated":"2026-02-26 00:00:57.000000000","message":"Done","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"}],"networking_generic_switch/devices/netmiko_devices/__init__.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"bd9262740dca7805ae2f5b570612b6e356d14d22","unresolved":true,"context_lines":[{"line_number":86,"context_line":"    SHOW_VLAN_PORTS \u003d None"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    SHOW_VLAN_VNI \u003d None"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    PLUG_PORT_TO_NETWORK \u003d None"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    DELETE_PORT \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"c778e0c6_1f1da49a","line":89,"updated":"2026-02-11 07:03:06.000000000","message":"Please add these new commands to doc/source/_exts/netmiko_device_commands.py so we can auto-generate the switch specific docs","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"746506fdb4569986ffff9e8714ac6f58fd66964f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    SHOW_VLAN_PORTS \u003d None"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    SHOW_VLAN_VNI \u003d None"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    PLUG_PORT_TO_NETWORK \u003d None"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    DELETE_PORT \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"e61444a4_6bd79c07","line":89,"in_reply_to":"c778e0c6_1f1da49a","updated":"2026-02-22 20:23:43.000000000","message":"Done","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"}],"networking_generic_switch/devices/netmiko_devices/cisco.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"500f19cc26a8ec25056478e33ca5767599de3af4","unresolved":true,"context_lines":[{"line_number":269,"context_line":"        ])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        # Step 4: Data plane (mcast-group or ingress-replication)"},{"line_number":272,"context_line":"        mcast_group \u003d self._get_mcast_group_for_physnet(physnet)"},{"line_number":273,"context_line":"        if mcast_group:"},{"line_number":274,"context_line":"            cmds.append(\u0027mcast-group {mcast_group}\u0027)"},{"line_number":275,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7c237f1f_13475023","line":272,"range":{"start_line":272,"start_character":27,"end_line":272,"end_character":55},"updated":"2026-01-30 16:53:56.000000000","message":"I am really not sure about this mapping physical_network to a multicast group.\nDo we want all the VLAN/VNI\u0027s on a physical network to share the same multicast replication address?\n\nSee: Multicast Group Scaling in doc[1], the recommendation is 1:1 mapping `VNI \u003c-\u003e mcast-addr`. A phynet in neutron will typically be 100\u0027s of VLANs?\n\n[1] https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/vxlan/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_VXLAN_Configuration_Guide_7x/b_Cisco_Nexus_9000_Series_NX-OS_VXLAN_Configuration_Guide_7x_chapter_0100.html","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"a8196213655b4fc8eb3cdba1937746090e2fd2a4","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        ])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        # Step 4: Data plane (mcast-group or ingress-replication)"},{"line_number":272,"context_line":"        mcast_group \u003d self._get_mcast_group_for_physnet(physnet)"},{"line_number":273,"context_line":"        if mcast_group:"},{"line_number":274,"context_line":"            cmds.append(\u0027mcast-group {mcast_group}\u0027)"},{"line_number":275,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"8543fecf_351ecac6","line":272,"range":{"start_line":272,"start_character":27,"end_line":272,"end_character":55},"in_reply_to":"606dc298_e7cc7f79","updated":"2026-02-03 23:17:41.000000000","message":"Closing this as resolved, decision to only support ingress replication.","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7e454ac69018e1f37814512ff0f1f885feffcbbd","unresolved":true,"context_lines":[{"line_number":269,"context_line":"        ])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        # Step 4: Data plane (mcast-group or ingress-replication)"},{"line_number":272,"context_line":"        mcast_group \u003d self._get_mcast_group_for_physnet(physnet)"},{"line_number":273,"context_line":"        if mcast_group:"},{"line_number":274,"context_line":"            cmds.append(\u0027mcast-group {mcast_group}\u0027)"},{"line_number":275,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"eb3e5344_c7caed06","line":272,"range":{"start_line":272,"start_character":27,"end_line":272,"end_character":55},"in_reply_to":"7c237f1f_13475023","updated":"2026-01-30 17:37:16.000000000","message":"Honestly, I think its a bit of an escape hatch because the preference shoudl really be ingress replication instead. I\u0027m not sure we really want folks doing mcast style configs unless they\u0027ve just locked into them hard. In any event. I\u0027ll take a look at this early next week most likely.\n\nI guess the other, underlying problem, is we don\u0027t manage the entire fabric. We only manage what we know about and in that regard we have no ability to allocate a VNI to a specific mcast-addr. We can only rely upon the configuration supplied.\n\nIn the duality of use cases, where ingress replication is expected through a bgp evpn l2vni, this wouldn\u0027t be used nor would there ever be insight. And ultimately to do mcast address matching, it feels like operators would need to be explicit about the VNI number in use which disqualifies it for traffic handling, in that then its a provider network, not a native network in the context of openstack.","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"817e1640cca1e53af2bedadccf37287bd17f51ce","unresolved":true,"context_lines":[{"line_number":269,"context_line":"        ])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        # Step 4: Data plane (mcast-group or ingress-replication)"},{"line_number":272,"context_line":"        mcast_group \u003d self._get_mcast_group_for_physnet(physnet)"},{"line_number":273,"context_line":"        if mcast_group:"},{"line_number":274,"context_line":"            cmds.append(\u0027mcast-group {mcast_group}\u0027)"},{"line_number":275,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"606dc298_e7cc7f79","line":272,"range":{"start_line":272,"start_character":27,"end_line":272,"end_character":55},"in_reply_to":"eb3e5344_c7caed06","updated":"2026-01-30 21:45:41.000000000","message":"Maybe we can emphasize ingress replication, and instead of a single mcast address per physnet we allow a range either in \u003cstart\u003e-\u003cend\u003e format or a cidr format like 239.1.1.0/24 and then map VNIs to these addresses using a hash? (I did a quick poc\u0027ish thing with claude here: https://review.opendev.org/c/openstack/networking-generic-switch/+/975339 implementing range)\n\nThe caveat is that it should be immutable config, because changeing the multicast address after the fact won\u0027t update all the switches.","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"500f19cc26a8ec25056478e33ca5767599de3af4","unresolved":true,"context_lines":[{"line_number":390,"context_line":"        lines \u003d output.strip().split(\u0027\\n\u0027)"},{"line_number":391,"context_line":"        for line in lines:"},{"line_number":392,"context_line":"            # Skip header lines and empty lines"},{"line_number":393,"context_line":"            if not line.strip() or \u0027VLAN\u0027 in line or \u0027---\u0027 in line:"},{"line_number":394,"context_line":"                continue"},{"line_number":395,"context_line":"            # Look for line starting with our VLAN ID"},{"line_number":396,"context_line":"            parts \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":4,"id":"b2eda3db_44520059","line":393,"range":{"start_line":393,"start_character":35,"end_line":393,"end_character":41},"updated":"2026-01-30 16:53:56.000000000","message":"Would this strip the line where the vlan has \"VLAN\" in the name?","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"10601d340a65317056b5231befca28724e46cfbb","unresolved":true,"context_lines":[{"line_number":390,"context_line":"        lines \u003d output.strip().split(\u0027\\n\u0027)"},{"line_number":391,"context_line":"        for line in lines:"},{"line_number":392,"context_line":"            # Skip header lines and empty lines"},{"line_number":393,"context_line":"            if not line.strip() or \u0027VLAN\u0027 in line or \u0027---\u0027 in line:"},{"line_number":394,"context_line":"                continue"},{"line_number":395,"context_line":"            # Look for line starting with our VLAN ID"},{"line_number":396,"context_line":"            parts \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":4,"id":"c90943da_071ffff5","line":393,"range":{"start_line":393,"start_character":35,"end_line":393,"end_character":41},"in_reply_to":"8e727b67_7cbbcf03","updated":"2026-02-02 20:01:40.000000000","message":"Needs to be \"VLAN Name\" to strip the header bar out.","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7e454ac69018e1f37814512ff0f1f885feffcbbd","unresolved":true,"context_lines":[{"line_number":390,"context_line":"        lines \u003d output.strip().split(\u0027\\n\u0027)"},{"line_number":391,"context_line":"        for line in lines:"},{"line_number":392,"context_line":"            # Skip header lines and empty lines"},{"line_number":393,"context_line":"            if not line.strip() or \u0027VLAN\u0027 in line or \u0027---\u0027 in line:"},{"line_number":394,"context_line":"                continue"},{"line_number":395,"context_line":"            # Look for line starting with our VLAN ID"},{"line_number":396,"context_line":"            parts \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":4,"id":"8e727b67_7cbbcf03","line":393,"range":{"start_line":393,"start_character":35,"end_line":393,"end_character":41},"in_reply_to":"b2eda3db_44520059","updated":"2026-01-30 17:37:16.000000000","message":"Hmm, true. It likely needs to be an inverse. Interesting!","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"a8196213655b4fc8eb3cdba1937746090e2fd2a4","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        lines \u003d output.strip().split(\u0027\\n\u0027)"},{"line_number":391,"context_line":"        for line in lines:"},{"line_number":392,"context_line":"            # Skip header lines and empty lines"},{"line_number":393,"context_line":"            if not line.strip() or \u0027VLAN\u0027 in line or \u0027---\u0027 in line:"},{"line_number":394,"context_line":"                continue"},{"line_number":395,"context_line":"            # Look for line starting with our VLAN ID"},{"line_number":396,"context_line":"            parts \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":4,"id":"2554833d_d7b91102","line":393,"range":{"start_line":393,"start_character":35,"end_line":393,"end_character":41},"in_reply_to":"c90943da_071ffff5","updated":"2026-02-03 23:17:41.000000000","message":"Marking resolved, latest revision changed the parsing.","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"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":"20bd319bf972c67f942362a9b6c3be33af4bfb20","unresolved":true,"context_lines":[{"line_number":319,"context_line":"        # NX-OS output format:"},{"line_number":320,"context_line":"        # VLAN Name                             Status    Ports"},{"line_number":321,"context_line":"        # ---- -------------------------------- --------- -----------"},{"line_number":322,"context_line":"        # 100  VLAN0100                         active    Eth1/1, Eth1/2"},{"line_number":323,"context_line":"        lines \u003d output.strip().split(\u0027\\n\u0027)"},{"line_number":324,"context_line":"        for line in lines:"},{"line_number":325,"context_line":"            stripped \u003d line.strip()"}],"source_content_type":"text/x-python","patch_set":6,"id":"393abe47_ae22699f","line":322,"updated":"2026-02-10 19:07:14.000000000","message":"This is great to have the example here. A+++++++","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cf4b7397a9891331a2cd946c40ba13c0b82ceb67","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        # NX-OS output format:"},{"line_number":320,"context_line":"        # VLAN Name                             Status    Ports"},{"line_number":321,"context_line":"        # ---- -------------------------------- --------- -----------"},{"line_number":322,"context_line":"        # 100  VLAN0100                         active    Eth1/1, Eth1/2"},{"line_number":323,"context_line":"        lines \u003d output.strip().split(\u0027\\n\u0027)"},{"line_number":324,"context_line":"        for line in lines:"},{"line_number":325,"context_line":"            stripped \u003d line.strip()"}],"source_content_type":"text/x-python","patch_set":6,"id":"4b70e495_3a6d03ad","line":322,"in_reply_to":"393abe47_ae22699f","updated":"2026-02-26 00:00:57.000000000","message":"Done","commit_id":"93d62c58c8cb53d7bfa4eb381afea154b6b402ef"}],"networking_generic_switch/generic_switch_mech.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d46d0121003776d7ec89675efa2bf13760d9b409","unresolved":true,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"            provisioning_blocks.provisioning_complete("},{"line_number":419,"context_line":"                context._plugin_context, port[\u0027id\u0027], resources.PORT,"},{"line_number":420,"context_line":"                GENERIC_SWITCH_ENTITY)"},{"line_number":421,"context_line":"            for subport in port.get(\u0027trunk_details\u0027, {}).get(\"sub_ports\", []):"},{"line_number":422,"context_line":"                subport_obj \u003d context._plugin.get_port(context.plugin_context,"},{"line_number":423,"context_line":"                                                       subport[\u0027port_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"08018660_ad86aadd","line":420,"updated":"2026-01-17 22:25:03.000000000","message":"We, might need to do something like:\n\n\n      if (context.current[portbindings.VNIC_TYPE] \u003d\u003d portbindings.VNIC_BAREMETAL\n              and context.current[portbindings.VIF_TYPE] \u003d\u003d portbindings.VIF_TYPE_OTHER):\n          # Complete OVN\u0027s L2 provisioning block for baremetal\n          provisioning_blocks.provisioning_complete(\n              context._plugin_context, context.current[\u0027id\u0027],\n              resources.PORT, \u0027L2\u0027)\n\n\nBecause OVN is setting port status down and explicitly noting L2 still needs to be done, but ovn ignores everything under the hood.","commit_id":"88deaea8bcbf174b65fc8b8d728f8a283b5e9e53"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"98a9de67b9723ec3367feab19c6fff1fd92f97a8","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"            provisioning_blocks.provisioning_complete("},{"line_number":419,"context_line":"                context._plugin_context, port[\u0027id\u0027], resources.PORT,"},{"line_number":420,"context_line":"                GENERIC_SWITCH_ENTITY)"},{"line_number":421,"context_line":"            for subport in port.get(\u0027trunk_details\u0027, {}).get(\"sub_ports\", []):"},{"line_number":422,"context_line":"                subport_obj \u003d context._plugin.get_port(context.plugin_context,"},{"line_number":423,"context_line":"                                                       subport[\u0027port_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"d0de96b2_bff6e15f","line":420,"in_reply_to":"08018660_ad86aadd","updated":"2026-01-29 22:33:49.000000000","message":"I have determined this is actually something network-baremetal for the l2vni plugin needs to handle.","commit_id":"88deaea8bcbf174b65fc8b8d728f8a283b5e9e53"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"500f19cc26a8ec25056478e33ca5767599de3af4","unresolved":true,"context_lines":[{"line_number":747,"context_line":"                     {\u0027port_id\u0027: port[\u0027id\u0027], \u0027net_id\u0027: segment[\u0027network_id\u0027],"},{"line_number":748,"context_line":"                      \u0027device\u0027: switch_info})"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"            # Check if we need to unplug VNI for L2VNI case"},{"line_number":751,"context_line":"            if vxlan_segment:"},{"line_number":752,"context_line":"                vxlan_type \u003d vxlan_segment.get(api.NETWORK_TYPE)"},{"line_number":753,"context_line":"                vlan_type \u003d segment.get(api.NETWORK_TYPE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0b156085_597b7f44","line":750,"updated":"2026-01-30 16:53:56.000000000","message":"nit, We may want to make this a function and get the section left flushed a bit?","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"10601d340a65317056b5231befca28724e46cfbb","unresolved":false,"context_lines":[{"line_number":747,"context_line":"                     {\u0027port_id\u0027: port[\u0027id\u0027], \u0027net_id\u0027: segment[\u0027network_id\u0027],"},{"line_number":748,"context_line":"                      \u0027device\u0027: switch_info})"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"            # Check if we need to unplug VNI for L2VNI case"},{"line_number":751,"context_line":"            if vxlan_segment:"},{"line_number":752,"context_line":"                vxlan_type \u003d vxlan_segment.get(api.NETWORK_TYPE)"},{"line_number":753,"context_line":"                vlan_type \u003d segment.get(api.NETWORK_TYPE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"8debfa2e_ff8f708c","line":750,"in_reply_to":"0b156085_597b7f44","updated":"2026-02-02 20:01:40.000000000","message":"Done","commit_id":"27a74db95b50b3eec3d3ec59492b82bda257c9f5"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"e81cc10afc9b89844937fa8adab1a9755a0c57d6","unresolved":true,"context_lines":[{"line_number":716,"context_line":"                                   \u0027physnet\u0027: physnet})"},{"line_number":717,"context_line":"                        switch.unplug_switch_from_network("},{"line_number":718,"context_line":"                            vni, segmentation_id, physnet\u003dphysnet)"},{"line_number":719,"context_line":"                except Exception as e:"},{"line_number":720,"context_line":"                    LOG.error(\"Failed to unplug VNI %(vni)s from \""},{"line_number":721,"context_line":"                              \"VLAN %(vlan)s on device %(switch)s: \""},{"line_number":722,"context_line":"                              \"%(exc)s\","},{"line_number":723,"context_line":"                              {\u0027vni\u0027: vni, \u0027vlan\u0027: segmentation_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1b4ca1_0f0dbd25","line":720,"range":{"start_line":719,"start_character":23,"end_line":720,"end_character":44},"updated":"2026-02-24 18:52:44.000000000","message":"This error log is not actionable. Be more intentional about location of try/except","commit_id":"63d000929883980a98f50a6308144ae269193c13"}],"networking_generic_switch/tests/unit/netmiko/test_cisco_nxos.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"a8196213655b4fc8eb3cdba1937746090e2fd2a4","unresolved":true,"context_lines":[{"line_number":495,"context_line":"             \u0027vlan 100\u0027, \u0027no vn-segment\u0027, \u0027exit\u0027,"},{"line_number":496,"context_line":"             \u0027evpn\u0027, \u0027no vni 10100\u0027, \u0027exit\u0027])"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    def test_parse_vlan_vni_with_member(self):"},{"line_number":499,"context_line":"        \"\"\"Test _parse_vlan_vni detects VNI membership.\"\"\""},{"line_number":500,"context_line":"        device_cfg \u003d {\u0027device_type\u0027: \u0027netmiko_cisco_nxos\u0027}"},{"line_number":501,"context_line":"        switch \u003d cisco.CiscoNxOS(device_cfg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"4978ed6c_393e1874","line":498,"updated":"2026-02-03 23:17:41.000000000","message":"We could drop this test since we dropped the mcast support?","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7d693cfd4b96977232d57044f032869c2747afad","unresolved":false,"context_lines":[{"line_number":495,"context_line":"             \u0027vlan 100\u0027, \u0027no vn-segment\u0027, \u0027exit\u0027,"},{"line_number":496,"context_line":"             \u0027evpn\u0027, \u0027no vni 10100\u0027, \u0027exit\u0027])"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    def test_parse_vlan_vni_with_member(self):"},{"line_number":499,"context_line":"        \"\"\"Test _parse_vlan_vni detects VNI membership.\"\"\""},{"line_number":500,"context_line":"        device_cfg \u003d {\u0027device_type\u0027: \u0027netmiko_cisco_nxos\u0027}"},{"line_number":501,"context_line":"        switch \u003d cisco.CiscoNxOS(device_cfg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"910edbdf_cb4d131b","line":498,"in_reply_to":"4978ed6c_393e1874","updated":"2026-02-04 18:34:27.000000000","message":"Done","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"a8196213655b4fc8eb3cdba1937746090e2fd2a4","unresolved":true,"context_lines":[{"line_number":521,"context_line":"        switch \u003d cisco.CiscoNxOS(device_cfg)"},{"line_number":522,"context_line":"        output \u003d \"\"\""},{"line_number":523,"context_line":"  member vni 10200"},{"line_number":524,"context_line":"    mcast-group 239.1.1.1"},{"line_number":525,"context_line":"\"\"\""},{"line_number":526,"context_line":"        self.assertFalse(switch._parse_vlan_vni(output, 100, 10100))"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"e834d172_467812db","line":524,"updated":"2026-02-03 23:17:41.000000000","message":"switch to `ingress-replication protocol bgp` in second line of output.","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7d693cfd4b96977232d57044f032869c2747afad","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        switch \u003d cisco.CiscoNxOS(device_cfg)"},{"line_number":522,"context_line":"        output \u003d \"\"\""},{"line_number":523,"context_line":"  member vni 10200"},{"line_number":524,"context_line":"    mcast-group 239.1.1.1"},{"line_number":525,"context_line":"\"\"\""},{"line_number":526,"context_line":"        self.assertFalse(switch._parse_vlan_vni(output, 100, 10100))"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"daacad46_059e7deb","line":524,"in_reply_to":"e834d172_467812db","updated":"2026-02-04 18:34:27.000000000","message":"Done","commit_id":"2d24a28c0aa7c20e066601a3e2939ec5062b7e99"}]}
