)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aad93cde0e9ea340a0ff4ce33640bc9c687af079","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[1] http://netdevconf.org/1.2/papers/efraim-gerlitz-sriov-ovs-final.pdf"},{"line_number":18,"context_line":"[2] https://patchwork.ozlabs.org/patch/738176/"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I3f38954bc5cf7b1690182dc8af45078eea275aa4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ffe62b97_7063bc43","line":19,"updated":"2017-03-27 11:43:30.000000000","message":"you will need to add a depens-on: link to https://review.openstack.org/#/c/398277/12 also.\nand we will need to do a new release of os-vif + bump the minium version in nova. as the ovs patch series has not merged yet i think we should target the os-vif lib release for around  pike 2 in june so that we can land some other feature in the release also.","commit_id":"b250b130e73fe394571952f3255343746c263fe2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"d047e1b392d2ae6c258e202826c17008716a6925","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[1] http://netdevconf.org/1.2/papers/efraim-gerlitz-sriov-ovs-final.pdf"},{"line_number":18,"context_line":"[2] https://patchwork.ozlabs.org/patch/738176/"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I3f38954bc5cf7b1690182dc8af45078eea275aa4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dfeb2761_4c3cbabe","line":19,"in_reply_to":"ffe62b97_7063bc43","updated":"2017-04-26 19:09:41.000000000","message":"Done","commit_id":"b250b130e73fe394571952f3255343746c263fe2"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"5da6adce904a53518a163049477845e8bb10ee35","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Moshe Levi \u003cmoshele@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-16 16:09:40 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"hardware offload support for openvswitch"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":10,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":11,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":12,"context_line":"to offload OVS datapath rules."},{"line_number":13,"context_line":"hardware offload support for openvswitch"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_b19787ec","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":30},"updated":"2017-07-19 14:55:47.000000000","message":"I think this is probably a cut \u0026 paste dupe.","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8aa4438bd8023ce8caa39c1177d51e3afb0c5e85","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Moshe Levi \u003cmoshele@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-16 16:09:40 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"hardware offload support for openvswitch"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":10,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":11,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":12,"context_line":"to offload OVS datapath rules."},{"line_number":13,"context_line":"hardware offload support for openvswitch"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_3c5a1583","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":30},"in_reply_to":"1f1a1f67_b19787ec","updated":"2017-07-20 06:51:47.000000000","message":"yes, just explanation from someone how didn\u0027t review the other patches","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"5da6adce904a53518a163049477845e8bb10ee35","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":16,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":17,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":18,"context_line":"to offload OVS datapath rules."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch add support for  VIF_TYPE_OVS_ACCELERATION"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_b1c0a7e2","line":17,"range":{"start_line":17,"start_character":27,"end_line":17,"end_character":32},"updated":"2017-07-19 14:55:47.000000000","message":"s/allow/allows/","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"5da6adce904a53518a163049477845e8bb10ee35","unresolved":false,"context_lines":[{"line_number":15,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":16,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":17,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":18,"context_line":"to offload OVS datapath rules."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch add support for  VIF_TYPE_OVS_ACCELERATION"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_516ef3ff","line":18,"updated":"2017-07-19 14:55:47.000000000","message":"Would be nice to have the minimum OVS version tied here, but it\u0027s a really minor nit.","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8aa4438bd8023ce8caa39c1177d51e3afb0c5e85","unresolved":false,"context_lines":[{"line_number":15,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":16,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":17,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":18,"context_line":"to offload OVS datapath rules."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch add support for  VIF_TYPE_OVS_ACCELERATION"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_3ccfb52a","line":18,"in_reply_to":"1f1a1f67_516ef3ff","updated":"2017-07-20 06:51:47.000000000","message":"Done","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"5da6adce904a53518a163049477845e8bb10ee35","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":18,"context_line":"to offload OVS datapath rules."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch add support for  VIF_TYPE_OVS_ACCELERATION"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[1] http://netdevconf.org/1.2/papers/efraim-gerlitz-sriov-ovs-final.pdf"},{"line_number":23,"context_line":"[2] https://patchwork.ozlabs.org/patch/738176/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_318b77c3","line":20,"range":{"start_line":20,"start_character":11,"end_line":20,"end_character":14},"updated":"2017-07-19 14:55:47.000000000","message":"s/add/adds/","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8aa4438bd8023ce8caa39c1177d51e3afb0c5e85","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Subsequent OVS patches [3] allow us to use the TC framework"},{"line_number":18,"context_line":"to offload OVS datapath rules."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch add support for  VIF_TYPE_OVS_ACCELERATION"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[1] http://netdevconf.org/1.2/papers/efraim-gerlitz-sriov-ovs-final.pdf"},{"line_number":23,"context_line":"[2] https://patchwork.ozlabs.org/patch/738176/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1f1a1f67_3ce8d57a","line":20,"range":{"start_line":20,"start_character":11,"end_line":20,"end_character":14},"in_reply_to":"1f1a1f67_318b77c3","updated":"2017-07-20 06:51:47.000000000","message":"Done","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a87ccf0c940a4782785f45a7df45054a4e2247c7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":10,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":11,"context_line":"Subsequent OVS patches [3] allows us to use the TC framework"},{"line_number":12,"context_line":"to offload OVS datapath rules. This feature is support in OVS 2.8.0."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch adds support for  VIF_TYPE_OVS with vnic_type direct"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"ff346bd7_48185f1c","line":12,"updated":"2017-07-24 10:38:48.000000000","message":"supported","commit_id":"cefd3ca6a1f619b37bbade084b6329ff854863b4"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1c88d9daff7d60e39a2fedb331ac70b1a0aa94b0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads"},{"line_number":10,"context_line":"framework for SR-IOV VFs which allows us to configure the NIC [2]."},{"line_number":11,"context_line":"Subsequent OVS patches [3] allows us to use the TC framework"},{"line_number":12,"context_line":"to offload OVS datapath rules. This feature is support in OVS 2.8.0."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch adds support for  VIF_TYPE_OVS with vnic_type direct"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"ff346bd7_08949736","line":12,"in_reply_to":"ff346bd7_48185f1c","updated":"2017-07-24 10:41:05.000000000","message":"Done","commit_id":"cefd3ca6a1f619b37bbade084b6329ff854863b4"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"521afe75f102174dc8bdfe8e4139b51a1f71df73","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            phynet_name \u003d self._get_phynet_info(context, neutron, net_id)"},{"line_number":1455,"context_line":"        return vnic_type, phynet_name"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    def create_pci_requests_for_sriov_ports(self, context, pci_requests,"},{"line_number":1458,"context_line":"                                            requested_networks):"},{"line_number":1459,"context_line":"        \"\"\"Check requested networks for any SR-IOV port request."},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"        Create a PCI request object for each SR-IOV port, and add it to the"},{"line_number":1462,"context_line":"        pci_requests object that contains a list of PCI request object."},{"line_number":1463,"context_line":"        \"\"\""},{"line_number":1464,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1465,"context_line":"            return"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":1468,"context_line":"        for request_net in requested_networks:"},{"line_number":1469,"context_line":"            phynet_name \u003d None"},{"line_number":1470,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            if request_net.port_id:"},{"line_number":1473,"context_line":"                vnic_type, phynet_name \u003d self._get_port_vnic_info("},{"line_number":1474,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1475,"context_line":"            pci_request_id \u003d None"},{"line_number":1476,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1477,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1478,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1479,"context_line":"                if dev_type:"},{"line_number":1480,"context_line":"                    spec[pci_request.PCI_DEVICE_TYPE_TAG] \u003d dev_type"},{"line_number":1481,"context_line":"                request \u003d objects.InstancePCIRequest("},{"line_number":1482,"context_line":"                    count\u003d1,"},{"line_number":1483,"context_line":"                    spec\u003d[spec],"},{"line_number":1484,"context_line":"                    request_id\u003duuidutils.generate_uuid())"},{"line_number":1485,"context_line":"                pci_requests.requests.append(request)"},{"line_number":1486,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"            # Add pci_request_id into the requested network"},{"line_number":1489,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1492,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_0e4e7c96","line":1489,"range":{"start_line":1457,"start_character":0,"end_line":1489,"end_character":55},"updated":"2017-07-04 14:49:29.000000000","message":"are you relieing on the fact that its vnic type direct to reuse this logic to do the allocation of the.\n\nif so i dont see where you are getting the pci prodoct and vender ids to gurrenty tha tthis selects a vf from the nic connected to ovs.\n\ni think this need to be extended to pull the vedor id and product id info form the neutron port binding:profile.","commit_id":"0ede9fadf536ac5c7b11998c08258b6f10cf3542"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"f66f6bae3c76fdce80054b387c6eace1cc6898a2","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            phynet_name \u003d self._get_phynet_info(context, neutron, net_id)"},{"line_number":1455,"context_line":"        return vnic_type, phynet_name"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    def create_pci_requests_for_sriov_ports(self, context, pci_requests,"},{"line_number":1458,"context_line":"                                            requested_networks):"},{"line_number":1459,"context_line":"        \"\"\"Check requested networks for any SR-IOV port request."},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"        Create a PCI request object for each SR-IOV port, and add it to the"},{"line_number":1462,"context_line":"        pci_requests object that contains a list of PCI request object."},{"line_number":1463,"context_line":"        \"\"\""},{"line_number":1464,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1465,"context_line":"            return"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":1468,"context_line":"        for request_net in requested_networks:"},{"line_number":1469,"context_line":"            phynet_name \u003d None"},{"line_number":1470,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            if request_net.port_id:"},{"line_number":1473,"context_line":"                vnic_type, phynet_name \u003d self._get_port_vnic_info("},{"line_number":1474,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1475,"context_line":"            pci_request_id \u003d None"},{"line_number":1476,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1477,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1478,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1479,"context_line":"                if dev_type:"},{"line_number":1480,"context_line":"                    spec[pci_request.PCI_DEVICE_TYPE_TAG] \u003d dev_type"},{"line_number":1481,"context_line":"                request \u003d objects.InstancePCIRequest("},{"line_number":1482,"context_line":"                    count\u003d1,"},{"line_number":1483,"context_line":"                    spec\u003d[spec],"},{"line_number":1484,"context_line":"                    request_id\u003duuidutils.generate_uuid())"},{"line_number":1485,"context_line":"                pci_requests.requests.append(request)"},{"line_number":1486,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"            # Add pci_request_id into the requested network"},{"line_number":1489,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1492,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_ffdac148","line":1489,"range":{"start_line":1457,"start_character":0,"end_line":1489,"end_character":55},"in_reply_to":"3f1d235d_0439bba2","updated":"2017-07-05 00:17:04.000000000","message":"So to know that the feature is enable we can use \u0027ethtool -k\u0027 on the PF (https://github.com/openstack/os-vif/blame/master/doc/source/plugins/ovs.rst#L43) I was thinking to levrage https://github.com/openstack/nova-specs/blob/master/specs/pike/approved/enable-sriov-nic-features.rst. so in the \"capabilities\" we will have hw-tc-offload and to use this it user will have to execute \nopenstack port create --binding-profile\n    \u0027{\"capabilities\": [\"hw-tc-offload\"]}\u0027 --vnic_type direct --network private port1. only then the ovs mechanism driver will allow to bind the direct port. If there is no hw-tc-offload the SR-IOV mechanism will bind it.\n\nTo allow this we need 2 things:\n1. to finish the enable-sriov-nic-features\n2. add to libvirt to expose the hw-tc-offload capability on the PF or representor port.\n\nUsing it this way will allow to dynamically change from \"legacy SR-IOV mode to hw-tc-offload and vice versa\" so it won\u0027t be depend on pci alisa config in nova.","commit_id":"0ede9fadf536ac5c7b11998c08258b6f10cf3542"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e887a61eeebf8ba42eea7e7de9ce61aec2fd0ca0","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            phynet_name \u003d self._get_phynet_info(context, neutron, net_id)"},{"line_number":1455,"context_line":"        return vnic_type, phynet_name"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    def create_pci_requests_for_sriov_ports(self, context, pci_requests,"},{"line_number":1458,"context_line":"                                            requested_networks):"},{"line_number":1459,"context_line":"        \"\"\"Check requested networks for any SR-IOV port request."},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"        Create a PCI request object for each SR-IOV port, and add it to the"},{"line_number":1462,"context_line":"        pci_requests object that contains a list of PCI request object."},{"line_number":1463,"context_line":"        \"\"\""},{"line_number":1464,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1465,"context_line":"            return"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":1468,"context_line":"        for request_net in requested_networks:"},{"line_number":1469,"context_line":"            phynet_name \u003d None"},{"line_number":1470,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            if request_net.port_id:"},{"line_number":1473,"context_line":"                vnic_type, phynet_name \u003d self._get_port_vnic_info("},{"line_number":1474,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1475,"context_line":"            pci_request_id \u003d None"},{"line_number":1476,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1477,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1478,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1479,"context_line":"                if dev_type:"},{"line_number":1480,"context_line":"                    spec[pci_request.PCI_DEVICE_TYPE_TAG] \u003d dev_type"},{"line_number":1481,"context_line":"                request \u003d objects.InstancePCIRequest("},{"line_number":1482,"context_line":"                    count\u003d1,"},{"line_number":1483,"context_line":"                    spec\u003d[spec],"},{"line_number":1484,"context_line":"                    request_id\u003duuidutils.generate_uuid())"},{"line_number":1485,"context_line":"                pci_requests.requests.append(request)"},{"line_number":1486,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"            # Add pci_request_id into the requested network"},{"line_number":1489,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1492,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_41b68540","line":1489,"range":{"start_line":1457,"start_character":0,"end_line":1489,"end_character":55},"in_reply_to":"3f1d235d_0e4e7c96","updated":"2017-07-04 14:57:58.000000000","message":"Sorry I don\u0027t follow. In the pci whitelist I have the phynet_name which ensure that I will get pci device (VF) that is related to the PF that is connected to the ovs.","commit_id":"0ede9fadf536ac5c7b11998c08258b6f10cf3542"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3c304cea2dc3f79f4898979090d5e7d9971da839","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            phynet_name \u003d self._get_phynet_info(context, neutron, net_id)"},{"line_number":1455,"context_line":"        return vnic_type, phynet_name"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    def create_pci_requests_for_sriov_ports(self, context, pci_requests,"},{"line_number":1458,"context_line":"                                            requested_networks):"},{"line_number":1459,"context_line":"        \"\"\"Check requested networks for any SR-IOV port request."},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"        Create a PCI request object for each SR-IOV port, and add it to the"},{"line_number":1462,"context_line":"        pci_requests object that contains a list of PCI request object."},{"line_number":1463,"context_line":"        \"\"\""},{"line_number":1464,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1465,"context_line":"            return"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":1468,"context_line":"        for request_net in requested_networks:"},{"line_number":1469,"context_line":"            phynet_name \u003d None"},{"line_number":1470,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            if request_net.port_id:"},{"line_number":1473,"context_line":"                vnic_type, phynet_name \u003d self._get_port_vnic_info("},{"line_number":1474,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1475,"context_line":"            pci_request_id \u003d None"},{"line_number":1476,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1477,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1478,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1479,"context_line":"                if dev_type:"},{"line_number":1480,"context_line":"                    spec[pci_request.PCI_DEVICE_TYPE_TAG] \u003d dev_type"},{"line_number":1481,"context_line":"                request \u003d objects.InstancePCIRequest("},{"line_number":1482,"context_line":"                    count\u003d1,"},{"line_number":1483,"context_line":"                    spec\u003d[spec],"},{"line_number":1484,"context_line":"                    request_id\u003duuidutils.generate_uuid())"},{"line_number":1485,"context_line":"                pci_requests.requests.append(request)"},{"line_number":1486,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"            # Add pci_request_id into the requested network"},{"line_number":1489,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1492,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_0439bba2","line":1489,"range":{"start_line":1457,"start_character":0,"end_line":1489,"end_character":55},"in_reply_to":"3f1d235d_41b68540","updated":"2017-07-04 15:32:13.000000000","message":"and if i also have the sriov nic agent deployed how do you differentiate between normal sriov and hardware offloaded ovs.\n\nyou need to be able to handle the case where there are other nic on the plathform that are not controlled by ovs that can be passed through to the guest.\n\nto do that you need to have a mechanisum to determing what which of the whitelisted vf are controlded by ovs and which are not.\n\nsimilar to \n\nhttps://review.openstack.org/#/c/456481/1/nova/network/neutronv2/api.py\n\nto do this generically you would need to use the neutron port binding profile to store the  product id and vendor id to use when generating the pci request object.","commit_id":"0ede9fadf536ac5c7b11998c08258b6f10cf3542"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a3f78fdc88e050167fede145c1015273c2e41587","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            phynet_name \u003d self._get_phynet_info(context, neutron, net_id)"},{"line_number":1455,"context_line":"        return vnic_type, phynet_name"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    def create_pci_requests_for_sriov_ports(self, context, pci_requests,"},{"line_number":1458,"context_line":"                                            requested_networks):"},{"line_number":1459,"context_line":"        \"\"\"Check requested networks for any SR-IOV port request."},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"        Create a PCI request object for each SR-IOV port, and add it to the"},{"line_number":1462,"context_line":"        pci_requests object that contains a list of PCI request object."},{"line_number":1463,"context_line":"        \"\"\""},{"line_number":1464,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1465,"context_line":"            return"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":1468,"context_line":"        for request_net in requested_networks:"},{"line_number":1469,"context_line":"            phynet_name \u003d None"},{"line_number":1470,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            if request_net.port_id:"},{"line_number":1473,"context_line":"                vnic_type, phynet_name \u003d self._get_port_vnic_info("},{"line_number":1474,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1475,"context_line":"            pci_request_id \u003d None"},{"line_number":1476,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1477,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1478,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1479,"context_line":"                if dev_type:"},{"line_number":1480,"context_line":"                    spec[pci_request.PCI_DEVICE_TYPE_TAG] \u003d dev_type"},{"line_number":1481,"context_line":"                request \u003d objects.InstancePCIRequest("},{"line_number":1482,"context_line":"                    count\u003d1,"},{"line_number":1483,"context_line":"                    spec\u003d[spec],"},{"line_number":1484,"context_line":"                    request_id\u003duuidutils.generate_uuid())"},{"line_number":1485,"context_line":"                pci_requests.requests.append(request)"},{"line_number":1486,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"            # Add pci_request_id into the requested network"},{"line_number":1489,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1492,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_098ed226","line":1489,"range":{"start_line":1457,"start_character":0,"end_line":1489,"end_character":55},"in_reply_to":"3f1d235d_97a32901","updated":"2017-07-10 11:34:02.000000000","message":"hi, leveraging the nic feature based scheduling would work in this case so i think that is a good solution as you suggested above.\n\nopenstack port create --binding-profile\n    \u0027{\"capabilities\": [\"hw-tc-offload\"]}\u0027 --vnic_type direct --network private port1. \n\non the hw-tc-offload vs switchdev it realy comes down to whcih on is report in the nic feature flag in libvirt.","commit_id":"0ede9fadf536ac5c7b11998c08258b6f10cf3542"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"b55a214ad4d000f314c64758e36a0558c933d00e","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            phynet_name \u003d self._get_phynet_info(context, neutron, net_id)"},{"line_number":1455,"context_line":"        return vnic_type, phynet_name"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    def create_pci_requests_for_sriov_ports(self, context, pci_requests,"},{"line_number":1458,"context_line":"                                            requested_networks):"},{"line_number":1459,"context_line":"        \"\"\"Check requested networks for any SR-IOV port request."},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"        Create a PCI request object for each SR-IOV port, and add it to the"},{"line_number":1462,"context_line":"        pci_requests object that contains a list of PCI request object."},{"line_number":1463,"context_line":"        \"\"\""},{"line_number":1464,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1465,"context_line":"            return"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":1468,"context_line":"        for request_net in requested_networks:"},{"line_number":1469,"context_line":"            phynet_name \u003d None"},{"line_number":1470,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            if request_net.port_id:"},{"line_number":1473,"context_line":"                vnic_type, phynet_name \u003d self._get_port_vnic_info("},{"line_number":1474,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1475,"context_line":"            pci_request_id \u003d None"},{"line_number":1476,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1477,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1478,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1479,"context_line":"                if dev_type:"},{"line_number":1480,"context_line":"                    spec[pci_request.PCI_DEVICE_TYPE_TAG] \u003d dev_type"},{"line_number":1481,"context_line":"                request \u003d objects.InstancePCIRequest("},{"line_number":1482,"context_line":"                    count\u003d1,"},{"line_number":1483,"context_line":"                    spec\u003d[spec],"},{"line_number":1484,"context_line":"                    request_id\u003duuidutils.generate_uuid())"},{"line_number":1485,"context_line":"                pci_requests.requests.append(request)"},{"line_number":1486,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"            # Add pci_request_id into the requested network"},{"line_number":1489,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1492,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_97a32901","line":1489,"range":{"start_line":1457,"start_character":0,"end_line":1489,"end_character":55},"in_reply_to":"3f1d235d_ffdac148","updated":"2017-07-09 12:27:30.000000000","message":"maybe better to add libvirt feature\u003dswitchdev to VF that allows hardware offload via tc.\ndevlink dev eswitch set DEV [ mode { legacy | switchdev } ]\nlegacy is regular SR-IOV mode and switchdev is the mode with the representors ports","commit_id":"0ede9fadf536ac5c7b11998c08258b6f10cf3542"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5b455848690b9738e6aee2f4e833f5d3ecdd3392","unresolved":false,"context_lines":[{"line_number":1487,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1488,"context_line":"            pci_request_id \u003d None"},{"line_number":1489,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1490,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1491,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1492,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1493,"context_line":"                # libvirt support to expose the nic feature. At the moment"},{"line_number":1494,"context_line":"                # there is a limitation to use both SR-IOV modes"},{"line_number":1495,"context_line":"                # (legacy and ovs) in the same deployment."},{"line_number":1496,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1497,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1498,"context_line":"                if dev_type:"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff346bd7_29f65391","line":1495,"range":{"start_line":1490,"start_character":16,"end_line":1495,"end_character":58},"updated":"2017-07-23 05:06:06.000000000","message":"im still a little unfomfortable about this but i wont block on requireing the nic feature based scheduling.\n\nthat said i do think the feature based scheduling patchsets are ready or very close to being ready to merge.\n\nso perhaps we can remove this note before pike is released.","commit_id":"1beb6870d1ad39e5d73c1d024fabe86a92ac18e8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5438dddbdcb3fc41ddd2c515ada113a0c7d103d6","unresolved":false,"context_lines":[{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt support to expose the nic feature. At the moment"},{"line_number":1499,"context_line":"                # there is a limitation to use both SR-IOV modes"},{"line_number":1500,"context_line":"                # (legacy and ovs) in the same deployment."},{"line_number":1501,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_c53e1c8a","line":1498,"updated":"2017-07-26 13:48:54.000000000","message":"s/support to expose the/to expose the/","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"b0ffe8664c5119d56ef06b37efec4cd842ce752b","unresolved":false,"context_lines":[{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt support to expose the nic feature. At the moment"},{"line_number":1499,"context_line":"                # there is a limitation to use both SR-IOV modes"},{"line_number":1500,"context_line":"                # (legacy and ovs) in the same deployment."},{"line_number":1501,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_65f8907a","line":1498,"in_reply_to":"ff346bd7_c53e1c8a","updated":"2017-07-26 14:02:32.000000000","message":"Done","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5438dddbdcb3fc41ddd2c515ada113a0c7d103d6","unresolved":false,"context_lines":[{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt support to expose the nic feature. At the moment"},{"line_number":1499,"context_line":"                # there is a limitation to use both SR-IOV modes"},{"line_number":1500,"context_line":"                # (legacy and ovs) in the same deployment."},{"line_number":1501,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1502,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1503,"context_line":"                if dev_type:"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_a5431813","line":1500,"updated":"2017-07-26 13:48:54.000000000","message":"s/to use both/that deployers cannot use both/","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"b0ffe8664c5119d56ef06b37efec4cd842ce752b","unresolved":false,"context_lines":[{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt support to expose the nic feature. At the moment"},{"line_number":1499,"context_line":"                # there is a limitation to use both SR-IOV modes"},{"line_number":1500,"context_line":"                # (legacy and ovs) in the same deployment."},{"line_number":1501,"context_line":"                spec \u003d {pci_request.PCI_NET_TAG: phynet_name}"},{"line_number":1502,"context_line":"                dev_type \u003d pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)"},{"line_number":1503,"context_line":"                if dev_type:"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_653d302a","line":1500,"in_reply_to":"ff346bd7_a5431813","updated":"2017-07-26 14:02:32.000000000","message":"Done","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"894d3b8986ccca8c7ea1d9bc16941569c92de4e2","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1493,"context_line":"            pci_request_id \u003d None"},{"line_number":1494,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt to expose the nic feature. At the moment"}],"source_content_type":"text/x-python","patch_set":28,"id":"ff346bd7_e1b57433","line":1495,"updated":"2017-07-27 07:21:20.000000000","message":"We do not need libvirt to expose that the NIC features. It\u0027s not clear for me why you don\u0027t add a tag capabilities in pci_passthrough_whitelist so we can match them with the binding-profile passed.\n\npci_passthrough_whitelist \u003d {\"address\":\"*:0a:00.*\", \"physical_network\":\"physnet1\", \"capabilities\": [\"offload\"]}","commit_id":"02cdd90c2e927dda3b265db7b0b9819e66928e06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7918e425d897fc0ee923c2040eb6615cee2736c8","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1493,"context_line":"            pci_request_id \u003d None"},{"line_number":1494,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt to expose the nic feature. At the moment"}],"source_content_type":"text/x-python","patch_set":28,"id":"ff346bd7_3b11645e","line":1495,"in_reply_to":"ff346bd7_27294ce5","updated":"2017-07-27 12:14:32.000000000","message":"Why cores don\u0027t want to extend pci_passthrough_whitelist? - that seems to be (currently at least) the best way to handle PCI resources by hosts. Using host aggregates is not what we should do, what to do if we want a host to handle different hardware, also host aggregates is not designed to replace the scheduler.\n\nAdding a tag in pci_passthrough_whitelist is the best solution we have currently so the scheduling is selecting automatically the correct host and we can have different hardware on that same host and to finish that only needs to add some minor changes.","commit_id":"02cdd90c2e927dda3b265db7b0b9819e66928e06"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"770e46c6631c7368696ecd779598054f74953bf7","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1493,"context_line":"            pci_request_id \u003d None"},{"line_number":1494,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt to expose the nic feature. At the moment"}],"source_content_type":"text/x-python","patch_set":28,"id":"ff346bd7_b9e0bc27","line":1495,"in_reply_to":"ff346bd7_3b11645e","updated":"2017-07-27 13:03:11.000000000","message":"Correct, host aggregates are a workaround, just as extending pci_passthrough_whitelist tags would be a workaround. Host aggregates doesn\u0027t generate a maintenance burden across DB migrations over future releases.","commit_id":"02cdd90c2e927dda3b265db7b0b9819e66928e06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e5a6befca5bd3f0e5edd8442cb5ac7345b24a93e","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1493,"context_line":"            pci_request_id \u003d None"},{"line_number":1494,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt to expose the nic feature. At the moment"}],"source_content_type":"text/x-python","patch_set":28,"id":"ff346bd7_b9c31c57","line":1495,"in_reply_to":"ff346bd7_3b11645e","updated":"2017-07-27 13:08:41.000000000","message":"sahid the whitelist was only ever ment to be used for filtering. \n\nthe tagging of physical networks and generic tags were added later but dan, jay and others were never really happy with the fact that it was not doing 2 different jobs. filtering avaliable pci deviceas(local inventory selection) and metadata transport.\n\nwe had a call a few weeks ago where we discussed depercating the use of tags and phynets in the whiilelist and intoducing 2 new config options\none for physnets and a second for static nic features.\n\njay is going to open a blueprint/spec for that. he may have already if not ill do it for the ptg.\n\nin queens we plan to migrate all pci device tracking to placemnet and then apply the feature flags and physntes as traits to the resource pools. the feature based schduing will simply pass in the traits as part of the request to placement when that is inplace.\n\nhost aggregates wont work as you can live migrate across them but availability zones would work.\n\nthe feature based scheduled was intended to be complede early in pike infact its been feature complete for months which is why it was suggested to use it for this usecase as it will be used for this in the future.\n\nif you have the feature based scheduilng (and the feature is exposed on the nice or via the static config) you can not only have sriov and ovs offload in the same deployment you can have it on the same host.","commit_id":"02cdd90c2e927dda3b265db7b0b9819e66928e06"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"a4f66d3a8708346b5e76cde21391651a02dcc3d9","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1493,"context_line":"            pci_request_id \u003d None"},{"line_number":1494,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt to expose the nic feature. At the moment"}],"source_content_type":"text/x-python","patch_set":28,"id":"ff346bd7_27294ce5","line":1495,"in_reply_to":"ff346bd7_c14ef036","updated":"2017-07-27 08:29:05.000000000","message":"Technically both modes can be used in the same deployment, but aggregates need to be used to ensure that supporting PCI devices are picked.\nExtending the whitelist to add these kind of capabilities makes it an inventory and that\u0027s not desirable or scalable. There\u0027s a strong desire to find a better method of tying the physical_network to the PCI devices than in the nova.conf file.","commit_id":"02cdd90c2e927dda3b265db7b0b9819e66928e06"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4db3069122aec83a6b38ff665a2dee75087ddba9","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1493,"context_line":"            pci_request_id \u003d None"},{"line_number":1494,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1495,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1496,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":1497,"context_line":"                # feature based scheduling in nova. This mean we will need"},{"line_number":1498,"context_line":"                # libvirt to expose the nic feature. At the moment"}],"source_content_type":"text/x-python","patch_set":28,"id":"ff346bd7_c14ef036","line":1495,"in_reply_to":"ff346bd7_e1b57433","updated":"2017-07-27 07:25:00.000000000","message":"nova cores don\u0027t want to extend pci_passthrough_whitelist with other tags. they even don\u0027t like the physical_network in the pci_passthrough_whitelist.","commit_id":"02cdd90c2e927dda3b265db7b0b9819e66928e06"}],"nova/network/os_vif_util.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb7ce585fd8e686ae251bae0827490e878e52136","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"# VIF_TYPE_OVS_ACCELERATION \u003d \u0027ovs_acceleration\u0027"},{"line_number":303,"context_line":"def _nova_to_osvif_vif_ovs_acceleration(vif):"},{"line_number":304,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":305,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":306,"context_line":"    obj \u003d _get_vif_instance(vif, objects.vif.VIFHostDevice,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_c55be851","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":45},"updated":"2017-03-27 11:33:40.000000000","message":"you need unittests for this.","commit_id":"b250b130e73fe394571952f3255343746c263fe2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e07ed15d66f086128eab599018d488d19a2169dc","unresolved":false,"context_lines":[{"line_number":303,"context_line":"def _nova_to_osvif_vif_ovs_acceleration(vif):"},{"line_number":304,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":305,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":306,"context_line":"    obj \u003d _get_vif_instance(vif, objects.vif.VIFHostDevice,"},{"line_number":307,"context_line":"                            port_profile\u003dprofile, plugin\u003d\"ovs\")"},{"line_number":308,"context_line":"    obj.dev_address \u003d vif[\"profile\"][\u0027pci_slot\u0027]"},{"line_number":309,"context_line":"    return obj"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_bfd6b7c2","line":307,"range":{"start_line":306,"start_character":28,"end_line":307,"end_character":62},"updated":"2017-03-27 11:08:40.000000000","message":"nit: could you format this like the above to make it a little to understand how these differ","commit_id":"b250b130e73fe394571952f3255343746c263fe2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"d047e1b392d2ae6c258e202826c17008716a6925","unresolved":false,"context_lines":[{"line_number":303,"context_line":"def _nova_to_osvif_vif_ovs_acceleration(vif):"},{"line_number":304,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":305,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":306,"context_line":"    obj \u003d _get_vif_instance(vif, objects.vif.VIFHostDevice,"},{"line_number":307,"context_line":"                            port_profile\u003dprofile, plugin\u003d\"ovs\")"},{"line_number":308,"context_line":"    obj.dev_address \u003d vif[\"profile\"][\u0027pci_slot\u0027]"},{"line_number":309,"context_line":"    return obj"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_ac7ea668","line":307,"range":{"start_line":306,"start_character":28,"end_line":307,"end_character":62},"in_reply_to":"ffe62b97_bfd6b7c2","updated":"2017-04-26 19:09:41.000000000","message":"Done","commit_id":"b250b130e73fe394571952f3255343746c263fe2"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"5da6adce904a53518a163049477845e8bb10ee35","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    obj \u003d _get_vif_instance("},{"line_number":308,"context_line":"        vif, objects.vif.VIFHostDevice, port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":309,"context_line":"        dev_address\u003dvif[\"profile\"][\u0027pci_slot\u0027],"},{"line_number":310,"context_line":"        dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":311,"context_line":"    return obj"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_51e833b1","line":310,"range":{"start_line":310,"start_character":17,"end_line":310,"end_character":30},"updated":"2017-07-19 14:55:47.000000000","message":"If you replace this with:\nobjects.fields\nyou can get rid of the import.","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8aa4438bd8023ce8caa39c1177d51e3afb0c5e85","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    obj \u003d _get_vif_instance("},{"line_number":308,"context_line":"        vif, objects.vif.VIFHostDevice, port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":309,"context_line":"        dev_address\u003dvif[\"profile\"][\u0027pci_slot\u0027],"},{"line_number":310,"context_line":"        dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":311,"context_line":"    return obj"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_dc1fa16e","line":310,"range":{"start_line":310,"start_character":17,"end_line":310,"end_character":30},"in_reply_to":"1f1a1f67_51e833b1","updated":"2017-07-20 06:51:47.000000000","message":"The reason I did that is because nova has also object.fields, so I just wanted to make it clear that the fields are taken from os_vif","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5b455848690b9738e6aee2f4e833f5d3ecdd3392","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":286,"context_line":"            vif,"},{"line_number":287,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":288,"context_line":"            port_profile\u003dprofile,"},{"line_number":289,"context_line":"            plugin\u003d\"ovs\","},{"line_number":290,"context_line":"            dev_address\u003dvif[\"profile\"][\u0027pci_slot\u0027],"},{"line_number":291,"context_line":"            dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff346bd7_a90a4387","line":288,"range":{"start_line":288,"start_character":25,"end_line":288,"end_character":32},"updated":"2017-07-23 05:06:06.000000000","message":"strictly speaking its not required but you might want to use the new ovs representor port profile instead.","commit_id":"1beb6870d1ad39e5d73c1d024fabe86a92ac18e8"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e847bebe2e7798994f0c04eac13ca07db6bcdc1d","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":286,"context_line":"            vif,"},{"line_number":287,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":288,"context_line":"            port_profile\u003dprofile,"},{"line_number":289,"context_line":"            plugin\u003d\"ovs\","},{"line_number":290,"context_line":"            dev_address\u003dvif[\"profile\"][\u0027pci_slot\u0027],"},{"line_number":291,"context_line":"            dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff346bd7_6f7d7b6d","line":288,"range":{"start_line":288,"start_character":25,"end_line":288,"end_character":32},"in_reply_to":"ff346bd7_a90a4387","updated":"2017-07-23 09:59:43.000000000","message":"Done","commit_id":"1beb6870d1ad39e5d73c1d024fabe86a92ac18e8"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"0894e1b6a0cb9a42a2fdc32553dfdd31bc4a2ace","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor()"},{"line_number":286,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":287,"context_line":"            vif,"},{"line_number":288,"context_line":"            objects.vif.VIFHostDevice,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff346bd7_f77db6e7","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":60},"updated":"2017-07-24 09:09:49.000000000","message":"For consistency, this line should be:\n:        profile \u003d objects.vif.VIFPortProfileOVSRepresentor(\n:            interface_id\u003dvif.get(\"ovs_interfaceid\") or vif[\"id\"],\n:# with   representor_name\u003dvif_name, here if you want to rename\n:            representor_address\u003dvif[\"profile\"][\"pci_slot\"])","commit_id":"cefd3ca6a1f619b37bbade084b6329ff854863b4"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1c88d9daff7d60e39a2fedb331ac70b1a0aa94b0","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor()"},{"line_number":286,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":287,"context_line":"            vif,"},{"line_number":288,"context_line":"            objects.vif.VIFHostDevice,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff346bd7_1d4cdb9c","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":60},"in_reply_to":"ff346bd7_f77db6e7","updated":"2017-07-24 10:41:05.000000000","message":"I will add the interface_id, the others we can add when we will use them in os-vif. ( I will add a comment for that)","commit_id":"cefd3ca6a1f619b37bbade084b6329ff854863b4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5438dddbdcb3fc41ddd2c515ada113a0c7d103d6","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        # TODO(moshele): add representor_name and representor_address"},{"line_number":286,"context_line":"        # to VIFPortProfileOVSRepresentor when we will use them in os-vif"},{"line_number":287,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":288,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_e53da08f","line":286,"updated":"2017-07-26 13:48:54.000000000","message":"This patch from @jangutter has now merged: https://review.openstack.org/#/c/483921/. What still needs to be done here, per the comment above?","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"657ae29eefd7ca6a4c8a6a38288e54fbcb656f41","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        # TODO(moshele): add representor_name and representor_address"},{"line_number":286,"context_line":"        # to VIFPortProfileOVSRepresentor when we will use them in os-vif"},{"line_number":287,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":288,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_28b37f4f","line":286,"in_reply_to":"ff346bd7_05c9c424","updated":"2017-07-26 14:13:00.000000000","message":"I do think you should add representor_address\u003dvif[\"profile\"][\u0027pci_slot\u0027] even though it\u0027s not _doing_ anything at the moment. representor_name can be left out (you should already support it if you support renaming representors). A later version of the os-vif ovs plugin should use representor_address rather than vif.dev_address to plug/unplug.","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"b0ffe8664c5119d56ef06b37efec4cd842ce752b","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        # TODO(moshele): add representor_name and representor_address"},{"line_number":286,"context_line":"        # to VIFPortProfileOVSRepresentor when we will use them in os-vif"},{"line_number":287,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":288,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_05c9c424","line":286,"in_reply_to":"ff346bd7_25c4c85e","updated":"2017-07-26 14:02:32.000000000","message":"and the representor_name is something need by netronome and we (Mellanox) don\u0027t use in the ovs vif plugin at the moment. \nI guess Jan can extend once will add the support to netronome ovs upstream solution","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a15c76f3b5c5a70fb6ada59b28126fae36f49e23","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        # TODO(moshele): add representor_name and representor_address"},{"line_number":286,"context_line":"        # to VIFPortProfileOVSRepresentor when we will use them in os-vif"},{"line_number":287,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":288,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_a8488f86","line":286,"in_reply_to":"ff346bd7_28b37f4f","updated":"2017-07-26 14:31:34.000000000","message":"I will add both of representor_name and representor_address\nso in the future we just need to update the os-vif to use them","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"e5684d54d1a4b0f9043f86b41476ae1d1b788a08","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        # TODO(moshele): add representor_name and representor_address"},{"line_number":286,"context_line":"        # to VIFPortProfileOVSRepresentor when we will use them in os-vif"},{"line_number":287,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":288,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_25c4c85e","line":286,"in_reply_to":"ff346bd7_e53da08f","updated":"2017-07-26 13:55:53.000000000","message":"The ovsplugin reference code in os-vif would need to be wired up. For \"DIRECT\" it\u0027s not absolutely necessary (the pci device is the same as the one passed through to the representor), but we needed the extra data in virtio-forwarder.","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":282,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":283,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":284,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_DIRECT:"},{"line_number":285,"context_line":"        profile \u003d objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":286,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027],"},{"line_number":287,"context_line":"            representor_name\u003d_get_vif_name(vif),"},{"line_number":288,"context_line":"            representor_address\u003dvif[\"profile\"][\u0027pci_slot\u0027])"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":290,"context_line":"            vif,"},{"line_number":291,"context_line":"            objects.vif.VIFHostDevice,"},{"line_number":292,"context_line":"            port_profile\u003dprofile,"},{"line_number":293,"context_line":"            plugin\u003d\"ovs\","},{"line_number":294,"context_line":"            dev_address\u003dvif[\"profile\"][\u0027pci_slot\u0027],"},{"line_number":295,"context_line":"            dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET)"},{"line_number":296,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":297,"context_line":"            obj.network.bridge \u003d vif[\"network\"][\"bridge\"]"},{"line_number":298,"context_line":"    elif _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":299,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":300,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff346bd7_db7a4def","line":297,"range":{"start_line":284,"start_character":4,"end_line":297,"end_character":57},"updated":"2017-07-27 17:18:06.000000000","message":"OK this is basically all the exact same as for agilio ovs with vnic_type\u003ddirect below.\n\nSome day we should think about actually moving some of this into common code since the only difference is the plugin name.","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"}],"nova/tests/unit/network/test_os_vif_util.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d2ba7ae5fec79ceb6a32219f6ebd124c2130ed93","unresolved":false,"context_lines":[{"line_number":596,"context_line":"                id\u003d\"b82c1929-051e-481d-8110-4669916c7915\","},{"line_number":597,"context_line":"                label\u003d\"Demo Net\","},{"line_number":598,"context_line":"                subnets\u003d[]),"},{"line_number":599,"context_line":"            profile\u003d{\u0027pci_slot\u0027: \u00270000:0a:00.1\u0027}"},{"line_number":600,"context_line":"        )"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_98a7f950","line":599,"updated":"2017-07-03 19:56:58.000000000","message":"strange that this was called pci_slot and not pci_address...","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"dfae2614c639ecc41b796db5a28c109927dca425","unresolved":false,"context_lines":[{"line_number":596,"context_line":"                id\u003d\"b82c1929-051e-481d-8110-4669916c7915\","},{"line_number":597,"context_line":"                label\u003d\"Demo Net\","},{"line_number":598,"context_line":"                subnets\u003d[]),"},{"line_number":599,"context_line":"            profile\u003d{\u0027pci_slot\u0027: \u00270000:0a:00.1\u0027}"},{"line_number":600,"context_line":"        )"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f1d235d_7e8a41bf","line":599,"in_reply_to":"3f1d235d_4df7e1d4","updated":"2017-07-04 14:25:35.000000000","message":"this is the name that was chosen see https://github.com/openstack/nova/blob/45dfc7106ebb95bacc2464ff37f372aae785691d/nova/virt/libvirt/vif.py#L148.\nI agree it is not a good name and it mean the full pci address.\nrename it will impact neutron see https://github.com/openstack/neutron/blob/16c37c1e0f720d19f336a5f39c53a3376e48666c/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py#L87","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"74ac5a2ce4e509c69fb7d0c73cb8723f77d7d179","unresolved":false,"context_lines":[{"line_number":596,"context_line":"                id\u003d\"b82c1929-051e-481d-8110-4669916c7915\","},{"line_number":597,"context_line":"                label\u003d\"Demo Net\","},{"line_number":598,"context_line":"                subnets\u003d[]),"},{"line_number":599,"context_line":"            profile\u003d{\u0027pci_slot\u0027: \u00270000:0a:00.1\u0027}"},{"line_number":600,"context_line":"        )"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f1d235d_4df7e1d4","line":599,"in_reply_to":"5f201791_98a7f950","updated":"2017-07-04 11:18:20.000000000","message":"yes that seam incorrect.\nthe pci slot would actully be just \"0000:0a\"","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"5da6adce904a53518a163049477845e8bb10ee35","unresolved":false,"context_lines":[{"line_number":607,"context_line":"            active\u003dFalse,"},{"line_number":608,"context_line":"            address\u003d\"22:52:25:62:e2:aa\","},{"line_number":609,"context_line":"            dev_address\u003d\u00270000:0a:00.1\u0027,"},{"line_number":610,"context_line":"            dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET,"},{"line_number":611,"context_line":"            plugin\u003d\"ovs\","},{"line_number":612,"context_line":"            port_profile\u003dosv_objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":613,"context_line":"                interface_id\u003d\"dc065497-3c8d-4f44-8fb4-e1d33c16a536\"),"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_f14dffc3","line":610,"range":{"start_line":610,"start_character":21,"end_line":610,"end_character":34},"updated":"2017-07-19 14:55:47.000000000","message":"Same argument, s/os_vif_fields/objects.fields/ and you can whack the import.","commit_id":"0009805fb7d75a37f5be46a274fe0aa97df6ab8e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5438dddbdcb3fc41ddd2c515ada113a0c7d103d6","unresolved":false,"context_lines":[{"line_number":571,"context_line":"            dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET,"},{"line_number":572,"context_line":"            plugin\u003d\"ovs\","},{"line_number":573,"context_line":"            port_profile\u003dosv_objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":574,"context_line":"                interface_id\u003d\"dc065497-3c8d-4f44-8fb4-e1d33c16a536\"),"},{"line_number":575,"context_line":"            has_traffic_filtering\u003dFalse,"},{"line_number":576,"context_line":"            preserve_on_delete\u003dFalse,"},{"line_number":577,"context_line":"            network\u003dosv_objects.network.Network("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_854c9442","line":574,"updated":"2017-07-26 13:48:54.000000000","message":"AFAIK, since https://review.openstack.org/#/c/483921/ merged, you should be able to add dev_address to the VIFPortProfileOVSRepresentor now.","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"e5684d54d1a4b0f9043f86b41476ae1d1b788a08","unresolved":false,"context_lines":[{"line_number":571,"context_line":"            dev_type\u003dos_vif_fields.VIFHostDeviceDevType.ETHERNET,"},{"line_number":572,"context_line":"            plugin\u003d\"ovs\","},{"line_number":573,"context_line":"            port_profile\u003dosv_objects.vif.VIFPortProfileOVSRepresentor("},{"line_number":574,"context_line":"                interface_id\u003d\"dc065497-3c8d-4f44-8fb4-e1d33c16a536\"),"},{"line_number":575,"context_line":"            has_traffic_filtering\u003dFalse,"},{"line_number":576,"context_line":"            preserve_on_delete\u003dFalse,"},{"line_number":577,"context_line":"            network\u003dosv_objects.network.Network("}],"source_content_type":"text/x-python","patch_set":26,"id":"ff346bd7_c5817cfd","line":574,"in_reply_to":"ff346bd7_854c9442","updated":"2017-07-26 13:55:53.000000000","message":"Yep, but it would be a stub. The ovsplugin in os-vif would just ignore it currently.","commit_id":"f6ec97de61e77d03ce071afeb32fdaa41ec94411"}],"nova/tests/unit/virt/libvirt/test_designer.py":[{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"d777eecdbc62da8ae7ecf8e51cddb3578a8fd071","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.assertEqual(\u0027fake-vlan\u0027, conf.vlan)"},{"line_number":150,"context_line":"        self.assertEqual(\u0027fake-tap\u0027, conf.target_dev)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def set_vif_host_backend_host_device(self):"},{"line_number":153,"context_line":"        conf \u003d config.LibvirtConfigGuestInterface()"},{"line_number":154,"context_line":"        designer.set_vif_host_backend_hw_veb(conf, \u0027hostdev\u0027,"},{"line_number":155,"context_line":"                                             \u0027fake-devname\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f1a1f67_396d3032","line":152,"updated":"2017-07-14 08:19:41.000000000","message":"If you use set_vif_host_backend_hw_veb, this is not needed.","commit_id":"b2b75fd64980b4464ddd6cc78f47235ef12ef339"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"16bc5186dad6ccaf24fbd8180832abc6701e0285","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.assertEqual(\u0027fake-vlan\u0027, conf.vlan)"},{"line_number":150,"context_line":"        self.assertEqual(\u0027fake-tap\u0027, conf.target_dev)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def set_vif_host_backend_host_device(self):"},{"line_number":153,"context_line":"        conf \u003d config.LibvirtConfigGuestInterface()"},{"line_number":154,"context_line":"        designer.set_vif_host_backend_hw_veb(conf, \u0027hostdev\u0027,"},{"line_number":155,"context_line":"                                             \u0027fake-devname\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f1a1f67_c0ae2697","line":152,"in_reply_to":"1f1a1f67_396d3032","updated":"2017-07-16 12:33:15.000000000","message":"and also I don\u0027t have a test_ prefix oops","commit_id":"b2b75fd64980b4464ddd6cc78f47235ef12ef339"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"0894e1b6a0cb9a42a2fdc32553dfdd31bc4a2ace","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        devname\u003d\u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":113,"context_line":"        ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    vif_ovs_direct \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":116,"context_line":"        address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":117,"context_line":"        network\u003dnetwork_ovs,"},{"line_number":118,"context_line":"        vnic_type\u003dnetwork_model.VNIC_TYPE_DIRECT,"},{"line_number":119,"context_line":"        profile\u003d{\u0027pci_slot\u0027: \u00270000:0a:00.1\u0027},"},{"line_number":120,"context_line":"        type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":121,"context_line":"        details\u003d{\u0027port_filter\u0027: False},"},{"line_number":122,"context_line":"        ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    vif_ovs_hybrid \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":125,"context_line":"        address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":126,"context_line":"        network\u003dnetwork_ovs,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff346bd7_f7cb761b","line":123,"range":{"start_line":115,"start_character":0,"end_line":123,"end_character":0},"updated":"2017-07-24 09:09:49.000000000","message":"Does this get called by a test later?","commit_id":"cefd3ca6a1f619b37bbade084b6329ff854863b4"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1c88d9daff7d60e39a2fedb331ac70b1a0aa94b0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        devname\u003d\u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":113,"context_line":"        ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    vif_ovs_direct \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":116,"context_line":"        address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":117,"context_line":"        network\u003dnetwork_ovs,"},{"line_number":118,"context_line":"        vnic_type\u003dnetwork_model.VNIC_TYPE_DIRECT,"},{"line_number":119,"context_line":"        profile\u003d{\u0027pci_slot\u0027: \u00270000:0a:00.1\u0027},"},{"line_number":120,"context_line":"        type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":121,"context_line":"        details\u003d{\u0027port_filter\u0027: False},"},{"line_number":122,"context_line":"        ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    vif_ovs_hybrid \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":125,"context_line":"        address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":126,"context_line":"        network\u003dnetwork_ovs,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff346bd7_5d9263f8","line":123,"range":{"start_line":115,"start_character":0,"end_line":123,"end_character":0},"in_reply_to":"ff346bd7_f7cb761b","updated":"2017-07-24 10:41:05.000000000","message":"Done","commit_id":"cefd3ca6a1f619b37bbade084b6329ff854863b4"}],"nova/virt/libvirt/designer.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"622fc0e44ce679e5da8d0f22109790464872c467","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def set_vif_host_backend_hw_veb(conf, net_type, devname, vlan\u003dNone,"},{"line_number":104,"context_line":"                                tapname\u003dNone):"},{"line_number":105,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":106,"context_line":"    with host backend details for an device that supports hardware"},{"line_number":107,"context_line":"    virtual ethernet bridge."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    conf.net_type \u003d net_type"},{"line_number":111,"context_line":"    if net_type \u003d\u003d \u0027direct\u0027:"},{"line_number":112,"context_line":"        conf.source_mode \u003d \u0027passthrough\u0027"},{"line_number":113,"context_line":"        conf.source_dev \u003d pci_utils.get_ifname_by_pci_address(devname)"},{"line_number":114,"context_line":"        conf.driver_name \u003d \u0027vhost\u0027"},{"line_number":115,"context_line":"    else:"},{"line_number":116,"context_line":"        conf.source_dev \u003d devname"},{"line_number":117,"context_line":"        conf.model \u003d None"},{"line_number":118,"context_line":"        if vlan:"},{"line_number":119,"context_line":"            conf.vlan \u003d vlan"},{"line_number":120,"context_line":"    if tapname:"},{"line_number":121,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def set_vif_host_backend_hostdev_pci_config(conf, pci_slot):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_123719b1","line":121,"range":{"start_line":103,"start_character":0,"end_line":121,"end_character":33},"updated":"2016-12-08 19:20:49.000000000","message":"this looks like a sperate change?","commit_id":"e88aebdd9ef606016a9fa1a0db496f1f86db56a8"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8fee46c3ce546c5247b7e2c5603c26467b0ad051","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def set_vif_host_backend_hw_veb(conf, net_type, devname, vlan\u003dNone,"},{"line_number":104,"context_line":"                                tapname\u003dNone):"},{"line_number":105,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":106,"context_line":"    with host backend details for an device that supports hardware"},{"line_number":107,"context_line":"    virtual ethernet bridge."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    conf.net_type \u003d net_type"},{"line_number":111,"context_line":"    if net_type \u003d\u003d \u0027direct\u0027:"},{"line_number":112,"context_line":"        conf.source_mode \u003d \u0027passthrough\u0027"},{"line_number":113,"context_line":"        conf.source_dev \u003d pci_utils.get_ifname_by_pci_address(devname)"},{"line_number":114,"context_line":"        conf.driver_name \u003d \u0027vhost\u0027"},{"line_number":115,"context_line":"    else:"},{"line_number":116,"context_line":"        conf.source_dev \u003d devname"},{"line_number":117,"context_line":"        conf.model \u003d None"},{"line_number":118,"context_line":"        if vlan:"},{"line_number":119,"context_line":"            conf.vlan \u003d vlan"},{"line_number":120,"context_line":"    if tapname:"},{"line_number":121,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def set_vif_host_backend_hostdev_pci_config(conf, pci_slot):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_5d8ebad0","line":121,"range":{"start_line":103,"start_character":0,"end_line":121,"end_character":33},"in_reply_to":"3a71b18c_123719b1","updated":"2016-12-11 11:52:44.000000000","message":"yes, I will split it after I finish my POC","commit_id":"e88aebdd9ef606016a9fa1a0db496f1f86db56a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb7ce585fd8e686ae251bae0827490e878e52136","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        conf.target_dev \u003d tapname"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def set_vif_host_backend_host_device(conf, devname):"},{"line_number":123,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":124,"context_line":"    with host backend details for an device that supports hardware"},{"line_number":125,"context_line":"    virtual ethernet bridge."},{"line_number":126,"context_line":"    \"\"\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    conf.net_type \u003d \u0027hostdev\u0027"},{"line_number":129,"context_line":"    conf.source_dev \u003d devname"},{"line_number":130,"context_line":"    conf.model \u003d None"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def set_vif_host_backend_hostdev_pci_config(conf, pci_slot):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_2515f44a","line":130,"range":{"start_line":122,"start_character":0,"end_line":130,"end_character":21},"updated":"2017-03-27 11:33:40.000000000","message":"this makes sense but i also know that people wanted to get rid of the designer class.\n\nmatt is this still the case or should we contiue to extend it?","commit_id":"b250b130e73fe394571952f3255343746c263fe2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d2ba7ae5fec79ceb6a32219f6ebd124c2130ed93","unresolved":false,"context_lines":[{"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 an device that supports hardware"},{"line_number":136,"context_line":"    virtual ethernet bridge."},{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_f8238dbd","line":135,"updated":"2017-07-03 19:56:58.000000000","message":"s/an/a/","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"dfae2614c639ecc41b796db5a28c109927dca425","unresolved":false,"context_lines":[{"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 an device that supports hardware"},{"line_number":136,"context_line":"    virtual ethernet bridge."},{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3f1d235d_b9c913ad","line":135,"in_reply_to":"5f201791_f8238dbd","updated":"2017-07-04 14:25:35.000000000","message":"Done","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d2ba7ae5fec79ceb6a32219f6ebd124c2130ed93","unresolved":false,"context_lines":[{"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 an device that supports hardware"},{"line_number":136,"context_line":"    virtual ethernet bridge."},{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    conf.net_type \u003d \u0027hostdev\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_7b2777b8","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":28},"updated":"2017-07-03 19:56:58.000000000","message":"copy/paste from above?","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"dfae2614c639ecc41b796db5a28c109927dca425","unresolved":false,"context_lines":[{"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 an device that supports hardware"},{"line_number":136,"context_line":"    virtual ethernet bridge."},{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    conf.net_type \u003d \u0027hostdev\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f1d235d_19e1272b","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":28},"in_reply_to":"5f201791_7b2777b8","updated":"2017-07-04 14:25:35.000000000","message":"Done","commit_id":"d21fdb4f7871d173a6b17e7b5b37cc60bdb634de"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"d777eecdbc62da8ae7ecf8e51cddb3578a8fd071","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":16,"id":"1f1a1f67_19239407","line":133,"updated":"2017-07-14 08:19:41.000000000","message":"Hi, sean-k-mooney pointed out there\u0027s already a function in the designer for this. You won\u0027t need this function.","commit_id":"b2b75fd64980b4464ddd6cc78f47235ef12ef339"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"d777eecdbc62da8ae7ecf8e51cddb3578a8fd071","unresolved":false,"context_lines":[{"line_number":470,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def _set_config_VIFHostDevice(self, instance, vif, conf, host\u003dNone):"},{"line_number":473,"context_line":"        designer.set_vif_host_backend_host_device(conf, vif.dev_address)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def _set_config_VIFPortProfileOpenVSwitch(self, profile, conf):"},{"line_number":476,"context_line":"        conf.vporttype \u003d \"openvswitch\""}],"source_content_type":"text/x-python","patch_set":16,"id":"1f1a1f67_f948d8cc","line":473,"range":{"start_line":473,"start_character":8,"end_line":473,"end_character":72},"updated":"2017-07-14 08:19:41.000000000","message":"Hi, sean-k-mooney pointed out there\u0027s already a function in the designer for this. Have a look at:\n\nhttps://review.openstack.org/#/c/483459/2/nova/virt/libvirt/vif.py\n\ndesigner.set_vif_host_backend_hw_veb(conf,\u0027hostdev\u0027,vif.dev_address,None) should do the trick","commit_id":"b2b75fd64980b4464ddd6cc78f47235ef12ef339"}],"releasenotes/notes/sriov-ovs-offload-1c3fe79e847f8c8f.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In other to use this ovs accelarion mode ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows to control"},{"line_number":7,"context_line":"    the SR-IOV VF via OpenFlow control plane and gain accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ff346bd7_bbcd4932","line":5,"range":{"start_line":5,"start_character":25,"end_line":5,"end_character":28},"updated":"2017-07-27 17:18:06.000000000","message":"OVS","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In other to use this ovs accelarion mode ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows to control"},{"line_number":7,"context_line":"    the SR-IOV VF via OpenFlow control plane and gain accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ff346bd7_fb4991b6","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":39},"updated":"2017-07-27 17:18:06.000000000","message":"acceleration","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In other to use this ovs accelarion mode ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows to control"},{"line_number":7,"context_line":"    the SR-IOV VF via OpenFlow control plane and gain accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ff346bd7_7bd361d6","line":5,"range":{"start_line":5,"start_character":40,"end_line":5,"end_character":44},"updated":"2017-07-27 17:18:06.000000000","message":"mode,","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In other to use this ovs accelarion mode ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows to control"},{"line_number":7,"context_line":"    the SR-IOV VF via OpenFlow control plane and gain accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ff346bd7_3b54b952","line":5,"range":{"start_line":5,"start_character":7,"end_line":5,"end_character":12},"updated":"2017-07-27 17:18:06.000000000","message":"order","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In other to use this ovs accelarion mode ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows to control"},{"line_number":7,"context_line":"    the SR-IOV VF via OpenFlow control plane and gain accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ff346bd7_5b053d45","line":7,"range":{"start_line":7,"start_character":15,"end_line":7,"end_character":17},"updated":"2017-07-27 17:18:06.000000000","message":"a Virtual Function (VF)","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"697c18b04ba65397267ac715c467d598a2d9bbfc","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In other to use this ovs accelarion mode ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows to control"},{"line_number":7,"context_line":"    the SR-IOV VF via OpenFlow control plane and gain accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ff346bd7_fbde31d8","line":7,"range":{"start_line":6,"start_character":61,"end_line":7,"end_character":7},"updated":"2017-07-27 17:18:06.000000000","message":"control of","commit_id":"a40dd185d648d774a0b8be1278b318f0c081d20c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ea3cc92a6fe14e4ae21fbaac1dc5acc1a1f5e810","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In order to use this OVS acceleration mode, ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows control of"},{"line_number":7,"context_line":"    an SR-IOV virtual function (VF) via OpenFlow control plane and gain"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"ff346bd7_15f52bed","line":4,"updated":"2017-07-28 07:18:22.000000000","message":"Since you are using the same logic of VNIC_TYPE_DIRECT.\n\nYou should explain the limitations that we do not make difference between SRIOV hardware and OVS offloaded so operators can\u0027t use both on a same host.\n\nAlso that they should use host aggregates to ensure that they can schedule instances on specifics host based on hardware.\n\nFinally you should explain that this feature needs extra work: enable-sriov-nic-features.","commit_id":"a4fd062535aaaf87b589d37caaffeee7ce8f65ea"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1fdb8c5cdf4bbb5dc2577edc77dd8506e8f12ff9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In order to use this OVS acceleration mode, ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows control of"},{"line_number":7,"context_line":"    an SR-IOV virtual function (VF) via OpenFlow control plane and gain"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"df3967d1_523ed729","line":4,"in_reply_to":"ff346bd7_15f52bed","updated":"2017-07-31 06:23:59.000000000","message":"Done","commit_id":"a4fd062535aaaf87b589d37caaffeee7ce8f65ea"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"913ce7b3878511c9f02488650ce1ce35268b0423","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds support to OVS vif type with direct port (SR-IOV)."},{"line_number":5,"context_line":"    In order to use this OVS acceleration mode, ``openvswitch`` 2.8.0"},{"line_number":6,"context_line":"    and \u0027Linux Kernel\u0027 4.8 are required. This feature allows control of"},{"line_number":7,"context_line":"    an SR-IOV virtual function (VF) via OpenFlow control plane and gain"},{"line_number":8,"context_line":"    accelerated \u0027Open vSwitch\u0027."}],"source_content_type":"text/x-yaml","patch_set":32,"id":"ff346bd7_fba51148","line":8,"range":{"start_line":7,"start_character":63,"end_line":8,"end_character":31},"updated":"2017-07-27 17:19:59.000000000","message":"I\u0027m not sure what this means, so I left it alone.","commit_id":"a4fd062535aaaf87b589d37caaffeee7ce8f65ea"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"050cc3f976ea445364cb99be9c35197831334b5f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    improved performance of \u0027Open vSwitch\u0027. Please note that in Pike"},{"line_number":9,"context_line":"    release we can\u0027t differentiate between SR-IOV hardware and OVS offloaded"},{"line_number":10,"context_line":"    on the same host. This limitation should be resolved when the"},{"line_number":11,"context_line":"    enable-sriov-nic-features will be completed in Queen."},{"line_number":12,"context_line":"    Till then operator can use host aggregates to ensure that they can"},{"line_number":13,"context_line":"    schedule instances on specifics host based on hardware."}],"source_content_type":"text/x-yaml","patch_set":33,"id":"df3967d1_3d35e48f","line":11,"range":{"start_line":11,"start_character":51,"end_line":11,"end_character":56},"updated":"2017-08-03 13:30:06.000000000","message":"Queens\n\nI\u0027d probably just remove the specific release target though since we don\u0027t know when the feature will land.","commit_id":"f0868530669f48f9cc11d889306359e1824da4a5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"050cc3f976ea445364cb99be9c35197831334b5f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    release we can\u0027t differentiate between SR-IOV hardware and OVS offloaded"},{"line_number":10,"context_line":"    on the same host. This limitation should be resolved when the"},{"line_number":11,"context_line":"    enable-sriov-nic-features will be completed in Queen."},{"line_number":12,"context_line":"    Till then operator can use host aggregates to ensure that they can"},{"line_number":13,"context_line":"    schedule instances on specifics host based on hardware."}],"source_content_type":"text/x-yaml","patch_set":33,"id":"df3967d1_1d26a069","line":12,"range":{"start_line":12,"start_character":4,"end_line":12,"end_character":8},"updated":"2017-08-03 13:30:06.000000000","message":"Until","commit_id":"f0868530669f48f9cc11d889306359e1824da4a5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"050cc3f976ea445364cb99be9c35197831334b5f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    release we can\u0027t differentiate between SR-IOV hardware and OVS offloaded"},{"line_number":10,"context_line":"    on the same host. This limitation should be resolved when the"},{"line_number":11,"context_line":"    enable-sriov-nic-features will be completed in Queen."},{"line_number":12,"context_line":"    Till then operator can use host aggregates to ensure that they can"},{"line_number":13,"context_line":"    schedule instances on specifics host based on hardware."}],"source_content_type":"text/x-yaml","patch_set":33,"id":"df3967d1_fd2abc29","line":12,"range":{"start_line":12,"start_character":14,"end_line":12,"end_character":22},"updated":"2017-08-03 13:30:06.000000000","message":"operators","commit_id":"f0868530669f48f9cc11d889306359e1824da4a5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"050cc3f976ea445364cb99be9c35197831334b5f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    on the same host. This limitation should be resolved when the"},{"line_number":11,"context_line":"    enable-sriov-nic-features will be completed in Queen."},{"line_number":12,"context_line":"    Till then operator can use host aggregates to ensure that they can"},{"line_number":13,"context_line":"    schedule instances on specifics host based on hardware."}],"source_content_type":"text/x-yaml","patch_set":33,"id":"df3967d1_bd20b449","line":13,"range":{"start_line":13,"start_character":26,"end_line":13,"end_character":40},"updated":"2017-08-03 13:30:06.000000000","message":"specific hosts","commit_id":"f0868530669f48f9cc11d889306359e1824da4a5"}]}
