)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ec61981540df27c9ef2a2b8487263738024194b3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Netronome SmartNIC Enablement"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is patch set enables Netronome Agilio SmartNIC acceleration in OpenStack."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"* This patch set adds VIF_TYPE_AGILIO_OVS to hook in the external ML2"},{"line_number":12,"context_line":"  plugin."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1f1a1f67_70818e4a","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":8},"updated":"2017-07-13 20:29:26.000000000","message":"s/is patch/patch/","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"2cda43ce9cd6aa0722377a6fcfcda764de085c14","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Netronome SmartNIC Enablement"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is patch set enables Netronome Agilio SmartNIC acceleration in OpenStack."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"* This patch set adds VIF_TYPE_AGILIO_OVS to hook in the external ML2"},{"line_number":12,"context_line":"  plugin."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1f1a1f67_f64a2753","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":8},"in_reply_to":"1f1a1f67_70818e4a","updated":"2017-07-14 08:10:45.000000000","message":"Thanks. Rephrasing for column wrapping too.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"}],"nova/network/model.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":46,"context_line":"VIF_TYPE_OTHER \u003d \u0027other\u0027"},{"line_number":47,"context_line":"VIF_TYPE_TAP \u003d \u0027tap\u0027"},{"line_number":48,"context_line":"VIF_TYPE_MACVTAP \u003d \u0027macvtap\u0027"},{"line_number":49,"context_line":"VIF_TYPE_AGILIO_OVS \u003d \u0027agilio_ovs\u0027"},{"line_number":50,"context_line":"VIF_TYPE_BINDING_FAILED \u003d \u0027binding_failed\u0027"},{"line_number":51,"context_line":"VIF_TYPE_VIF \u003d \u0027vif\u0027"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_be281d86","line":49,"updated":"2017-07-13 17:40:07.000000000","message":"so this technically is not required but perhaps it is better to introdue this now until i have created a poc of how to pass the plugin from neutron to nova.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"371271de612b229084eca549de8b01cbea4f58a2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"VIF_TYPE_OTHER \u003d \u0027other\u0027"},{"line_number":47,"context_line":"VIF_TYPE_TAP \u003d \u0027tap\u0027"},{"line_number":48,"context_line":"VIF_TYPE_MACVTAP \u003d \u0027macvtap\u0027"},{"line_number":49,"context_line":"VIF_TYPE_AGILIO_OVS \u003d \u0027agilio_ovs\u0027"},{"line_number":50,"context_line":"VIF_TYPE_BINDING_FAILED \u003d \u0027binding_failed\u0027"},{"line_number":51,"context_line":"VIF_TYPE_VIF \u003d \u0027vif\u0027"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_6a819f4a","line":49,"in_reply_to":"1f1a1f67_be281d86","updated":"2017-07-13 19:13:03.000000000","message":"I\u0027m wholeheartedly in favour of not messing with the core unless you absolutely have to. If you can point me in the right direction I\u0027d be very grateful.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b8e2b3ad6bbcab98a115be7727966ca27aed363","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# valid for VIF_TYPE_TAP."},{"line_number":92,"context_line":"VIF_DETAILS_TAP_MAC_ADDRESS \u003d \u0027mac_address\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# Define supported virtual NIC types. VNIC_TYPE_DIRECT and VNIC_TYPE_MACVTAP"},{"line_number":95,"context_line":"# are used for SR-IOV ports"},{"line_number":96,"context_line":"VNIC_TYPE_NORMAL \u003d \u0027normal\u0027"},{"line_number":97,"context_line":"VNIC_TYPE_DIRECT \u003d \u0027direct\u0027"},{"line_number":98,"context_line":"VNIC_TYPE_MACVTAP \u003d \u0027macvtap\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_26906743","line":95,"range":{"start_line":94,"start_character":38,"end_line":95,"end_character":27},"updated":"2017-07-26 00:23:44.000000000","message":"I assume VNIC_TYPE_VIRTIO_FORWARDER should also be in this list since it\u0027s in the VNIC_TYPES_SRIOV tuple below.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"88dc0863b103db7ee52e7fb1b1019b97be9bc60f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# valid for VIF_TYPE_TAP."},{"line_number":92,"context_line":"VIF_DETAILS_TAP_MAC_ADDRESS \u003d \u0027mac_address\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# Define supported virtual NIC types. VNIC_TYPE_DIRECT and VNIC_TYPE_MACVTAP"},{"line_number":95,"context_line":"# are used for SR-IOV ports"},{"line_number":96,"context_line":"VNIC_TYPE_NORMAL \u003d \u0027normal\u0027"},{"line_number":97,"context_line":"VNIC_TYPE_DIRECT \u003d \u0027direct\u0027"},{"line_number":98,"context_line":"VNIC_TYPE_MACVTAP \u003d \u0027macvtap\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_48db711a","line":95,"range":{"start_line":94,"start_character":38,"end_line":95,"end_character":27},"in_reply_to":"ff346bd7_26906743","updated":"2017-07-26 07:12:19.000000000","message":"as a side note virtio-forwarder dose does not alway require sriov. it does in netronomes implementation but it may not in the future see comment in release not.\n\nif we want to make that a requirement then i would suggest changing the name to vnic type vf representor. and reserving virtio-forwarder for later use.\n\nit thinks it\u0027s fine to have virtio-forwarder be polymorphic as we can request vf allocation to be disabled via the vif binding detail dynamically via the ml2 mech driver or by the vif binding profile.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9d135bd13045205bb113d73695576c7749c6bc68","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# valid for VIF_TYPE_TAP."},{"line_number":92,"context_line":"VIF_DETAILS_TAP_MAC_ADDRESS \u003d \u0027mac_address\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# Define supported virtual NIC types. VNIC_TYPE_DIRECT and VNIC_TYPE_MACVTAP"},{"line_number":95,"context_line":"# are used for SR-IOV ports"},{"line_number":96,"context_line":"VNIC_TYPE_NORMAL \u003d \u0027normal\u0027"},{"line_number":97,"context_line":"VNIC_TYPE_DIRECT \u003d \u0027direct\u0027"},{"line_number":98,"context_line":"VNIC_TYPE_MACVTAP \u003d \u0027macvtap\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_7bf95ec6","line":95,"range":{"start_line":94,"start_character":38,"end_line":95,"end_character":27},"in_reply_to":"ff346bd7_48db711a","updated":"2017-07-26 10:13:07.000000000","message":"Yeah, I\u0027ll amend the comment to reflect that there\u0027s a 1:1 relationship now, but not necessarily in the future...","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"923722adf0963c24628cd0d9fea0336c779ef9ae","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_5ca7d650","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"updated":"2017-07-21 14:29:43.000000000","message":"Why not:\n\n    if vif_type in [network_model.VIF_TYPE_OVS,\n                    network_model.VIF_TYPE_AGILIO_OVS]:\n\n?","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"b40e3c115d3b7e3024471754148bcdbf6797563e","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_fbbea7fd","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"in_reply_to":"1f1a1f67_5ca7d650","updated":"2017-07-21 15:08:19.000000000","message":"I had seriously considered that. One reason is it used to conflict with VIF_TYPE_OVS_ACCELERATION here (which is now gone), and the other reason is to explicitly show it\u0027s out-of-tree. I have no objections either way though.","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fe43e8eea547524dc8616b8589843ed036802bc","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff346bd7_4994f744","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"in_reply_to":"1f1a1f67_fbbea7fd","updated":"2017-07-23 04:55:42.000000000","message":"personally i dont think there is much of a difference.\n\nremoving an element form a list vs an elif branch is about the same tough there would be less duplication.\n\ni would not be worried about it being out of tree in this code. the VIF_DETAILS_VHOSTUSER_FP_PLUG and VIF_TYPE_DVS branches are for non reference implementations.","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9e5d2eb4e55aac279524dad933b709ee9f2599b3","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff346bd7_2adabe16","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"in_reply_to":"ff346bd7_4994f744","updated":"2017-07-23 18:58:22.000000000","message":"I have no strong opinions either way. If anyone else thinks it should move from the elif branch, I\u0027ll put it in a list.","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b8e2b3ad6bbcab98a115be7727966ca27aed363","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_46a80b76","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"updated":"2017-07-26 00:23:44.000000000","message":"nit: Could be \u0027or network_model.VIF_TYPE_AGILIO_OVS\u0027 here for the same effect and then we don\u0027t have to duplicate the code. But we have the same thing with VIF_TYPE_VHOSTUSER so meh.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9d135bd13045205bb113d73695576c7749c6bc68","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_3bf196ce","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"in_reply_to":"ff346bd7_14646a21","updated":"2017-07-26 10:13:07.000000000","message":"I think there\u0027s enough reason to move the choice up here and little or no drawbacks.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"db7f2d82368f7c92d3fefb8641049568088b488c","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        should_create_bridge \u003d None"},{"line_number":2160,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":2161,"context_line":"        port_details \u003d port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":2162,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":2163,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"},{"line_number":2164,"context_line":"                                      CONF.neutron.ovs_bridge)"},{"line_number":2165,"context_line":"            ovs_interfaceid \u003d port[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_14646a21","line":2162,"range":{"start_line":2162,"start_character":8,"end_line":2162,"end_character":50},"in_reply_to":"ff346bd7_46a80b76","updated":"2017-07-26 07:01:56.000000000","message":"the reason why vhost user is duplicatied is because for the generic vhost-user support e.g. snabb switch or vpp you dont have bridge.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"}],"nova/network/os_vif_util.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ec61981540df27c9ef2a2b8487263738024194b3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _get_vif_vnic_type(vif):"},{"line_number":38,"context_line":"    \"\"\"Get the VIFs vnic_type"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    :param vif: the nova.nework.model.VIF instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_f0ba3e08","line":37,"updated":"2017-07-13 20:29:26.000000000","message":"Recommend removing this function. It is hiding the defaulting to model.VNIC_TYPE_NORMAL and I think it\u0027s better to just use:\n\n vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)\n\nat the calling location so that this information isn\u0027t hidden or obfuscated.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"2cda43ce9cd6aa0722377a6fcfcda764de085c14","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _get_vif_vnic_type(vif):"},{"line_number":38,"context_line":"    \"\"\"Get the VIFs vnic_type"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    :param vif: the nova.nework.model.VIF instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_f6b8e72a","line":37,"in_reply_to":"1f1a1f67_f0ba3e08","updated":"2017-07-14 08:10:45.000000000","message":"ACK, removing.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    return obj"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"# VIF_TYPE_AGILIO_OVS \u003d \u0027agilio_ovs\u0027"},{"line_number":317,"context_line":"def _nova_to_osvif_vif_agilio_ovs(vif):"},{"line_number":318,"context_line":"    vnic_type \u003d _get_vif_vnic_type(vif)"},{"line_number":319,"context_line":"    vif_name \u003d _get_vif_name(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_1ecb9172","line":316,"range":{"start_line":316,"start_character":0,"end_line":316,"end_character":36},"updated":"2017-07-13 17:40:07.000000000","message":"so for now this is the most trait forword way to do this by\nextending _nova_to_osvif_vif_vhostuser and _nova_to_osvif_vif_vhostuser without a new vif type but that needs more changes to nova and neutron.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ec61981540df27c9ef2a2b8487263738024194b3","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"])"},{"line_number":322,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":323,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":324,"context_line":"            vif, objects.vif.VIFHostDevice, port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":325,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"],"},{"line_number":326,"context_line":"            dev_type\u003dfields.VIFHostDeviceDevType.ETHERNET"},{"line_number":327,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_30d8b67d","line":324,"updated":"2017-07-13 20:29:26.000000000","message":"pep8 is complaining this line is too long.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"2cda43ce9cd6aa0722377a6fcfcda764de085c14","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"])"},{"line_number":322,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":323,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":324,"context_line":"            vif, objects.vif.VIFHostDevice, port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":325,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"],"},{"line_number":326,"context_line":"            dev_type\u003dfields.VIFHostDeviceDevType.ETHERNET"},{"line_number":327,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_76e737e6","line":324,"in_reply_to":"1f1a1f67_30d8b67d","updated":"2017-07-14 08:10:45.000000000","message":"ACK, fixing","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":329,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        # (jangutter): Note, we are stashing the PCI address into the socket."},{"line_number":332,"context_line":"        # os-vif plug and unplug grabs it from there."},{"line_number":333,"context_line":"        # This monumentally hacky to say the least."},{"line_number":334,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_1e46f122","line":333,"range":{"start_line":331,"start_character":8,"end_line":333,"end_character":51},"updated":"2017-07-13 17:40:07.000000000","message":"can you inherit form VIFPortProfileOpenVSwitch\nto crete VIFPortProfileAgilioOVS instead and add a pci_adress field there instead of doing this.\n\nyou can also use the port profile to store any other backend specific info you need.\n\nVIF_TYPE object stores all share info for a vif type(mode and socket path for vhost-user) and profile store backend specific info for the plugin to use when pluging or unpluging a port.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"371271de612b229084eca549de8b01cbea4f58a2","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":329,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        # (jangutter): Note, we are stashing the PCI address into the socket."},{"line_number":332,"context_line":"        # os-vif plug and unplug grabs it from there."},{"line_number":333,"context_line":"        # This monumentally hacky to say the least."},{"line_number":334,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_4fd155fb","line":333,"range":{"start_line":331,"start_character":8,"end_line":333,"end_character":51},"in_reply_to":"1f1a1f67_1e46f122","updated":"2017-07-13 19:13:03.000000000","message":"Would this require os-vif core changes, or can this be done in an external plugin?","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"},{"line_number":337,"context_line":"                                mode\u003d\"client\","},{"line_number":338,"context_line":"                                path\u003d\"/run/virtiorelay/%s.sock\" % vif[\"profile\"][\"pci_slot\"])"},{"line_number":339,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":340,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_1e9391a5","line":337,"range":{"start_line":337,"start_character":38,"end_line":337,"end_character":44},"updated":"2017-07-13 17:40:07.000000000","message":"this should be passed form the ml2 driver not hardcoded.\n\nalso can you support server mode?\nclinet mode means that the sockets are created by agilio_ovs so if you ever restart agilio_ovs it will invalidate all the socket and you will need to reboot the vms to fix it.\n\nwhen qemu is the server it will support vhost-user reconnect meaning that in the same case the vms will automatically recreate the sockets and connectivet will be restoerd without a reboot but perhaps you do not have supprot for that currently?","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"371271de612b229084eca549de8b01cbea4f58a2","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"},{"line_number":337,"context_line":"                                mode\u003d\"client\","},{"line_number":338,"context_line":"                                path\u003d\"/run/virtiorelay/%s.sock\" % vif[\"profile\"][\"pci_slot\"])"},{"line_number":339,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":340,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_af2ea9f7","line":337,"range":{"start_line":337,"start_character":38,"end_line":337,"end_character":44},"in_reply_to":"1f1a1f67_1e9391a5","updated":"2017-07-13 19:13:03.000000000","message":"I believe we should have added support for that recently. It does require a fairly recent QEMU to run smoothly, so we left it as \"client\" by default.\n\nI\u0027ll add the plumbing to pass this through.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"},{"line_number":337,"context_line":"                                mode\u003d\"client\","},{"line_number":338,"context_line":"                                path\u003d\"/run/virtiorelay/%s.sock\" % vif[\"profile\"][\"pci_slot\"])"},{"line_number":339,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":340,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":341,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_7e7045a6","line":338,"range":{"start_line":338,"start_character":32,"end_line":338,"end_character":92},"updated":"2017-07-13 17:40:07.000000000","message":"this should be calulated in the ml2 driver not here.\n\ndandb was quite adement on this point when we introduced vhost-user support first.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ec61981540df27c9ef2a2b8487263738024194b3","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"},{"line_number":337,"context_line":"                                mode\u003d\"client\","},{"line_number":338,"context_line":"                                path\u003d\"/run/virtiorelay/%s.sock\" % vif[\"profile\"][\"pci_slot\"])"},{"line_number":339,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":340,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":341,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_d0d2a25c","line":338,"range":{"start_line":338,"start_character":32,"end_line":338,"end_character":92},"in_reply_to":"1f1a1f67_4f04b54a","updated":"2017-07-13 20:29:26.000000000","message":"pep8 is complaining this line is too long.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"371271de612b229084eca549de8b01cbea4f58a2","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"},{"line_number":337,"context_line":"                                mode\u003d\"client\","},{"line_number":338,"context_line":"                                path\u003d\"/run/virtiorelay/%s.sock\" % vif[\"profile\"][\"pci_slot\"])"},{"line_number":339,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":340,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":341,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_4f04b54a","line":338,"range":{"start_line":338,"start_character":32,"end_line":338,"end_character":92},"in_reply_to":"1f1a1f67_7e7045a6","updated":"2017-07-13 19:13:03.000000000","message":"I think we _might_ be able to work with _set_vhostuser_settings(vif, obj). I need to wire up the ml2 plugin to pass both through.\n\nIf we can use an external portprofile, then the need for the hardcoded values and sleigh-of-data should go away.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"2cda43ce9cd6aa0722377a6fcfcda764de085c14","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":336,"context_line":"                                vif_name\u003dvif_name,"},{"line_number":337,"context_line":"                                mode\u003d\"client\","},{"line_number":338,"context_line":"                                path\u003d\"/run/virtiorelay/%s.sock\" % vif[\"profile\"][\"pci_slot\"])"},{"line_number":339,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":340,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":341,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_36d1bffc","line":338,"range":{"start_line":338,"start_character":32,"end_line":338,"end_character":92},"in_reply_to":"1f1a1f67_d0d2a25c","updated":"2017-07-14 08:10:45.000000000","message":"Luckily, this line should soon go away.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"3383081e91d51eb2f18fce24c05ec06f56f9e65d","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":328,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":329,"context_line":"            vif_name\u003dvif_name,"},{"line_number":330,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":333,"context_line":"                                vif_name\u003dvif_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_a501aa3a","line":330,"range":{"start_line":330,"start_character":12,"end_line":330,"end_character":50},"updated":"2017-07-18 17:09:21.000000000","message":"is it better to add dev_address as optional field to the VIFVHostUser?","commit_id":"506ec75eff920820504ec499df13f6d1cee5a7ef"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"f5ad5a9933440d8c41b3fd224f4de7cf11652c8d","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":328,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":329,"context_line":"            vif_name\u003dvif_name,"},{"line_number":330,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":333,"context_line":"                                vif_name\u003dvif_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_4c4d3a3c","line":330,"range":{"start_line":330,"start_character":12,"end_line":330,"end_character":50},"in_reply_to":"1f1a1f67_a501aa3a","updated":"2017-07-19 16:04:46.000000000","message":"See Sean Mooney\u0027s comments at:\nhttps://review.openstack.org/#/c/483921/3/os_vif/objects/vif.py\n\nAdding metadata to the VIF is generally frowned upon, unless all the ports get the metadata.","commit_id":"506ec75eff920820504ec499df13f6d1cee5a7ef"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4ee8ba5fe9902bf04ec6e85cc49081a55523df89","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_c76b4e83","line":317,"range":{"start_line":317,"start_character":11,"end_line":317,"end_character":58},"updated":"2017-07-20 07:01:21.000000000","message":"in the case of DIRECT you will have representor_address\u003dvif[\"profile\"][\"pci_slot\"] and  dev_address\u003dvif[\"profile\"][\"pci_slot\"] is this by design? I thought the representor_address is only for the VNIC_TYPE_VIRTIO_FORWARDER. \n\nWho will assign the pci device to the [\u0027profile\u0027][\u0027pci_slot\u0027] in case of VNIC_TYPE_VIRTIO_FORWARDER?","commit_id":"f4f1f4a61428209b371fd32ef473c460941086e1"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"f6fb74444ff6d06e13482ac4832cdd4792c29a1c","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_02a13496","line":317,"range":{"start_line":317,"start_character":11,"end_line":317,"end_character":58},"in_reply_to":"1f1a1f67_c76b4e83","updated":"2017-07-20 07:50:00.000000000","message":"This is kind-of by design, because of the confusion between the VIF and the port profile.\n\nThe os-vif plugin uses the representor name and address for the plug/unplug functions, and libvirt uses the VIF type to generate the xml, for example.","commit_id":"f4f1f4a61428209b371fd32ef473c460941086e1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c62bc65895afed96e60e56ab2e7fab3f835d8583","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_3c5a102a","line":317,"range":{"start_line":317,"start_character":12,"end_line":317,"end_character":59},"updated":"2017-07-20 09:15:45.000000000","message":"same question as in previous PS, form were will you get the pci_slot in the VNIC_TYPE_VIRTIO_FORWARDER?","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"2521ebecc13ff41afb5dc526766c99f0e23885ea","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_ffa92add","line":317,"range":{"start_line":317,"start_character":12,"end_line":317,"end_character":59},"in_reply_to":"1f1a1f67_3c5a102a","updated":"2017-07-20 09:43:23.000000000","message":"Oh, do you mean who allocates it? It\u0027s because VNIC_TYPE_VIRTIO_FORWARDER has been added to the list of SR_IOV VNIC types. That triggers create_pci_requests_for_sriov_ports to add a pci request for the instance.","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"efc86069071eb34bac2dd49363935870fb2d537c","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_7f099a93","line":317,"range":{"start_line":317,"start_character":12,"end_line":317,"end_character":59},"in_reply_to":"1f1a1f67_ffa92add","updated":"2017-07-20 09:53:51.000000000","message":"Oh OK, I missed that part in the patch","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c62bc65895afed96e60e56ab2e7fab3f835d8583","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":322,"context_line":"            vif,"},{"line_number":323,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":324,"context_line":"            port_profile\u003dprofile,"},{"line_number":325,"context_line":"            plugin\u003d\"agilio_ovs\","},{"line_number":326,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"],"},{"line_number":327,"context_line":"            dev_type\u003dobjects.fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":328,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":329,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_5c070c1a","line":329,"range":{"start_line":318,"start_character":0,"end_line":329,"end_character":57},"updated":"2017-07-20 09:15:45.000000000","message":"I thought that the agilio ovs with DIRECT is same as https://review.openstack.org/#/c/398265/ why do need this?","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"2521ebecc13ff41afb5dc526766c99f0e23885ea","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":322,"context_line":"            vif,"},{"line_number":323,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":324,"context_line":"            port_profile\u003dprofile,"},{"line_number":325,"context_line":"            plugin\u003d\"agilio_ovs\","},{"line_number":326,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"],"},{"line_number":327,"context_line":"            dev_type\u003dobjects.fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":328,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":329,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_7cf3e874","line":329,"range":{"start_line":318,"start_character":0,"end_line":329,"end_character":57},"in_reply_to":"1f1a1f67_5c070c1a","updated":"2017-07-20 09:43:23.000000000","message":"This is to support Netronome\u0027s stable out-of-tree Agilio. The in-tree solution uses TC, representors and switchdev. The out-of-tree solution uses deeper hooks into the datapath, netdevs that mimic representors and doesn\u0027t depend on switchdev or TC.\n\nThe plan is to maintain the two tracks in parallel, and merge features from the out-of-tree version into the in-tree version as the patches land in openvswitch. Eventually new installs should work out-of-the-box, but the Agilio Neutron plugin will still be maintained for releases of Agilio OVS that Netronome supports.","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"efc86069071eb34bac2dd49363935870fb2d537c","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":322,"context_line":"            vif,"},{"line_number":323,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":324,"context_line":"            port_profile\u003dprofile,"},{"line_number":325,"context_line":"            plugin\u003d\"agilio_ovs\","},{"line_number":326,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"],"},{"line_number":327,"context_line":"            dev_type\u003dobjects.fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":328,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":329,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_ffca4a6c","line":329,"range":{"start_line":318,"start_character":0,"end_line":329,"end_character":57},"in_reply_to":"1f1a1f67_7cf3e874","updated":"2017-07-20 09:53:51.000000000","message":"so eventually there should be only one? so this is like an in between solution until you have everything in ovs upstream. Can you add a Note for that?","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"a38c6c8e4345f3a6db230b81ba7af4379c285be4","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":322,"context_line":"            vif,"},{"line_number":323,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":324,"context_line":"            port_profile\u003dprofile,"},{"line_number":325,"context_line":"            plugin\u003d\"agilio_ovs\","},{"line_number":326,"context_line":"            dev_address\u003dvif[\"profile\"][\"pci_slot\"],"},{"line_number":327,"context_line":"            dev_type\u003dobjects.fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":328,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":329,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_92d0ed55","line":329,"range":{"start_line":318,"start_character":0,"end_line":329,"end_character":57},"in_reply_to":"1f1a1f67_ffca4a6c","updated":"2017-07-20 10:11:38.000000000","message":"It\u0027s more correct to state that this interface will be used as long as Netronome is supporting its out-of-tree solution, with the recommendation to use the standard ovs plugins for the in-tree solution. I can update the release note to make this clearer.","commit_id":"d2846c02889600dcc50e4234b1c7979a2d8efe2a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"f0d4c74024ba3db792766899cf05fb7b57e362db","unresolved":false,"context_lines":[{"line_number":278,"context_line":"# VIF_TYPE_OVS \u003d \u0027ovs\u0027"},{"line_number":279,"context_line":"def _nova_to_osvif_vif_ovs(vif):"},{"line_number":280,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":281,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":282,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":283,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":284,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_0460c900","line":281,"updated":"2017-07-25 17:28:17.000000000","message":"interface_id setting method copied from here...","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b5ff02b11f6280aa3be619cf7643206b1a043368","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_7f928a4d","line":315,"updated":"2017-07-25 14:24:35.000000000","message":"should be:\n\n interface_id\u003dvif.get(\"ovs_interfaceid\", vif[\"id\"]),","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"ac64c95fc27b8b6c36297aaefdd5c5ad388d9658","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_e26dbd98","line":315,"in_reply_to":"ff346bd7_7f928a4d","updated":"2017-07-25 14:46:33.000000000","message":"fixed.","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"f0d4c74024ba3db792766899cf05fb7b57e362db","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_e60caa3c","line":315,"in_reply_to":"ff346bd7_e26dbd98","updated":"2017-07-25 17:28:17.000000000","message":"reverted: looks like the ovs_interfaceid field could be there, but \"None\". This also follows the style in L281. It might be worthwhile investigating ovs_interfaceid vs vif[\"id\"], whether it\u0027s just a test artifact or has real impact.","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49f61ed18ca16478aae4218bba4e521c59c15e97","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_fbae7f96","line":315,"in_reply_to":"ff346bd7_e60caa3c","updated":"2017-07-25 21:27:14.000000000","message":"Do you mean ovs_interfaceid can be the string \"None\"? :(","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"de462491c3d3a387d6e4d4ce066919aea0a4e362","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_1e55a01d","line":315,"in_reply_to":"ff346bd7_fbae7f96","updated":"2017-07-26 10:04:19.000000000","message":"Sorry, I meant it could be set to None, (I get interface_id\u003dNone in the unit tests if I change it here.)","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b5ff02b11f6280aa3be619cf7643206b1a043368","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":320,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_5f99066c","line":317,"updated":"2017-07-25 14:24:35.000000000","message":"note to reviewers: the pci_slot in the Neutron port profile is the PCI address, not just the slot part of the address. yay, clarity.","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"db7f2d82368f7c92d3fefb8641049568088b488c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"# VIF_TYPE_AGILIO_OVS \u003d \u0027agilio_ovs\u0027"},{"line_number":303,"context_line":"def _nova_to_osvif_vif_agilio_ovs(vif):"},{"line_number":304,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":305,"context_line":"    vif_name \u003d _get_vif_name(vif)"},{"line_number":306,"context_line":"    agilio_vnic_types \u003d [model.VNIC_TYPE_DIRECT,"},{"line_number":307,"context_line":"                         model.VNIC_TYPE_VIRTIO_FORWARDER]"},{"line_number":308,"context_line":"    if vnic_type in agilio_vnic_types:"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_d7b82477","line":305,"range":{"start_line":305,"start_character":15,"end_line":305,"end_character":33},"updated":"2017-07-26 07:01:56.000000000","message":"this will return (\u0027nic\u0027 + vif[\u0027id\u0027])[:model.NIC_NAME_LEN] as per line 49 above\n\nim in two minds about this. i think its a little confusing that the socket name and port name will not match. that said using the vhost user (vhu) prefix could also be confusing to some. the socket name and port would be the same though while the libvirt port type is a vhost user port the ovs port type is not.\n\nif vhu is not used i would still feel more comfortable with vfr for virtual fuction representor instead of nic but that is just a personal preference.\n\nwhen upstream ovs with dpdk is extended in the future to support hardware offload using a non vhu prefix might cause some issues on upgrade but maybe not.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9d135bd13045205bb113d73695576c7749c6bc68","unresolved":false,"context_lines":[{"line_number":302,"context_line":"# VIF_TYPE_AGILIO_OVS \u003d \u0027agilio_ovs\u0027"},{"line_number":303,"context_line":"def _nova_to_osvif_vif_agilio_ovs(vif):"},{"line_number":304,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":305,"context_line":"    vif_name \u003d _get_vif_name(vif)"},{"line_number":306,"context_line":"    agilio_vnic_types \u003d [model.VNIC_TYPE_DIRECT,"},{"line_number":307,"context_line":"                         model.VNIC_TYPE_VIRTIO_FORWARDER]"},{"line_number":308,"context_line":"    if vnic_type in agilio_vnic_types:"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_5b233a06","line":305,"range":{"start_line":305,"start_character":15,"end_line":305,"end_character":33},"in_reply_to":"ff346bd7_d7b82477","updated":"2017-07-26 10:13:07.000000000","message":"It turns out that, in practice, the mechanism driver sets vif[\"devname\"] in any case, so the nic\u003cxxxx\u003e name is a fallback in case it\u0027s not set.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bc8cbd4102c0d96bc56f2fe1cb0fdbacd4d73662","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_5b8b4b1e","line":315,"updated":"2017-07-25 21:28:08.000000000","message":"I\u0027m still not happy with the above but I do recognize it\u0027s the same style used in line 281.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"88dc0863b103db7ee52e7fb1b1019b97be9bc60f","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_e86345b0","line":316,"range":{"start_line":316,"start_character":29,"end_line":316,"end_character":37},"updated":"2017-07-26 07:12:19.000000000","message":"this needs to be truncated to match the make linux netdev name lenght.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"404b15196a4d56d00bc7eddd47657b4c7dd0570d","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":314,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":315,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":316,"context_line":"            representor_name\u003dvif_name,"},{"line_number":317,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":318,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":319,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_683ab534","line":316,"range":{"start_line":316,"start_character":29,"end_line":316,"end_character":37},"in_reply_to":"ff346bd7_e86345b0","updated":"2017-07-26 07:13:34.000000000","message":"ignore that i taught i had discared that comment its done in _get_vif_name","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b8e2b3ad6bbcab98a115be7727966ca27aed363","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":333,"context_line":"                                vif_name\u003dvif_name)"},{"line_number":334,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":335,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":336,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_c6119bae","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":49},"updated":"2017-07-26 00:23:44.000000000","message":"This shouldn\u0027t be like:\n\nvif_name \u003d (\u0027vhu\u0027 + vif[\u0027id\u0027])[:model.NIC_NAME_LEN]\n\nOn L369 below?","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9d135bd13045205bb113d73695576c7749c6bc68","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":333,"context_line":"                                vif_name\u003dvif_name)"},{"line_number":334,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":335,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":336,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_5eaa08d2","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":49},"in_reply_to":"ff346bd7_5749d4cd","updated":"2017-07-26 10:13:07.000000000","message":"We\u0027re taking the devname cue from the mechanism driver here, but I take your point... It\u0027s a great idea to modify the mechanism driver to set:\nvfp\u003cxxxx\u003e (passthrough) and vff\u003cxxxxx\u003e (forwarder) for the different plugging types. I\u0027ll check how clean we can make that.\nActually, in my opinion, nic\u003cxxxx\u003e is the correct \u0027fallback\u0027 name for the representor: it\u0027s also a decent way of detecting when mechanism drivers aren\u0027t sending enough info on the VIF.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"db7f2d82368f7c92d3fefb8641049568088b488c","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    elif vnic_type \u003d\u003d model.VNIC_TYPE_VIRTIO_FORWARDER:"},{"line_number":331,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":332,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"agilio_ovs\","},{"line_number":333,"context_line":"                                vif_name\u003dvif_name)"},{"line_number":334,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":335,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":336,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff346bd7_5749d4cd","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":49},"in_reply_to":"ff346bd7_c6119bae","updated":"2017-07-26 07:01:56.000000000","message":"upstream ovs requires the portname to match the file name part of the socket path for client mode however agilio is not working the same way. in the agilio ovs implientation \nthe vhost user backend is not running as part of ovs as far as i can tell. in this case it would appear that the dpdkvhostuser and dpdkvhostuserclient are not being used and instead the vf representor switchdev interface is being added to ovs as a normal port.\n\nlooking at \nhttps://github.com/Netronome/agilio-ovs-openstack-plugin/blob/d3f53fd3e6eaaa3d4b5f98978b2f3aa504a7a8cd/vif_plug_agilio_ovs/agilio_ovs.py#L87-L104\n\nthe vif_name is also not being used only the representor_name but this vif_name is comeing from line 305 so it does not need to be processed in the same way.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f52e23e506c54dc49a0f47ce8cbbf83bef528a74","unresolved":false,"context_lines":[{"line_number":302,"context_line":"# VIF_TYPE_AGILIO_OVS \u003d \u0027agilio_ovs\u0027"},{"line_number":303,"context_line":"def _nova_to_osvif_vif_agilio_ovs(vif):"},{"line_number":304,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":305,"context_line":"    # In practice, vif_name gets its value from vif[\"devname\"], passed by"},{"line_number":306,"context_line":"    # the mechanism driver."},{"line_number":307,"context_line":"    vif_name \u003d _get_vif_name(vif)"},{"line_number":308,"context_line":"    agilio_vnic_types \u003d [model.VNIC_TYPE_DIRECT,"},{"line_number":309,"context_line":"                         model.VNIC_TYPE_VIRTIO_FORWARDER]"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff346bd7_e9f0d6ff","line":306,"range":{"start_line":305,"start_character":3,"end_line":306,"end_character":27},"updated":"2017-07-26 16:50:17.000000000","message":"it can but you are not doing this in the current version in github so it will use the nic prefix version.","commit_id":"3c9cdfe0fceb4c63ab8bb2418a2d9884ff5a84df"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0754897a5df2ac7558dcdc58593a2dd0c474d494","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":315,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":316,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":317,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":318,"context_line":"            representor_name\u003dvif_name,"},{"line_number":319,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":320,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff346bd7_70eba2db","line":317,"range":{"start_line":317,"start_character":29,"end_line":317,"end_character":65},"updated":"2017-07-26 21:21:10.000000000","message":"nit: you could just default get() to accept vif[\u0027id\u0027]","commit_id":"2bd008ef5c56b85c85b09ec94d7ed079116c8e3c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c96e4b98700c4b115b7394e72765123a2ef85186","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        # plug/unplug, this should be the same as VIF.dev_address in the"},{"line_number":315,"context_line":"        # VNIC_TYPE_DIRECT case."},{"line_number":316,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":317,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":318,"context_line":"            representor_name\u003dvif_name,"},{"line_number":319,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":320,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff346bd7_e4a7d00a","line":317,"range":{"start_line":317,"start_character":29,"end_line":317,"end_character":65},"in_reply_to":"ff346bd7_70eba2db","updated":"2017-07-26 22:35:50.000000000","message":"I think Jan actually was doing this before but ovs_interfaceid\u003dNone in there so that\u0027s why he changed to \"or vif[\u0027id\u0027]\".","commit_id":"2bd008ef5c56b85c85b09ec94d7ed079116c8e3c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0754897a5df2ac7558dcdc58593a2dd0c474d494","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":317,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":318,"context_line":"            representor_name\u003dvif_name,"},{"line_number":319,"context_line":"            representor_address\u003dvif[\"profile\"][\"pci_slot\"])"},{"line_number":320,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":321,"context_line":"        # VIF.dev_address is used by the hypervisor to plug the instance into"},{"line_number":322,"context_line":"        # the PCI device."}],"source_content_type":"text/x-python","patch_set":17,"id":"ff346bd7_50f2de71","line":319,"updated":"2017-07-26 21:21:10.000000000","message":"that works because the two VNIC types are SR-IOV related. Okay with me.","commit_id":"2bd008ef5c56b85c85b09ec94d7ed079116c8e3c"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fe43e8eea547524dc8616b8589843ed036802bc","unresolved":false,"context_lines":[{"line_number":1594,"context_line":""},{"line_number":1595,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1596,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1597,"context_line":"    def test_config_os_vif_agilio_ovs_fallthrough(self, mock_convert_vif,"},{"line_number":1598,"context_line":"                                                  mock_convert_inst):"},{"line_number":1599,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_agilio_ovs"},{"line_number":1600,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1601,"context_line":""},{"line_number":1602,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1603,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1604,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1605,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1606,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1607,"context_line":"        cfg \u003d d.get_config(self.instance, self.vif_agilio_ovs,"},{"line_number":1608,"context_line":"                           image_meta, flavor,"},{"line_number":1609,"context_line":"                           CONF.libvirt.virt_type,"},{"line_number":1610,"context_line":"                           hostimpl)"},{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"        self._assertXmlEqual(\"\"\""},{"line_number":1613,"context_line":"            \u003cinterface type\u003d\"bridge\"\u003e"},{"line_number":1614,"context_line":"                \u003cmac address\u003d\"22:52:25:62:e2:aa\"/\u003e"},{"line_number":1615,"context_line":"                \u003cmodel type\u003d\"virtio\"/\u003e"},{"line_number":1616,"context_line":"                \u003csource bridge\u003d\"br0\"/\u003e"},{"line_number":1617,"context_line":"                \u003ctarget dev\u003d\"nicdc065497-3c\"/\u003e"},{"line_number":1618,"context_line":"                \u003cvirtualport type\u003d\"openvswitch\"\u003e"},{"line_number":1619,"context_line":"                    \u003cparameters"},{"line_number":1620,"context_line":"                     interfaceid\u003d\"07bd6cea-fb37-4594-b769-90fc51854ee9\"/\u003e"},{"line_number":1621,"context_line":"                \u003c/virtualport\u003e"},{"line_number":1622,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1625,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1626,"context_line":"    def test_config_os_vif_agilio_ovs_forwarder(self, mock_convert_vif,"},{"line_number":1627,"context_line":"                                                mock_convert_inst):"},{"line_number":1628,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_agilio_forwarder"},{"line_number":1629,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1630,"context_line":""},{"line_number":1631,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1632,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1633,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1634,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1635,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1636,"context_line":"        cfg \u003d d.get_config(self.instance, self.vif_agilio_ovs_forwarder,"},{"line_number":1637,"context_line":"                           image_meta, flavor,"},{"line_number":1638,"context_line":"                           CONF.libvirt.virt_type,"},{"line_number":1639,"context_line":"                           hostimpl)"},{"line_number":1640,"context_line":""},{"line_number":1641,"context_line":"        self._assertXmlEqual(\"\"\""},{"line_number":1642,"context_line":"            \u003cinterface type\u003d\"vhostuser\"\u003e"},{"line_number":1643,"context_line":"              \u003cmac address\u003d\"22:52:25:62:e2:aa\"/\u003e"},{"line_number":1644,"context_line":"              \u003cmodel type\u003d\"virtio\"/\u003e"},{"line_number":1645,"context_line":"              \u003csource mode\u003d\"client\" \"\"\" +"},{"line_number":1646,"context_line":"              \"\"\"path\u003d\"/var/run/openvswitch/vhudc065497-3c\" type\u003d\"unix\"/\u003e"},{"line_number":1647,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1648,"context_line":""},{"line_number":1649,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1650,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1651,"context_line":"    def test_config_os_vif_agilio_ovs_direct(self, mock_convert_vif,"},{"line_number":1652,"context_line":"                                             mock_convert_inst):"},{"line_number":1653,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_agilio_direct"},{"line_number":1654,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1655,"context_line":""},{"line_number":1656,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1657,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1658,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1659,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1660,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1661,"context_line":"        cfg \u003d d.get_config(self.instance, self.vif_agilio_ovs_direct,"},{"line_number":1662,"context_line":"                           image_meta, flavor,"},{"line_number":1663,"context_line":"                           CONF.libvirt.virt_type,"},{"line_number":1664,"context_line":"                           hostimpl)"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        self._assertXmlEqual(\"\"\""},{"line_number":1667,"context_line":"            \u003cinterface type\u003d\"hostdev\" managed\u003d\"yes\"\u003e"},{"line_number":1668,"context_line":"              \u003cmac address\u003d\"22:52:25:62:e2:aa\"/\u003e"},{"line_number":1669,"context_line":"              \u003csource\u003e"},{"line_number":1670,"context_line":"                \u003caddress type\u003d\"pci\" domain\u003d\"0x0000\" \"\"\" +"},{"line_number":1671,"context_line":"                \"\"\"bus\u003d\"0x0a\" slot\u003d\"0x00\" function\u003d\"0x1\"/\u003e"},{"line_number":1672,"context_line":"              \u003c/source\u003e"},{"line_number":1673,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1676,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1677,"context_line":"    def test_config_os_vif_ovs(self, mock_convert_vif, mock_convert_inst):"},{"line_number":1678,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_ovs"},{"line_number":1679,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff346bd7_89b1bfe4","line":1676,"range":{"start_line":1597,"start_character":4,"end_line":1676,"end_character":61},"updated":"2017-07-23 04:55:42.000000000","message":"i know you are just following the convention in the file but this should realy be tested in the driver not here.\n\nbut as i said you are following the convetion used in the rest of the file so i guess it is ok.","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9e5d2eb4e55aac279524dad933b709ee9f2599b3","unresolved":false,"context_lines":[{"line_number":1594,"context_line":""},{"line_number":1595,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1596,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1597,"context_line":"    def test_config_os_vif_agilio_ovs_fallthrough(self, mock_convert_vif,"},{"line_number":1598,"context_line":"                                                  mock_convert_inst):"},{"line_number":1599,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_agilio_ovs"},{"line_number":1600,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1601,"context_line":""},{"line_number":1602,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1603,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1604,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1605,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1606,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1607,"context_line":"        cfg \u003d d.get_config(self.instance, self.vif_agilio_ovs,"},{"line_number":1608,"context_line":"                           image_meta, flavor,"},{"line_number":1609,"context_line":"                           CONF.libvirt.virt_type,"},{"line_number":1610,"context_line":"                           hostimpl)"},{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"        self._assertXmlEqual(\"\"\""},{"line_number":1613,"context_line":"            \u003cinterface type\u003d\"bridge\"\u003e"},{"line_number":1614,"context_line":"                \u003cmac address\u003d\"22:52:25:62:e2:aa\"/\u003e"},{"line_number":1615,"context_line":"                \u003cmodel type\u003d\"virtio\"/\u003e"},{"line_number":1616,"context_line":"                \u003csource bridge\u003d\"br0\"/\u003e"},{"line_number":1617,"context_line":"                \u003ctarget dev\u003d\"nicdc065497-3c\"/\u003e"},{"line_number":1618,"context_line":"                \u003cvirtualport type\u003d\"openvswitch\"\u003e"},{"line_number":1619,"context_line":"                    \u003cparameters"},{"line_number":1620,"context_line":"                     interfaceid\u003d\"07bd6cea-fb37-4594-b769-90fc51854ee9\"/\u003e"},{"line_number":1621,"context_line":"                \u003c/virtualport\u003e"},{"line_number":1622,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1625,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1626,"context_line":"    def test_config_os_vif_agilio_ovs_forwarder(self, mock_convert_vif,"},{"line_number":1627,"context_line":"                                                mock_convert_inst):"},{"line_number":1628,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_agilio_forwarder"},{"line_number":1629,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1630,"context_line":""},{"line_number":1631,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1632,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1633,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1634,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1635,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1636,"context_line":"        cfg \u003d d.get_config(self.instance, self.vif_agilio_ovs_forwarder,"},{"line_number":1637,"context_line":"                           image_meta, flavor,"},{"line_number":1638,"context_line":"                           CONF.libvirt.virt_type,"},{"line_number":1639,"context_line":"                           hostimpl)"},{"line_number":1640,"context_line":""},{"line_number":1641,"context_line":"        self._assertXmlEqual(\"\"\""},{"line_number":1642,"context_line":"            \u003cinterface type\u003d\"vhostuser\"\u003e"},{"line_number":1643,"context_line":"              \u003cmac address\u003d\"22:52:25:62:e2:aa\"/\u003e"},{"line_number":1644,"context_line":"              \u003cmodel type\u003d\"virtio\"/\u003e"},{"line_number":1645,"context_line":"              \u003csource mode\u003d\"client\" \"\"\" +"},{"line_number":1646,"context_line":"              \"\"\"path\u003d\"/var/run/openvswitch/vhudc065497-3c\" type\u003d\"unix\"/\u003e"},{"line_number":1647,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1648,"context_line":""},{"line_number":1649,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1650,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1651,"context_line":"    def test_config_os_vif_agilio_ovs_direct(self, mock_convert_vif,"},{"line_number":1652,"context_line":"                                             mock_convert_inst):"},{"line_number":1653,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_agilio_direct"},{"line_number":1654,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1655,"context_line":""},{"line_number":1656,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1657,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1658,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1659,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1660,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1661,"context_line":"        cfg \u003d d.get_config(self.instance, self.vif_agilio_ovs_direct,"},{"line_number":1662,"context_line":"                           image_meta, flavor,"},{"line_number":1663,"context_line":"                           CONF.libvirt.virt_type,"},{"line_number":1664,"context_line":"                           hostimpl)"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        self._assertXmlEqual(\"\"\""},{"line_number":1667,"context_line":"            \u003cinterface type\u003d\"hostdev\" managed\u003d\"yes\"\u003e"},{"line_number":1668,"context_line":"              \u003cmac address\u003d\"22:52:25:62:e2:aa\"/\u003e"},{"line_number":1669,"context_line":"              \u003csource\u003e"},{"line_number":1670,"context_line":"                \u003caddress type\u003d\"pci\" domain\u003d\"0x0000\" \"\"\" +"},{"line_number":1671,"context_line":"                \"\"\"bus\u003d\"0x0a\" slot\u003d\"0x00\" function\u003d\"0x1\"/\u003e"},{"line_number":1672,"context_line":"              \u003c/source\u003e"},{"line_number":1673,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1676,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1677,"context_line":"    def test_config_os_vif_ovs(self, mock_convert_vif, mock_convert_inst):"},{"line_number":1678,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_ovs"},{"line_number":1679,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff346bd7_6aa2069d","line":1676,"range":{"start_line":1597,"start_character":4,"end_line":1676,"end_character":61},"in_reply_to":"ff346bd7_89b1bfe4","updated":"2017-07-23 18:58:22.000000000","message":"Yeah, I viewed this as testing the object model rather than testing the driver per se.  Triggering the three main codepaths in _nova_to_osvif_vif_agilio_ovs and checking the XML output for libvirt is a bit paranoid, but it does test a very long chain of code.","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"}],"nova/virt/libvirt/designer.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def set_vif_host_backend_host_device(conf, devname):"},{"line_number":134,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":135,"context_line":"    with host backend details for a device that supports"},{"line_number":136,"context_line":"    SR-IOV PCI device virtual function."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_bec7fd12","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":51},"updated":"2017-07-13 17:40:07.000000000","message":"i taught we already had this but i guess not.\n\nthis will create something akin to \n\u003cdevices\u003e\n  \u003cinterface type\u003d\u0027hostdev\u0027 managed\u003d\u0027yes\u0027\u003e \n    \u003csource\u003e\n      \u003caddress type\u003d\u0027pci\u0027 domain\u003d\u00270x0000\u0027 bus\u003d\u00270x00\u0027 slot\u003d\u00270x07\u0027 function\u003d\u00270x0\u0027/\u003e\n    \u003c/source\u003e\n  \u003c/interface\u003e\n\u003c/devices\u003e\nhttps://libvirt.org/formatdomain.html#elementsNICSHostdev\n\ncould you use set_vif_host_backend_hw_veb instead\n\ne.g. set_vif_host_backend_hw_veb(conf,\u0027hostdev\u0027,devname,None)","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"371271de612b229084eca549de8b01cbea4f58a2","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def set_vif_host_backend_host_device(conf, devname):"},{"line_number":134,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":135,"context_line":"    with host backend details for a device that supports"},{"line_number":136,"context_line":"    SR-IOV PCI device virtual function."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_aa2b3780","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":51},"in_reply_to":"1f1a1f67_bec7fd12","updated":"2017-07-13 19:13:03.000000000","message":"I believe moshel\u0027s patch is actually implementing this, this code should disappear the moment his is merged.\nhttps://review.openstack.org/#/c/398265/16/nova/virt/libvirt/designer.py","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312e12ef783887c70a66efa5aafaf739e608fe38","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    conf.net_type \u003d \u0027hostdev\u0027"},{"line_number":140,"context_line":"    conf.source_dev \u003d devname"},{"line_number":141,"context_line":"    conf.model \u003d None"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_1e239107","line":140,"range":{"start_line":140,"start_character":21,"end_line":140,"end_character":29},"updated":"2017-07-13 17:40:07.000000000","message":"can you change the paramater name to pci_adress\n\nor pass the devname form the vif.py and look it up here using\n\npci_utils.get_ifname_by_pci_address(devname) as is don on line 124 above.","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"371271de612b229084eca549de8b01cbea4f58a2","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    conf.net_type \u003d \u0027hostdev\u0027"},{"line_number":140,"context_line":"    conf.source_dev \u003d devname"},{"line_number":141,"context_line":"    conf.model \u003d None"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_2a3727e6","line":140,"range":{"start_line":140,"start_character":21,"end_line":140,"end_character":29},"in_reply_to":"1f1a1f67_1e239107","updated":"2017-07-13 19:13:03.000000000","message":"Please send this up to moshel:\nhttps://review.openstack.org/#/c/398265/16/nova/virt/libvirt/designer.py","commit_id":"ce9ef040c520dc4a7a85af3c83408d7a23058c64"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"78e50513071442ca83c62d01ef659ff34a3c89c5","unresolved":false,"context_lines":[{"line_number":472,"context_line":"    # https://review.openstack.org/#/c/398265/16/nova/virt/libvirt/vif.py"},{"line_number":473,"context_line":"    # Maybe this looks better?"},{"line_number":474,"context_line":"    def _set_config_VIFHostDevice(self, instance, vif, conf, host\u003dNone):"},{"line_number":475,"context_line":"        # This sets the required fields for an \u003cinterface type\u003d\u0027hostdev\u0027\u003e"},{"line_number":476,"context_line":"        # section in libvirt (it looks like a subset of hw_veb)"},{"line_number":477,"context_line":"        designer.set_vif_host_backend_hw_veb("},{"line_number":478,"context_line":"            conf,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_37bf6262","line":475,"updated":"2017-07-14 23:42:03.000000000","message":"I think its more consistent with the other interface types supported via os-vif. Not sure if it is better or not.","commit_id":"4c9e0146cbe64b13722f48f382304d8f30243803"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fe43e8eea547524dc8616b8589843ed036802bc","unresolved":false,"context_lines":[{"line_number":468,"context_line":"            conf.driver_name \u003d None"},{"line_number":469,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    # (jangutter): Note, this conflicts with:"},{"line_number":472,"context_line":"    # https://review.openstack.org/#/c/398265/16/nova/virt/libvirt/vif.py"},{"line_number":473,"context_line":"    # Maybe this looks better?"},{"line_number":474,"context_line":"    # Revisit when https://review.openstack.org/#/c/484197/ gets merged"},{"line_number":475,"context_line":"    def _set_config_VIFHostDevice(self, instance, vif, conf, host\u003dNone):"},{"line_number":476,"context_line":"        # This sets the required fields for an \u003cinterface type\u003d\u0027hostdev\u0027\u003e"},{"line_number":477,"context_line":"        # section in libvirt (it looks like a subset of hw_veb)"},{"line_number":478,"context_line":"        designer.set_vif_host_backend_hw_veb("},{"line_number":479,"context_line":"            conf,"},{"line_number":480,"context_line":"            \u0027hostdev\u0027,"},{"line_number":481,"context_line":"            vif.dev_address,"},{"line_number":482,"context_line":"            None)"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _set_config_VIFPortProfileOpenVSwitch(self, profile, conf):"},{"line_number":485,"context_line":"        conf.vporttype \u003d \"openvswitch\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff346bd7_69b69bdc","line":482,"range":{"start_line":471,"start_character":4,"end_line":482,"end_character":17},"updated":"2017-07-23 04:55:42.000000000","message":"this does not have any uiit tests and all the unit tests you added test_vif.py test code in other files.","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9e5d2eb4e55aac279524dad933b709ee9f2599b3","unresolved":false,"context_lines":[{"line_number":468,"context_line":"            conf.driver_name \u003d None"},{"line_number":469,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    # (jangutter): Note, this conflicts with:"},{"line_number":472,"context_line":"    # https://review.openstack.org/#/c/398265/16/nova/virt/libvirt/vif.py"},{"line_number":473,"context_line":"    # Maybe this looks better?"},{"line_number":474,"context_line":"    # Revisit when https://review.openstack.org/#/c/484197/ gets merged"},{"line_number":475,"context_line":"    def _set_config_VIFHostDevice(self, instance, vif, conf, host\u003dNone):"},{"line_number":476,"context_line":"        # This sets the required fields for an \u003cinterface type\u003d\u0027hostdev\u0027\u003e"},{"line_number":477,"context_line":"        # section in libvirt (it looks like a subset of hw_veb)"},{"line_number":478,"context_line":"        designer.set_vif_host_backend_hw_veb("},{"line_number":479,"context_line":"            conf,"},{"line_number":480,"context_line":"            \u0027hostdev\u0027,"},{"line_number":481,"context_line":"            vif.dev_address,"},{"line_number":482,"context_line":"            None)"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _set_config_VIFPortProfileOpenVSwitch(self, profile, conf):"},{"line_number":485,"context_line":"        conf.vporttype \u003d \"openvswitch\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff346bd7_2ac51e3d","line":482,"range":{"start_line":471,"start_character":4,"end_line":482,"end_character":17},"in_reply_to":"ff346bd7_69b69bdc","updated":"2017-07-23 18:58:22.000000000","message":"This has been broken out into: https://review.openstack.org/#/c/486426/","commit_id":"8093089f4a2629d7c05c7be68b0eb254d23fb41a"}],"releasenotes/notes/netronome-smartnic-enablement-d3897fb294429282.yaml":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b5ff02b11f6280aa3be619cf7643206b1a043368","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - This release adds support for Netronome\u0027s Agilio OVS VIF type. In order"},{"line_number":4,"context_line":"    to use the accelerated plugging modes, external Neutron and OS-VIF plugins"},{"line_number":5,"context_line":"    are required. Consult the Agilio documentation for more information about"},{"line_number":6,"context_line":"    the plugin compatibility and support matrix."},{"line_number":7,"context_line":"  - The ``virtio-forwarder`` VNIC type has been added to the list of VNICs."},{"line_number":8,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":9,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff346bd7_3f9c025c","line":6,"updated":"2017-07-25 14:24:35.000000000","message":"Do we have a link to this documentation? Would be very useful to include it in the release note and/or commit message.","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"ac64c95fc27b8b6c36297aaefdd5c5ad388d9658","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - This release adds support for Netronome\u0027s Agilio OVS VIF type. In order"},{"line_number":4,"context_line":"    to use the accelerated plugging modes, external Neutron and OS-VIF plugins"},{"line_number":5,"context_line":"    are required. Consult the Agilio documentation for more information about"},{"line_number":6,"context_line":"    the plugin compatibility and support matrix."},{"line_number":7,"context_line":"  - The ``virtio-forwarder`` VNIC type has been added to the list of VNICs."},{"line_number":8,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":9,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff346bd7_823151a5","line":6,"in_reply_to":"ff346bd7_3f9c025c","updated":"2017-07-25 14:46:33.000000000","message":"Added a link to our byzantine support site. Registered customers should already have access to the docs, I\u0027ll put in a request to make them available for the general public.","commit_id":"396a4422f74932d5fbb7e37e7721332a22829b0d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b8e2b3ad6bbcab98a115be7727966ca27aed363","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":10,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"},{"line_number":11,"context_line":"    external Neutron and OS-VIF plugins provide support for this VNIC mode,"},{"line_number":12,"context_line":"    with support from other vendors following soon."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff346bd7_464b6baf","line":12,"range":{"start_line":12,"start_character":4,"end_line":12,"end_character":51},"updated":"2017-07-26 00:23:44.000000000","message":"What other vendors? Mellanox? Or is this just wishful thinking?","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9d135bd13045205bb113d73695576c7749c6bc68","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":10,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"},{"line_number":11,"context_line":"    external Neutron and OS-VIF plugins provide support for this VNIC mode,"},{"line_number":12,"context_line":"    with support from other vendors following soon."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff346bd7_1b5012d4","line":12,"range":{"start_line":12,"start_character":4,"end_line":12,"end_character":51},"in_reply_to":"ff346bd7_28182d73","updated":"2017-07-26 10:13:07.000000000","message":"Yeah, one of my personal wishlists is to implement virtio-forwarder for the ML2 SR-IOV mechanism driver (NIC+VEB). You won\u0027t need representors for it (since the bridge is in HW) but there\u0027s some plugging glue needed.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"db7f2d82368f7c92d3fefb8641049568088b488c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":10,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"},{"line_number":11,"context_line":"    external Neutron and OS-VIF plugins provide support for this VNIC mode,"},{"line_number":12,"context_line":"    with support from other vendors following soon."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff346bd7_28182d73","line":12,"range":{"start_line":12,"start_character":4,"end_line":12,"end_character":51},"in_reply_to":"ff346bd7_464b6baf","updated":"2017-07-26 07:01:56.000000000","message":"i plan to use virtio-forwarder vnic type in the future but not via agilio but rather upstream ovs-dpdk. that said it may not work the way the agilio ovs implentation works as vf representors will likely be optional. \n\n\nintel has had vswitch acceleration capability in some of our silicon e.g. red rock canyon http://openvswitch.org/support/ovscon2015/17/1425-daly.pdf\nfor almost 3 years however that product was never brought to general availablity.\n\n\nin fact snabb switch is actually a virtio forward application in disguise. it uses a custom userspace driver for our x520(niantic) 10G nics. the driver is used to configure the sriov/vmdq capabilities of the nic to allocate hardware resources that are used to back a generic vhost-user interface which it exposes to the guest.\n\n\nagilio\u0027s virtio forwarder application could be used in a similar capacity with any nic in theory provided that nic exposed switchdev representors for its VFs, had a dpdk pmd and supported tc flower. \n\n\nour Fortvile (XL710) product support the first two requirements though not the last. tc flower would restrict our ability to utilise some nic capabilities vs dpdk api such as the dpdk flow api, as such while you should expect some patches from me or people on my team to utilize virtio-forwarder vnic type in queens it may or may not fuction the way netronome\u0027s solution does beyond using ovs for the control plane and vhost-user as the vm network interface type.\n\n\ni cant go into details currently but should be able to speak more openly at the PTG.","commit_id":"63fd2bdf42afcf11d3837448a9f44fadd8bc2b43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"86d596de10c424ecd9fa9b5d792dbc69cdd72420","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - This release adds support for Netronome\u0027s Agilio OVS VIF type. In order"},{"line_number":4,"context_line":"    to use the accelerated plugging modes, external Neutron and OS-VIF plugins"},{"line_number":5,"context_line":"    are required. Consult the Agilio documentation available at"},{"line_number":6,"context_line":"    https://support.netronome.com/ for more information about the plugin"},{"line_number":7,"context_line":"    compatibility and support matrix."},{"line_number":8,"context_line":"  - The ``virtio-forwarder`` VNIC type has been added to the list of VNICs."},{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ff346bd7_dd5eec74","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":34},"updated":"2017-07-26 18:30:10.000000000","message":"The only docs I see here are one for some product end of support statement and then another that tells you how the support process works, it doesn\u0027t mention anything about https://github.com/Netronome/agilio-ovs-openstack-plugin or OpenStack.\n\nWould it be better to just link to https://github.com/Netronome/agilio-ovs-openstack-plugin ?\n\nOr this? https://www.netronome.com/solutions/openstack-cloud-networking/","commit_id":"3c9cdfe0fceb4c63ab8bb2418a2d9884ff5a84df"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"7700526c5fe0b858629c2eb77deb8fdd0711cee2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - This release adds support for Netronome\u0027s Agilio OVS VIF type. In order"},{"line_number":4,"context_line":"    to use the accelerated plugging modes, external Neutron and OS-VIF plugins"},{"line_number":5,"context_line":"    are required. Consult the Agilio documentation available at"},{"line_number":6,"context_line":"    https://support.netronome.com/ for more information about the plugin"},{"line_number":7,"context_line":"    compatibility and support matrix."},{"line_number":8,"context_line":"  - The ``virtio-forwarder`` VNIC type has been added to the list of VNICs."},{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ff346bd7_781a6e6f","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":34},"in_reply_to":"ff346bd7_dd5eec74","updated":"2017-07-26 18:35:44.000000000","message":"I\u0027m working on getting our docs cleared for general release on our support site. Currently customers should have subscriptions, but they should be generally available by the time Pike gets released.","commit_id":"3c9cdfe0fceb4c63ab8bb2418a2d9884ff5a84df"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"86d596de10c424ecd9fa9b5d792dbc69cdd72420","unresolved":false,"context_lines":[{"line_number":8,"context_line":"  - The ``virtio-forwarder`` VNIC type has been added to the list of VNICs."},{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":10,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"},{"line_number":11,"context_line":"    external Neutron and OS-VIF plugins provide support for this VNIC mode,"},{"line_number":12,"context_line":"    with support from other vendors following soon."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ff346bd7_fd0bf079","line":12,"range":{"start_line":11,"start_character":74,"end_line":12,"end_character":51},"updated":"2017-07-26 18:30:10.000000000","message":"I would probably just drop this part. \"soon\" is too subjective - it could be a month, 6 months (1 release) or a year from now.","commit_id":"3c9cdfe0fceb4c63ab8bb2418a2d9884ff5a84df"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"7700526c5fe0b858629c2eb77deb8fdd0711cee2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"  - The ``virtio-forwarder`` VNIC type has been added to the list of VNICs."},{"line_number":9,"context_line":"    This VNIC type is intended to request a low-latency virtio port inside the"},{"line_number":10,"context_line":"    instance, likely backed by hardware acceleration. Currently the Agilio OVS"},{"line_number":11,"context_line":"    external Neutron and OS-VIF plugins provide support for this VNIC mode,"},{"line_number":12,"context_line":"    with support from other vendors following soon."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ff346bd7_78338ef7","line":12,"range":{"start_line":11,"start_character":74,"end_line":12,"end_character":51},"in_reply_to":"ff346bd7_fd0bf079","updated":"2017-07-26 18:35:44.000000000","message":"OK, will drop if a respin is required.","commit_id":"3c9cdfe0fceb4c63ab8bb2418a2d9884ff5a84df"}]}
