)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"911133b7e9477ed97dd9b82eaf3bcf8bc53e3766","unresolved":true,"context_lines":[{"line_number":20,"context_line":"IFF_MULTI_QUEUE flag through netlink\u0027s IFTUN_IFR attribute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Assisted-By: claude-sonnet-4.5"},{"line_number":23,"context_line":"Closes-Bug: #2069718"},{"line_number":24,"context_line":"Change-Id: I8f02d07e6d83582233dc9d8e28a29b71faf00265"},{"line_number":25,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f3491c71_8f050a8e","line":23,"updated":"2025-12-16 17:34:47.000000000","message":"This should proably be Related-Bug or Partial-Bug","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70192354fa56a4ef96601b7bdcff411e89d0b7a9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"IFF_MULTI_QUEUE flag through netlink\u0027s IFTUN_IFR attribute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Assisted-By: claude-sonnet-4.5"},{"line_number":23,"context_line":"Closes-Bug: #2069718"},{"line_number":24,"context_line":"Change-Id: I8f02d07e6d83582233dc9d8e28a29b71faf00265"},{"line_number":25,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"d3b61a5a_5b0f61f7","line":23,"in_reply_to":"f3491c71_8f050a8e","updated":"2026-01-12 18:29:29.000000000","message":"we track the bug per compoent so its actully fine for this to be closes as it closes the os-vif part","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ac82edd58093a60805d9706f85c78cfdc1b4f284","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b661f2cf_9ac8fbe7","updated":"2026-01-02 10:56:03.000000000","message":"I\u0027ve created https://review.opendev.org/c/openstack/neutron/+/972039. This flag is present in the port vif-details dictionary. Right now the `os_vif_util.nova_to_osvif_vif` doesn\u0027t handle this parameter thus the `vif` object then passed to `os-vif` doesn\u0027t hold it.\n\nFor now, this is a ML2/OVN only flag, added to the vif-details dictionary.","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"e91ad8cdf569b42257fdc5feb9e56e58af44d3f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cf8fbcf6_42880f1a","in_reply_to":"8078060b_4a448e98","updated":"2026-01-22 03:57:30.000000000","message":"Done","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57cd869f0636ef62a6dc556121f286ef4487cfa2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8078060b_4a448e98","in_reply_to":"b661f2cf_9ac8fbe7","updated":"2026-01-08 15:43:59.000000000","message":"cool\n\nwe can discuss if we need to have that neutron change or not once we do a little more testing\n\nill be setting up a 2 node live migration testing env today/tomorrow \nill pull in your neutron change into that when i start on the nova change to wire this all together.\n\n\nif it works correctly uncodtionally we may be able to get away without the api change althegh i orginally wanted it ot be able to mitigate any possibel upgrade impact.\n\n\nsince we coudl have upgradned and non upgraded computes/os-vifs in the same cloud i feel like we will need a compute service bump in nova and min compute version check to enable the new fucntionaltiy or the api flag with a temperoy config opiton on the neueton side ot opt in when all nodes are upgraded which is what you have implmented in https://review.opendev.org/c/openstack/neutron/+/972039\n\neither will work but the config option i think is more backportable.\n\nwe cant typeiclaly backport compute service bump checks\n\nill try and sync with you next week on how this is going over all.\njust getting back todoy so catching up on email and reviews in general.","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9f48a57bcc5dd9c0f7544dc7878d81187bc139ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0d26520e_59ae9d3a","updated":"2026-01-15 13:38:48.000000000","message":"recheck kernel paninc in iptabels job","commit_id":"ce943bdcd6dec4fb4fae8c995effaa6d29e7e0be"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"4525f49ddde00c7e7840f7321bf40fa51bb7e196","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"97798ae2_539020fb","updated":"2026-01-19 14:00:16.000000000","message":"typos in releasenote, rest all looks fine. Thx","commit_id":"ce943bdcd6dec4fb4fae8c995effaa6d29e7e0be"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19cb3848fdc20b1bda75ec247225d08317987da2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"90300da4_62dd6fc2","updated":"2026-01-29 13:52:37.000000000","message":"couple of nits. nothing that can\u0027t be done later","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c648af97cf7d65a8ac7fb635343c3f16d579978","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f74be567_39177819","updated":"2026-01-29 13:52:49.000000000","message":"we could do with a release note later also","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"}],"os_vif/objects/vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b0aa8c9cbd555c7631e4d23a2362c9b0622bb60","unresolved":true,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        #: Whether the os-vif plugin should add the port to the bridge."},{"line_number":345,"context_line":"        \u0027create_port\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":346,"context_line":"        \u0027create_tap\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":347,"context_line":"    }"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"54b116e4_b4f29a99","line":346,"updated":"2025-12-16 17:33:35.000000000","message":"i need to add multqueue as well","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70192354fa56a4ef96601b7bdcff411e89d0b7a9","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        #: Whether the os-vif plugin should add the port to the bridge."},{"line_number":345,"context_line":"        \u0027create_port\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":346,"context_line":"        \u0027create_tap\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":347,"context_line":"    }"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ca04798c_012760e9","line":346,"in_reply_to":"54b116e4_b4f29a99","updated":"2026-01-12 18:29:29.000000000","message":"Done","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"}],"releasenotes/notes/add-tap-creation-support-2069718-abc123.yaml":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"4525f49ddde00c7e7840f7321bf40fa51bb7e196","unresolved":true,"context_lines":[{"line_number":12,"context_line":"      by Nova from the ``hw:vif_multiqueue_enabled`` flavor extra spec or"},{"line_number":13,"context_line":"      image property."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    When the ``[ovn]/os_vif_tap_creation`` config option is enabled in"},{"line_number":16,"context_line":"    Neutron\u0027s ML2/OVN mechanism driver, Neutron sets the ``os_vif_tap_creation``"},{"line_number":17,"context_line":"    flag in the vif_details during port binding. Nova then reads this value and"},{"line_number":18,"context_line":"    propagates it to os-vif via the ``create_tap`` field, and configures"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"4e93afec_b7ca2a45","line":15,"updated":"2026-01-19 14:00:16.000000000","message":"os_vif_tap_creation --\u003e ovs_create_tap","commit_id":"ce943bdcd6dec4fb4fae8c995effaa6d29e7e0be"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"e91ad8cdf569b42257fdc5feb9e56e58af44d3f7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"      by Nova from the ``hw:vif_multiqueue_enabled`` flavor extra spec or"},{"line_number":13,"context_line":"      image property."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    When the ``[ovn]/os_vif_tap_creation`` config option is enabled in"},{"line_number":16,"context_line":"    Neutron\u0027s ML2/OVN mechanism driver, Neutron sets the ``os_vif_tap_creation``"},{"line_number":17,"context_line":"    flag in the vif_details during port binding. Nova then reads this value and"},{"line_number":18,"context_line":"    propagates it to os-vif via the ``create_tap`` field, and configures"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"a5ac04f9_a7b1dba4","line":15,"in_reply_to":"4e93afec_b7ca2a45","updated":"2026-01-22 03:57:30.000000000","message":"Done","commit_id":"ce943bdcd6dec4fb4fae8c995effaa6d29e7e0be"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"4525f49ddde00c7e7840f7321bf40fa51bb7e196","unresolved":true,"context_lines":[{"line_number":13,"context_line":"      image property."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    When the ``[ovn]/os_vif_tap_creation`` config option is enabled in"},{"line_number":16,"context_line":"    Neutron\u0027s ML2/OVN mechanism driver, Neutron sets the ``os_vif_tap_creation``"},{"line_number":17,"context_line":"    flag in the vif_details during port binding. Nova then reads this value and"},{"line_number":18,"context_line":"    propagates it to os-vif via the ``create_tap`` field, and configures"},{"line_number":19,"context_line":"    libvirt with ``managed\u003d\"no\"`` so it uses the pre-created TAP device. This"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"53cfa014_4190b16e","line":16,"range":{"start_line":16,"start_character":59,"end_line":16,"end_character":78},"updated":"2026-01-19 14:00:16.000000000","message":"same","commit_id":"ce943bdcd6dec4fb4fae8c995effaa6d29e7e0be"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"e91ad8cdf569b42257fdc5feb9e56e58af44d3f7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      image property."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    When the ``[ovn]/os_vif_tap_creation`` config option is enabled in"},{"line_number":16,"context_line":"    Neutron\u0027s ML2/OVN mechanism driver, Neutron sets the ``os_vif_tap_creation``"},{"line_number":17,"context_line":"    flag in the vif_details during port binding. Nova then reads this value and"},{"line_number":18,"context_line":"    propagates it to os-vif via the ``create_tap`` field, and configures"},{"line_number":19,"context_line":"    libvirt with ``managed\u003d\"no\"`` so it uses the pre-created TAP device. This"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"c82fd609_a7bc525d","line":16,"range":{"start_line":16,"start_character":59,"end_line":16,"end_character":78},"in_reply_to":"53cfa014_4190b16e","updated":"2026-01-22 03:57:30.000000000","message":"Done","commit_id":"ce943bdcd6dec4fb4fae8c995effaa6d29e7e0be"}],"vif_plug_ovs/linux_net.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b0aa8c9cbd555c7631e4d23a2362c9b0622bb60","unresolved":true,"context_lines":[{"line_number":109,"context_line":"               check_exit_code\u003d[0, 17])"},{"line_number":110,"context_line":"    # Configure the device state and MAC address"},{"line_number":111,"context_line":"    ip_lib.set(dev, state\u003d\u0027up\u0027, address\u003dmac, check_exit_code\u003d[0, 2, 254])"},{"line_number":112,"context_line":"    # Set MTU if specified"},{"line_number":113,"context_line":"    _update_device_mtu(dev, mtu)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def _disable_ipv6(bridge):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ecf31181_2be1f7a2","line":113,"range":{"start_line":112,"start_character":1,"end_line":113,"end_character":32},"updated":"2025-12-16 17:33:35.000000000","message":"i can set the mtu in the same call as the mac and state.","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"857c7c2b4b27a1c52f001ae3b3e368eec8dc52ef","unresolved":true,"context_lines":[{"line_number":110,"context_line":"    # Configure the device state and MAC address"},{"line_number":111,"context_line":"    ip_lib.set(dev, state\u003d\u0027up\u0027, address\u003dmac, check_exit_code\u003d[0, 2, 254])"},{"line_number":112,"context_line":"    # Set MTU if specified"},{"line_number":113,"context_line":"    _update_device_mtu(dev, mtu)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def _disable_ipv6(bridge):"}],"source_content_type":"text/x-python","patch_set":4,"id":"432d64f5_3482cdd7","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":22},"updated":"2026-01-23 09:48:20.000000000","message":"nit, out of scope: I\u0027ve seen this code in other methods too. `_update_device_mtu` is calling `set_device_mtu`, that is a method decorated with a privsep context. With that you are nesting two privsep context calls. This is something that should not be supported (but is working). That needs to be fixed","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"}],"vif_plug_ovs/ovs.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b0aa8c9cbd555c7631e4d23a2362c9b0622bb60","unresolved":true,"context_lines":[{"line_number":236,"context_line":"        # Note: create_tap is an optional field in VIFPortProfileOpenVSwitch"},{"line_number":237,"context_line":"        # that may not exist in all deployments, so we need to handle"},{"line_number":238,"context_line":"        # it carefully"},{"line_number":239,"context_line":"        create_tap \u003d False"},{"line_number":240,"context_line":"        if isinstance(vif.port_profile, objects.vif.VIFPortProfileOpenVSwitch):"},{"line_number":241,"context_line":"            try:"},{"line_number":242,"context_line":"                create_tap \u003d vif.port_profile.create_tap"},{"line_number":243,"context_line":"            except (AttributeError, NotImplementedError):"},{"line_number":244,"context_line":"                # Field doesn\u0027t exist or isn\u0027t set, which is fine"},{"line_number":245,"context_line":"                pass"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if create_tap:"},{"line_number":248,"context_line":"            # Validate VIF type - only VIFOpenVSwitch supports tap creation"},{"line_number":249,"context_line":"            if not isinstance(vif, objects.vif.VIFOpenVSwitch):"},{"line_number":250,"context_line":"                raise exception.TapCreationNotSupported("},{"line_number":251,"context_line":"                    vif_type\u003dvif.__class__.__name__)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"            # Get multiqueue setting from port profile if available"},{"line_number":254,"context_line":"            # Default to False for compatibility"},{"line_number":255,"context_line":"            multiqueue \u003d False"},{"line_number":256,"context_line":"            try:"},{"line_number":257,"context_line":"                multiqueue \u003d vif.port_profile.multiqueue"},{"line_number":258,"context_line":"            except (AttributeError, NotImplementedError):"},{"line_number":259,"context_line":"                pass"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            # Create the tap device with proper MAC and MTU"},{"line_number":262,"context_line":"            linux_net.create_tap("},{"line_number":263,"context_line":"                vif_name, mtu, vif.address, multiqueue\u003dmultiqueue)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _update_vif_port(self, vif, vif_name):"},{"line_number":266,"context_line":"        mtu \u003d self._get_mtu(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b11640b1_54f63abc","line":263,"range":{"start_line":239,"start_character":0,"end_line":263,"end_character":66},"updated":"2025-12-16 17:33:35.000000000","message":"i will proably rework this to jsut do \n`if \u0027create_tap\u0027 in port_profile and vif.port_profile.create_tap:`","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"70192354fa56a4ef96601b7bdcff411e89d0b7a9","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        # Note: create_tap is an optional field in VIFPortProfileOpenVSwitch"},{"line_number":237,"context_line":"        # that may not exist in all deployments, so we need to handle"},{"line_number":238,"context_line":"        # it carefully"},{"line_number":239,"context_line":"        create_tap \u003d False"},{"line_number":240,"context_line":"        if isinstance(vif.port_profile, objects.vif.VIFPortProfileOpenVSwitch):"},{"line_number":241,"context_line":"            try:"},{"line_number":242,"context_line":"                create_tap \u003d vif.port_profile.create_tap"},{"line_number":243,"context_line":"            except (AttributeError, NotImplementedError):"},{"line_number":244,"context_line":"                # Field doesn\u0027t exist or isn\u0027t set, which is fine"},{"line_number":245,"context_line":"                pass"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if create_tap:"},{"line_number":248,"context_line":"            # Validate VIF type - only VIFOpenVSwitch supports tap creation"},{"line_number":249,"context_line":"            if not isinstance(vif, objects.vif.VIFOpenVSwitch):"},{"line_number":250,"context_line":"                raise exception.TapCreationNotSupported("},{"line_number":251,"context_line":"                    vif_type\u003dvif.__class__.__name__)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"            # Get multiqueue setting from port profile if available"},{"line_number":254,"context_line":"            # Default to False for compatibility"},{"line_number":255,"context_line":"            multiqueue \u003d False"},{"line_number":256,"context_line":"            try:"},{"line_number":257,"context_line":"                multiqueue \u003d vif.port_profile.multiqueue"},{"line_number":258,"context_line":"            except (AttributeError, NotImplementedError):"},{"line_number":259,"context_line":"                pass"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            # Create the tap device with proper MAC and MTU"},{"line_number":262,"context_line":"            linux_net.create_tap("},{"line_number":263,"context_line":"                vif_name, mtu, vif.address, multiqueue\u003dmultiqueue)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _update_vif_port(self, vif, vif_name):"},{"line_number":266,"context_line":"        mtu \u003d self._get_mtu(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d833015f_d81adee8","line":263,"range":{"start_line":239,"start_character":0,"end_line":263,"end_character":66},"in_reply_to":"b11640b1_54f63abc","updated":"2026-01-12 18:29:29.000000000","message":"Done","commit_id":"9643f5f179e82a6d55c96c9078d6d5f2cb46de9a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19cb3848fdc20b1bda75ec247225d08317987da2","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            \u0027create_tap\u0027 in profile and"},{"line_number":243,"context_line":"            profile.create_tap"},{"line_number":244,"context_line":"        )"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        if create_tap:"},{"line_number":247,"context_line":"            # Validate VIF type - only VIFOpenVSwitch supports tap creation"},{"line_number":248,"context_line":"            if not isinstance(vif, objects.vif.VIFOpenVSwitch):"},{"line_number":249,"context_line":"                raise exception.TapCreationNotSupported("},{"line_number":250,"context_line":"                    vif_type\u003dvif.__class__.__name__)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"            # Get multiqueue setting from port profile if available"},{"line_number":253,"context_line":"            # \u0027field in profile.fields\u0027 checks schema, \u0027field in profile\u0027"},{"line_number":254,"context_line":"            # checks if the attribute is set"},{"line_number":255,"context_line":"            multiqueue \u003d (\u0027multiqueue\u0027 in profile.fields and"},{"line_number":256,"context_line":"                          \u0027multiqueue\u0027 in profile and"},{"line_number":257,"context_line":"                          profile.multiqueue)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"            # Create the tap device with proper MAC and MTU if it doesn\u0027t"},{"line_number":260,"context_line":"            # already exist (e.g., from a previous plug during init_host)"},{"line_number":261,"context_line":"            if not ip_lib.exists(vif_name):"},{"line_number":262,"context_line":"                linux_net.create_tap("},{"line_number":263,"context_line":"                    vif_name, mtu, vif.address, multiqueue\u003dmultiqueue)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _update_vif_port(self, vif, vif_name):"},{"line_number":266,"context_line":"        mtu \u003d self._get_mtu(vif)"}],"source_content_type":"text/x-python","patch_set":4,"id":"19215812_b1c910f8","line":263,"range":{"start_line":245,"start_character":1,"end_line":263,"end_character":70},"updated":"2026-01-29 13:52:37.000000000","message":"nit: let\u0027s use an early return here\n\n```suggestion\n\n        if not create_tap:\n            return\n\n        # Validate VIF type - only VIFOpenVSwitch supports tap creation\n        if not isinstance(vif, objects.vif.VIFOpenVSwitch):\n            raise exception.TapCreationNotSupported(\n                vif_type\u003dvif.__class__.__name__)\n\n        # Get multiqueue setting from port profile if available\n        # \u0027field in profile.fields\u0027 checks schema, \u0027field in profile\u0027\n        # checks if the attribute is set\n        multiqueue \u003d (\u0027multiqueue\u0027 in profile.fields and\n                      \u0027multiqueue\u0027 in profile and\n                      profile.multiqueue)\n\n        # Create the tap device with proper MAC and MTU if it doesn\u0027t\n        # already exist (e.g., from a previous plug during init_host)\n        if not ip_lib.exists(vif_name):\n            linux_net.create_tap(\n                vif_name, mtu, vif.address, multiqueue\u003dmultiqueue)\n```","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19cb3848fdc20b1bda75ec247225d08317987da2","unresolved":true,"context_lines":[{"line_number":266,"context_line":"        mtu \u003d self._get_mtu(vif)"},{"line_number":267,"context_line":"        self.ovsdb.update_ovs_vif_port(vif_name, mtu)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _delete_tap_if_required(self, vif, vif_name):"},{"line_number":270,"context_line":"        \"\"\"Delete tap device if it was created via create_tap flag."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        :param vif: VIF object"}],"source_content_type":"text/x-python","patch_set":4,"id":"0f96b94d_0e1a2905","line":269,"updated":"2026-01-29 13:52:37.000000000","message":"nit: I\u0027d rather this was logically grouped with other delete unplug/delete methods","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"07e37af5d65d684728d4c78ca658a7bd8000053e","unresolved":true,"context_lines":[{"line_number":266,"context_line":"        mtu \u003d self._get_mtu(vif)"},{"line_number":267,"context_line":"        self.ovsdb.update_ovs_vif_port(vif_name, mtu)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _delete_tap_if_required(self, vif, vif_name):"},{"line_number":270,"context_line":"        \"\"\"Delete tap device if it was created via create_tap flag."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        :param vif: VIF object"}],"source_content_type":"text/x-python","patch_set":4,"id":"26e9ef19_4d5cca92","line":269,"in_reply_to":"0f96b94d_0e1a2905","updated":"2026-01-29 14:19:30.000000000","message":"respoened below but i intentioly didnt want todo that\n since this is only valid for 1 of the plug flows","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19cb3848fdc20b1bda75ec247225d08317987da2","unresolved":true,"context_lines":[{"line_number":442,"context_line":"            raise osv_exception.PlugException("},{"line_number":443,"context_line":"                vif\u003dvif,"},{"line_number":444,"context_line":"                err\u003d\"This vif type is not supported by this plugin\")"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    def _delete_bridge_if_trunk(self, vif):"},{"line_number":447,"context_line":"        if is_trunk_bridge(vif.network.bridge):"},{"line_number":448,"context_line":"            self.ovsdb.delete_ovs_bridge(vif.network.bridge)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c86ec342_961fc95f","line":445,"updated":"2026-01-29 13:52:37.000000000","message":"here","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"07e37af5d65d684728d4c78ca658a7bd8000053e","unresolved":true,"context_lines":[{"line_number":442,"context_line":"            raise osv_exception.PlugException("},{"line_number":443,"context_line":"                vif\u003dvif,"},{"line_number":444,"context_line":"                err\u003d\"This vif type is not supported by this plugin\")"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    def _delete_bridge_if_trunk(self, vif):"},{"line_number":447,"context_line":"        if is_trunk_bridge(vif.network.bridge):"},{"line_number":448,"context_line":"            self.ovsdb.delete_ovs_bridge(vif.network.bridge)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2c0623af_a3f5752b","line":445,"in_reply_to":"c86ec342_961fc95f","updated":"2026-01-29 14:19:30.000000000","message":"i didn really want to leak that implation dtail to the plug funciton\n\nto me if the tap is create or not is interna to the inner plug method so i intntilaly didint put it here","commit_id":"eba8007607381736b23e0a0ac672981e726fd8ee"}]}
