)]}'
{"specs/liberty/approved/libvirt-sriov-nic-bonding.rst":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"469b9dc5a3936d792ac7139287a00514fa2acdc8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-sriov-nic-bonding"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In certain scenarios an additional HA for networking might be required"},{"line_number":15,"context_line":"for a guest that could be achieved by bonding NIC inside of a guest."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a0c5dc1_4a6d4197","line":12,"updated":"2015-05-13 16:40:16.000000000","message":"if the bonding inside the guest why the spec is start with libvirt","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7654d7891bd919b977ff598e382dfbfacc578faf","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-sriov-nic-bonding"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In certain scenarios an additional HA for networking might be required"},{"line_number":15,"context_line":"for a guest that could be achieved by bonding NIC inside of a guest."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_605bce55","line":12,"in_reply_to":"9a0c5dc1_4a6d4197","updated":"2015-05-14 04:40:23.000000000","message":"That was some old blueprint the previous version of this spec for Kilo referred to. I\u0027ll create a new one I guess.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"469b9dc5a3936d792ac7139287a00514fa2acdc8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There\u0027s a proposal suggested to distribute VF allocation:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it still gives no control to user and is just a best-effort attempt"},{"line_number":36,"context_line":"to allocate VFs in an optimal way."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a0c5dc1_ea34f5fb","line":34,"updated":"2015-05-13 16:40:16.000000000","message":"maybe we should combine both proposals to one,\nwhere the user can choose if he want it as best effort or specify user specifying the specific VFs to use.\n\nmaybe we should define a \"best_effort\" group and all the ports in that group will behave like in  distribute VF allocation blueprint.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7654d7891bd919b977ff598e382dfbfacc578faf","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There\u0027s a proposal suggested to distribute VF allocation:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it still gives no control to user and is just a best-effort attempt"},{"line_number":36,"context_line":"to allocate VFs in an optimal way."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_8025aac3","line":34,"in_reply_to":"9a0c5dc1_ea34f5fb","updated":"2015-05-14 04:40:23.000000000","message":"I have no problems with that.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"469b9dc5a3936d792ac7139287a00514fa2acdc8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"network to a guest and building a bond on top of these interfaces."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"However, in current scenario, where user cannot control VF placement, he"},{"line_number":47,"context_line":"can create 4 ports (2 networks with 2 ports per network in a guest),"},{"line_number":48,"context_line":"however, there\u0027s no guarantee that ports for the same network will be"},{"line_number":49,"context_line":"allocated on different PFs. And in case if they\u0027re allocated on the same"},{"line_number":50,"context_line":"PF it makes bonding not very useful."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a0c5dc1_d502f208","line":47,"updated":"2015-05-13 16:40:16.000000000","message":"I think I tired to create vm  with 2 port on the same network but neutron doesn\u0027t allow it. Did it worked for you?","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7654d7891bd919b977ff598e382dfbfacc578faf","unresolved":false,"context_lines":[{"line_number":44,"context_line":"network to a guest and building a bond on top of these interfaces."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"However, in current scenario, where user cannot control VF placement, he"},{"line_number":47,"context_line":"can create 4 ports (2 networks with 2 ports per network in a guest),"},{"line_number":48,"context_line":"however, there\u0027s no guarantee that ports for the same network will be"},{"line_number":49,"context_line":"allocated on different PFs. And in case if they\u0027re allocated on the same"},{"line_number":50,"context_line":"PF it makes bonding not very useful."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_40069221","line":47,"in_reply_to":"9a0c5dc1_d502f208","updated":"2015-05-14 04:40:23.000000000","message":"Yes, it works for me. It requires the following setting in Nova configuration: \u0027neutron.allow_duplicate_networks \u003d True\u0027.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"469b9dc5a3936d792ac7139287a00514fa2acdc8","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The main steps would be:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":" * Add \u0027bindings:dev_group\u0027 attribute for Neutron ports. It would be"},{"line_number":63,"context_line":"   an arbitrary string with name of a device group. Devices in the"},{"line_number":64,"context_line":"   same group will have to be allocated on different PFs. Scope of"},{"line_number":65,"context_line":"   a device_group is a single guest."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a0c5dc1_5564c2e3","line":62,"updated":"2015-05-13 16:40:16.000000000","message":"\u0027bindings:dev_group\u0027 attribute  is going to be only for port of vnic_type direct right?","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7654d7891bd919b977ff598e382dfbfacc578faf","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The main steps would be:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":" * Add \u0027bindings:dev_group\u0027 attribute for Neutron ports. It would be"},{"line_number":63,"context_line":"   an arbitrary string with name of a device group. Devices in the"},{"line_number":64,"context_line":"   same group will have to be allocated on different PFs. Scope of"},{"line_number":65,"context_line":"   a device_group is a single guest."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_20039611","line":62,"in_reply_to":"9a0c5dc1_5564c2e3","updated":"2015-05-14 04:40:23.000000000","message":"Yes, that\u0027s right.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"469b9dc5a3936d792ac7139287a00514fa2acdc8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Alternatives"},{"line_number":85,"context_line":"------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"All the other ways of achieving the specified goals that were found"},{"line_number":88,"context_line":"either introduce API changes and/or data model changes or do not preserve"},{"line_number":89,"context_line":"backward capability."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a0c5dc1_f55e16e8","line":87,"updated":"2015-05-13 16:40:16.000000000","message":"can you specific what are  the other ways?","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7654d7891bd919b977ff598e382dfbfacc578faf","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Alternatives"},{"line_number":85,"context_line":"------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"All the other ways of achieving the specified goals that were found"},{"line_number":88,"context_line":"either introduce API changes and/or data model changes or do not preserve"},{"line_number":89,"context_line":"backward capability."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_db03970c","line":87,"in_reply_to":"9a0c5dc1_f55e16e8","updated":"2015-05-14 04:40:23.000000000","message":"The other way is basically not to change Neutron and store everything on the Nova side. I\u0027ll update the spec.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"469b9dc5a3936d792ac7139287a00514fa2acdc8","unresolved":false,"context_lines":[{"line_number":174,"context_line":"* Previous change request: https://review.openstack.org/#/c/151260/1"},{"line_number":175,"context_line":"* Distribute PCI Requests Across Multiple Devices:"},{"line_number":176,"context_line":"  https://review.openstack.org/#/c/142094/"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"History"},{"line_number":179,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a0c5dc1_7596a64d","line":177,"updated":"2015-05-13 16:40:16.000000000","message":"can you add reference the neutron side blueprint?","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7654d7891bd919b977ff598e382dfbfacc578faf","unresolved":false,"context_lines":[{"line_number":174,"context_line":"* Previous change request: https://review.openstack.org/#/c/151260/1"},{"line_number":175,"context_line":"* Distribute PCI Requests Across Multiple Devices:"},{"line_number":176,"context_line":"  https://review.openstack.org/#/c/142094/"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"History"},{"line_number":179,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_3b1d0b67","line":177,"in_reply_to":"9a0c5dc1_7596a64d","updated":"2015-05-14 04:40:23.000000000","message":"I haven\u0027t create a neutron side blueprint yet. Could you please suggest how it should look like? For neutron it\u0027s mostly a mechanical change of adding of a new attribute.","commit_id":"4d36bdd0b9580ad65ccab2961c533b741cd75dba"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"56527891d083700b053caeea7ebae3e4c749bc45","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/user-controlled-sriov-ports-allocation"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In certain scenarios an additional HA for networking might be required"},{"line_number":15,"context_line":"for a guest that could be achieved by bonding NIC inside of a guest."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a016987_43b68e3e","line":12,"updated":"2015-05-14 12:50:32.000000000","message":"can you update the filename to be user-controlled-sriov-ports-allocation.rst instead of libvirt-sriov-nic-bonding.rst","commit_id":"38cd71e4ab9648f66424e596a937a95f7ec9edc9"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"0c8b85aa5356be0c0559abf81facdbe46f322447","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/user-controlled-sriov-ports-allocation"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In certain scenarios an additional HA for networking might be required"},{"line_number":15,"context_line":"for a guest that could be achieved by bonding NIC inside of a guest."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a016987_ff904e97","line":12,"in_reply_to":"7a016987_43b68e3e","updated":"2015-05-15 07:01:38.000000000","message":"Done","commit_id":"38cd71e4ab9648f66424e596a937a95f7ec9edc9"}],"specs/liberty/approved/user-controlled-sriov-ports-allocation.rst":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"11a86748aaf144b69a7d14a41792aa4c606cb89d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it still gives no control to user and is just a best-effort attempt"},{"line_number":36,"context_line":"to allocate VFs in an optimal way."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"},{"line_number":39,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_d5c8aa24","line":36,"updated":"2015-05-17 00:34:16.000000000","message":"Technically, the other spec does not describe a \"best-effort attempt\". It actually indicates that there will be a failure to schedule if two separate PFs do not have available VFs:\n\n\"This  implementation supports failure if the only available virtual functions are on the same physical function.\"\n\nSo, while it is true that the other spec intentionally does not allow the user any control over placement, it is not true that the other spec describes a best-effort placement attempt.","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2a576d51d2db514ac2efb100216af5d009bfd36a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it still gives no control to user and is just a best-effort attempt"},{"line_number":36,"context_line":"to allocate VFs in an optimal way."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"},{"line_number":39,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_6b19f1d6","line":36,"in_reply_to":"7a016987_d5c8aa24","updated":"2015-05-19 12:14:17.000000000","message":"It\u0027s not quite clear what does \u0027supports\u0027 mean in this case? Will it fail or it just _could_ fail?","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"11a86748aaf144b69a7d14a41792aa4c606cb89d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":71,"context_line":"   For example, it could hold a JSON with group description, e.g.:"},{"line_number":72,"context_line":"   {\"name\": \"dev_group1\", \"policy\": \"affinity\"}"},{"line_number":73,"context_line":"   to give even more control."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":" * Nova modification to obtain the device group information from Neutron"},{"line_number":76,"context_line":"   for SRIOV ports and allocate VFs accordingly."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_75ec568f","line":73,"updated":"2015-05-17 00:34:16.000000000","message":"So, this is a Neutron change, right? Or is this both a Neutron change -- to add the bindings:dev_group key to the bindings: settable information -- as well as a Nova change -- to have Nova inject dev_group information into the bindings: information during network allocation steps in the Nova compute manager?","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2a576d51d2db514ac2efb100216af5d009bfd36a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":71,"context_line":"   For example, it could hold a JSON with group description, e.g.:"},{"line_number":72,"context_line":"   {\"name\": \"dev_group1\", \"policy\": \"affinity\"}"},{"line_number":73,"context_line":"   to give even more control."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":" * Nova modification to obtain the device group information from Neutron"},{"line_number":76,"context_line":"   for SRIOV ports and allocate VFs accordingly."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_6b80d1c0","line":73,"in_reply_to":"7a016987_75ec568f","updated":"2015-05-19 12:14:17.000000000","message":"The latter: both Neutron and Nova.","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"11a86748aaf144b69a7d14a41792aa4c606cb89d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   to give even more control."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":" * Nova modification to obtain the device group information from Neutron"},{"line_number":76,"context_line":"   for SRIOV ports and allocate VFs accordingly."},{"line_number":77,"context_line":" * Nova-scheduler needs to be modified to properly calculate required"},{"line_number":78,"context_line":"   number of PCI devices for a given request. For example, if we have"},{"line_number":79,"context_line":"   two sriov ports requested for a guest, we just check if we have 2 VFs"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_55795ac7","line":76,"updated":"2015-05-17 00:34:16.000000000","message":"Instead of Nova storing any device group information at all in Neutron, why not just store information in the Nova database -- in the instances table\u0027s pci_stats field -- that indicates that the user has requested a particular bonding topology for the set of ports plugged into the instance? I\u0027m a little unsure why Neutron needs to know this information at all?","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2a576d51d2db514ac2efb100216af5d009bfd36a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   to give even more control."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":" * Nova modification to obtain the device group information from Neutron"},{"line_number":76,"context_line":"   for SRIOV ports and allocate VFs accordingly."},{"line_number":77,"context_line":" * Nova-scheduler needs to be modified to properly calculate required"},{"line_number":78,"context_line":"   number of PCI devices for a given request. For example, if we have"},{"line_number":79,"context_line":"   two sriov ports requested for a guest, we just check if we have 2 VFs"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_13b2b34c","line":76,"in_reply_to":"7a016987_55795ac7","updated":"2015-05-19 12:14:17.000000000","message":"I guess you\u0027re right. That\u0027ll also free us from transfering this additional data (group information) back and forth.","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"11a86748aaf144b69a7d14a41792aa4c606cb89d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"An alternative approach would be to store all the necessary information"},{"line_number":91,"context_line":"on the Nova side. However, that would involve more serior data model changes"},{"line_number":92,"context_line":"in Nova, as well as Compute API changes, that doesn\u0027t look like an optimal"},{"line_number":93,"context_line":"solution."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Data model impact"},{"line_number":96,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_35749ecd","line":93,"updated":"2015-05-17 00:34:16.000000000","message":"Ah... :) I actually think this would be the better solution!","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2a576d51d2db514ac2efb100216af5d009bfd36a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"An alternative approach would be to store all the necessary information"},{"line_number":91,"context_line":"on the Nova side. However, that would involve more serior data model changes"},{"line_number":92,"context_line":"in Nova, as well as Compute API changes, that doesn\u0027t look like an optimal"},{"line_number":93,"context_line":"solution."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Data model impact"},{"line_number":96,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a016987_7389e774","line":93,"in_reply_to":"7a016987_35749ecd","updated":"2015-05-19 12:14:17.000000000","message":"OK, I\u0027ll re-roll the spec to make it propose Nova-only solution and leave the current one as alternative.","commit_id":"76d238ee7454f25ad70c0ae7510353619c59ef3c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"643f89e06db993baae28ccc4b9ca291459b6898f","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it doesn\u0027t imply user-controlled VF placement."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_c544831c","line":35,"updated":"2015-06-08 12:25:17.000000000","message":"Please describe why you need user-controlled placement.\n\nCan\u0027t we just assume that when you request multiple networks you want anti-affinity?","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"32ae780b15c3e15f7ad631871ffd5f4a63120893","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it doesn\u0027t imply user-controlled VF placement."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_38b118e2","line":35,"in_reply_to":"3afb71cf_c544831c","updated":"2015-06-09 05:40:22.000000000","message":"The primary reason is to be able to have a scenario described in the \u0027Use Cases\u0027 section beyond.\n\nFor multiple (different) networks we can get VF distributed for free, by just using proper configuration of pci_passtrhough_whitelist, providing appropriate \u0027physical_network\u0027 values for the entries:\n\nhttps://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking#nova-compute\n\nIf we\u0027re talking about multiple network interfaces on the same network, I\u0027m not sure we should drop support of having multiple VFs on the same PF attached to a single guest.","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"643f89e06db993baae28ccc4b9ca291459b6898f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"   with 2 PFs that have at least 1 VF available."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"In case when device group is not specified the default behavior doesn\u0027t"},{"line_number":85,"context_line":"change."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Alternatives"},{"line_number":88,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_65bf0ffc","line":85,"updated":"2015-06-08 12:25:17.000000000","message":"Can\u0027t we simply assume that any request for multiple networks has this requirements, being spread between the physical interfaces?\n\nI think thats what is talked about here:\nhttps://review.openstack.org/#/c/142094/4/specs/liberty/approved/distribute-pci-allocations.rst,cm","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"32ae780b15c3e15f7ad631871ffd5f4a63120893","unresolved":false,"context_lines":[{"line_number":82,"context_line":"   with 2 PFs that have at least 1 VF available."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"In case when device group is not specified the default behavior doesn\u0027t"},{"line_number":85,"context_line":"change."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Alternatives"},{"line_number":88,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_f8d260ff","line":85,"in_reply_to":"3afb71cf_65bf0ffc","updated":"2015-06-09 05:40:22.000000000","message":"Please check my comment above about this assumption.","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"643f89e06db993baae28ccc4b9ca291459b6898f","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"An alternative approach would be to store all the necessary information"},{"line_number":91,"context_line":"on the Neutron side, i.e. introducing a new portbinding attribute and"},{"line_number":92,"context_line":"fetch this information from Nova."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Data model impact"},{"line_number":95,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_c5f6c3f8","line":92,"updated":"2015-06-08 12:25:17.000000000","message":"What is missing from this approach, that needs the user to tell Nova whats happening?\nhttps://review.openstack.org/#/c/142094/4/specs/liberty/approved/distribute-pci-allocations.rst,cm","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"32ae780b15c3e15f7ad631871ffd5f4a63120893","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"An alternative approach would be to store all the necessary information"},{"line_number":91,"context_line":"on the Neutron side, i.e. introducing a new portbinding attribute and"},{"line_number":92,"context_line":"fetch this information from Nova."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Data model impact"},{"line_number":95,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_984a4cab","line":92,"in_reply_to":"3afb71cf_c5f6c3f8","updated":"2015-06-09 05:40:22.000000000","message":"Sorry, I\u0027m afraid I don\u0027t quite get the question, could you please rephrase?\n\nBy the way, the original version of this spec used this \u0027alternative\u0027 approach as the main one, so you might check the earlier discussions for more details on that.","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"643f89e06db993baae28ccc4b9ca291459b6898f","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Items of the \u0027networks\u0027 list of the \u0027server\u0027 object will have a new optional"},{"line_number":104,"context_line":"field to store device group name."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Security impact"},{"line_number":107,"context_line":"---------------"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_05edfb24","line":105,"updated":"2015-06-08 12:25:17.000000000","message":"You need a lot more detail here, please make a note of whats discussed in the template document. We really need to see the update JSON schema for this request, or at least point out the addition.\n\nIt would be good to include some examples, and why its useful.\n\nFor a relavant example, please see the discussion here:\nhttps://review.openstack.org/#/c/169638/9/specs/liberty/approved/selecting-subnet-when-creating-vm.rst,cm","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"32ae780b15c3e15f7ad631871ffd5f4a63120893","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Items of the \u0027networks\u0027 list of the \u0027server\u0027 object will have a new optional"},{"line_number":104,"context_line":"field to store device group name."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Security impact"},{"line_number":107,"context_line":"---------------"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_38d238d3","line":105,"in_reply_to":"3afb71cf_05edfb24","updated":"2015-06-09 05:40:22.000000000","message":"Thanks, I\u0027ll address that in the next version of this change.","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"69237cf37b61609dbcbca4c55efb453c29391beb","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Dependencies"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Testing"},{"line_number":162,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_f24aa682","line":159,"updated":"2015-06-08 11:05:46.000000000","message":"Please can you depend on this change, it would be great to see this simplification go in first:\nhttps://review.openstack.org/#/c/169638/9/specs/liberty/approved/selecting-subnet-when-creating-vm.rst,cm","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"32ae780b15c3e15f7ad631871ffd5f4a63120893","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Dependencies"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Testing"},{"line_number":162,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_b8e628b2","line":159,"in_reply_to":"3afb71cf_254eb76f","updated":"2015-06-09 05:40:22.000000000","message":"Will do.","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"643f89e06db993baae28ccc4b9ca291459b6898f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Dependencies"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Testing"},{"line_number":162,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_254eb76f","line":159,"in_reply_to":"3afb71cf_f24aa682","updated":"2015-06-08 12:25:17.000000000","message":"Also it feels like you should depend on this other change you are talking about, as well:\nhttps://review.openstack.org/#/c/142094/4/specs/liberty/approved/distribute-pci-allocations.rst,cm","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"32ae780b15c3e15f7ad631871ffd5f4a63120893","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Dependencies"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Testing"},{"line_number":162,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_f8dca0e5","line":159,"in_reply_to":"3afb71cf_f24aa682","updated":"2015-06-09 05:40:22.000000000","message":"Will do.","commit_id":"19a3379321dd4d3c0231b585b22b7f5e6db4a944"}],"specs/mitaka/approved/user-controlled-sriov-ports-allocation.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https://review.openstack.org/#/c/142094/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"However, it doesn\u0027t imply user-controlled VF placement."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_943607b3","line":35,"updated":"2015-10-13 09:36:42.000000000","message":"From the given use cases, I don\u0027t see a distinct case where we can\u0027t just distribute the VF allocation by default.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":55,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":56,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 alice"},{"line_number":57,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 alice"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Now user can boot a VM this way::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_1989d2ca","line":56,"updated":"2015-10-13 09:36:42.000000000","message":"Do you mean bob here?","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"d18fa4dc485e1e136b44a7fdf4e28b6ed29db100","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":55,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":56,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 alice"},{"line_number":57,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 alice"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Now user can boot a VM this way::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_09c1b9e4","line":56,"in_reply_to":"7a2fa921_1989d2ca","updated":"2015-10-13 11:58:42.000000000","message":"Done","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":55,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":56,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 alice"},{"line_number":57,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 alice"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Now user can boot a VM this way::"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_941127b2","line":57,"updated":"2015-10-13 09:36:42.000000000","message":"I think a better approach is for neutron to model a bonded nic, where you add two nics into a bond.\n\nWe could then use that in Nova as the user requesting we must spread their nics across PFs, rather than just a best effort approach (i.e. no error out if there is only one PF for a particular network, etc).","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Now user can boot a VM this way::"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    nova boot --nic port-id\u003da0,alice_group \\"},{"line_number":62,"context_line":"              --nic port-id\u003da1,alice_group \\"},{"line_number":63,"context_line":"              --nic port-id\u003db0,bob_group \\"},{"line_number":64,"context_line":"              --nic port-id\u003db1,bob_group"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_f9a65652","line":61,"updated":"2015-10-13 09:36:42.000000000","message":"why do we need the group here, the port already has details about the requested network?","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"d18fa4dc485e1e136b44a7fdf4e28b6ed29db100","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Now user can boot a VM this way::"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    nova boot --nic port-id\u003da0,alice_group \\"},{"line_number":62,"context_line":"              --nic port-id\u003da1,alice_group \\"},{"line_number":63,"context_line":"              --nic port-id\u003db0,bob_group \\"},{"line_number":64,"context_line":"              --nic port-id\u003db1,bob_group"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_1e2b2c84","line":61,"in_reply_to":"7a2fa921_f9a65652","updated":"2015-10-13 11:58:42.000000000","message":"Here, group is used just as an instruction that distribution of the given ports is a MUST, so if the ports cannot be distributed (for example because we don\u0027t have hosts with enough PF), VM should fail to start.\n\nHowever, in this example it feels like some sort of a flag \u0027distribute_required\u0027 would be enough. But consider one more example:\n\nSuppose we want to construct 2 bonds in a VM, both bonds are from the same physical network. In this case it would be enough 4 VFs from 2 PFs on the host. We\u0027ll also need to to distinguish the interfaces inside of the VM somehow in order not to end up with bonds build of interfaces from the same PF.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":67,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":68,"context_line":"PFs."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"This results in the following PCI request requirements:"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_3974cecd","line":68,"updated":"2015-10-13 09:36:42.000000000","message":"I think we should just assume this for all requests for multiple ports.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d8fb39969de41431b473f88b8318c687ff8a12ca","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":67,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":68,"context_line":"PFs."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"This results in the following PCI request requirements:"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_9e566105","line":68,"in_reply_to":"7a2fa921_3974cecd","updated":"2015-10-13 11:24:01.000000000","message":"\u003e I think we should just assume this for all requests for multiple ports.\n\nSo this is a thing I complained about on https://review.openstack.org/#/c/142094/5/specs/liberty/approved/distribute-pci-allocations.rst - I don\u0027t think this is a good default because it will make testing needlessly difficult.\n\nFurther to that - I think that implicit random flags like this in the API are not a good way forward (although I understand the need to get stuff done).\n\nWhat we really should be designing is a way for neutron to expose to Nova data about different ports, which Nova can match to actual PCIDevices and expose in pools, and make scheduling decisions based on. Currently this is done by adding freeform \"tags\" to a whitelist in the nova.conf, which then match arbitrary values set on the network or potentially port (we actually don\u0027t have a way to expose any port data for scheduling purposes, only for provisioning). This is not exactly user friendly or even sensible.\n\nNow I am not saying that we have to do all the work before this spec is allowed to continue, but we should have this conversation soon IMHO, as Nova could schedule based on a number things not only \"device_groups\".","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"and user could pass interfaces information through metadata to be able"},{"line_number":78,"context_line":"to differentiate NICs inside of the VM and configure bonds accordingly."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"If there are no hosts that meet this requirement, then user gets an error."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Note: multiple ports for network could be created after setting Nova\u0027s"},{"line_number":83,"context_line":"config option \u0027allow_duplicate_networks\u0027 to \u0027True\u0027."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_d4331ff5","line":80,"updated":"2015-10-13 09:36:42.000000000","message":"Now if we assume all requests for mutliple ports are spread accross PFs, this bit gets harder to do. What if you only have one PF and you still request multiple ports, should that always fail?","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"d18fa4dc485e1e136b44a7fdf4e28b6ed29db100","unresolved":false,"context_lines":[{"line_number":77,"context_line":"and user could pass interfaces information through metadata to be able"},{"line_number":78,"context_line":"to differentiate NICs inside of the VM and configure bonds accordingly."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"If there are no hosts that meet this requirement, then user gets an error."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Note: multiple ports for network could be created after setting Nova\u0027s"},{"line_number":83,"context_line":"config option \u0027allow_duplicate_networks\u0027 to \u0027True\u0027."}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_bec9d8ae","line":80,"in_reply_to":"7a2fa921_d4331ff5","updated":"2015-10-13 11:58:42.000000000","message":"In my opinion, user should be able to specify if distributing ports is hard requirement or not for every VM it tries to boot.\n\nI was thinking that by default distribution is done in best-effort fashion, and if user specified group or some other flag, then it becomes a hard requirement.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":85,"context_line":"Project Priority"},{"line_number":86,"context_line":"-----------------"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Does not directly address Mitaka priorities."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_947367b4","line":88,"updated":"2015-10-13 09:36:42.000000000","message":"Please remove this section.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"d18fa4dc485e1e136b44a7fdf4e28b6ed29db100","unresolved":false,"context_lines":[{"line_number":85,"context_line":"Project Priority"},{"line_number":86,"context_line":"-----------------"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Does not directly address Mitaka priorities."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_be1f985a","line":88,"in_reply_to":"7a2fa921_947367b4","updated":"2015-10-13 11:58:42.000000000","message":"Done","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d8fb39969de41431b473f88b8318c687ff8a12ca","unresolved":false,"context_lines":[{"line_number":97,"context_line":"   server.networks[i].dev_group. This attribute is an an arbitrary"},{"line_number":98,"context_line":"   string with name of a device group. Devices in the same group"},{"line_number":99,"context_line":"   will have to be allocated on different PFs. Scope of a device group"},{"line_number":100,"context_line":"   is a single guest."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":103,"context_line":"   For example, it could be extended with group type, such as \u0027affinity\u0027"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_cf5c21f0","line":100,"updated":"2015-10-13 11:24:01.000000000","message":"Does this not requrie the work proposed as part of https://review.openstack.org/#/c/212472/ or at least part of it to land? maybe wouldbe good to mention that.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d8fb39969de41431b473f88b8318c687ff8a12ca","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":148,"context_line":"but more vast from development perspective and touches two components"},{"line_number":149,"context_line":"instead of one."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Data model impact"},{"line_number":152,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_8f3709e3","line":149,"updated":"2015-10-13 11:24:01.000000000","message":"yes this is more inline with what those interactions should look like. I am not sure that we want to block on this as this is an obviously useful feature. We should consider what supporting the proposed way of doing things would mean once we move on to \"something better\"","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d8fb39969de41431b473f88b8318c687ff8a12ca","unresolved":false,"context_lines":[{"line_number":152,"context_line":"-----------------"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The PciDevice model will have a new field to store device group assigned"},{"line_number":155,"context_line":"to the device."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"REST API impact"},{"line_number":158,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_e9ed5d8f","line":155,"updated":"2015-10-13 11:24:01.000000000","message":"Not sure this is the best place to store this data since it\u0027s instance-specific. We should not care about this once we have the placement, so it means that it makes more sense for this to live on the PciRequest model.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1911fad4971c8445f60f800a0ba3c9a6df7b60d0","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        \u0027networks\u0027: ["},{"line_number":170,"context_line":"        {"},{"line_number":171,"context_line":"        \u0027port\u0027: \u002743b6fef5-dc09-43ed-a6d2-35211a35c8ad\u0027,"},{"line_number":172,"context_line":"        \u0027dev_group\u0027: \u0027intranet_bond\u0027"},{"line_number":173,"context_line":"        }"},{"line_number":174,"context_line":"        ..."},{"line_number":175,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_14543752","line":172,"updated":"2015-10-13 09:36:42.000000000","message":"I don\u0027t like this, not really sure what it means.","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d8fb39969de41431b473f88b8318c687ff8a12ca","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        \u0027networks\u0027: ["},{"line_number":170,"context_line":"        {"},{"line_number":171,"context_line":"        \u0027port\u0027: \u002743b6fef5-dc09-43ed-a6d2-35211a35c8ad\u0027,"},{"line_number":172,"context_line":"        \u0027dev_group\u0027: \u0027intranet_bond\u0027"},{"line_number":173,"context_line":"        }"},{"line_number":174,"context_line":"        ..."},{"line_number":175,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_04c1a0e4","line":172,"in_reply_to":"7a2fa921_14543752","updated":"2015-10-13 11:24:01.000000000","message":"As I elaborate above - we should really think more about this","commit_id":"16717695048a5789aca5209f823d5244f6f74216"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The single root I/O virtualization (SR-IOV) allows a PCI device provide a"},{"line_number":21,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":22,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":23,"context_line":"number of Virtual Functions (VF) within this device, each of VFs could be"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_c4927a9f","line":20,"updated":"2015-11-05 11:28:04.000000000","message":"s/device provide/device to provide/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The single root I/O virtualization (SR-IOV) allows a PCI device provide a"},{"line_number":21,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":22,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":23,"context_line":"number of Virtual Functions (VF) within this device, each of VFs could be"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_ffb49d35","line":20,"in_reply_to":"fa80f949_c4927a9f","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The single root I/O virtualization (SR-IOV) allows a PCI device provide a"},{"line_number":21,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":22,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":23,"context_line":"number of Virtual Functions (VF) within this device, each of VFs could be"},{"line_number":24,"context_line":"associated with a network port and passed to a guest using PCI passthrough."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"OpenStack does support SR-IOV ports, however, it gives no control to user on"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_848c7280","line":23,"updated":"2015-11-05 11:28:04.000000000","message":"s/each of VFs/each of the VFs/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The single root I/O virtualization (SR-IOV) allows a PCI device provide a"},{"line_number":21,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":22,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":23,"context_line":"number of Virtual Functions (VF) within this device, each of VFs could be"},{"line_number":24,"context_line":"associated with a network port and passed to a guest using PCI passthrough."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"OpenStack does support SR-IOV ports, however, it gives no control to user on"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_bf893577","line":23,"in_reply_to":"fa80f949_848c7280","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Use Cases"},{"line_number":32,"context_line":"----------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Consider a situation when cluster contains Compute nodes with 4 SR-IOV NICs"},{"line_number":35,"context_line":"each. 2 of the NICs are connected to the same physical network \u0027Alice\u0027 and"},{"line_number":36,"context_line":"other 2 of the NICs are connected to the same physical netowrk \u0027Bob\u0027."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_a4c5f68e","line":34,"updated":"2015-11-05 11:28:04.000000000","message":"recommend using the phrase \"host aggregate\" instead of \"cluster\" or just say \"Consider a situation with compute nodes that have 4 SR-IOV NICs each.\"","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Use Cases"},{"line_number":32,"context_line":"----------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Consider a situation when cluster contains Compute nodes with 4 SR-IOV NICs"},{"line_number":35,"context_line":"each. 2 of the NICs are connected to the same physical network \u0027Alice\u0027 and"},{"line_number":36,"context_line":"other 2 of the NICs are connected to the same physical netowrk \u0027Bob\u0027."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_7f442d1a","line":34,"in_reply_to":"fa80f949_a4c5f68e","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Consider a situation when cluster contains Compute nodes with 4 SR-IOV NICs"},{"line_number":35,"context_line":"each. 2 of the NICs are connected to the same physical network \u0027Alice\u0027 and"},{"line_number":36,"context_line":"other 2 of the NICs are connected to the same physical netowrk \u0027Bob\u0027."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"A user wants to start a VM that is connected to both networks, \u0027Alice\u0027 and"},{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_189573e3","line":36,"updated":"2015-11-05 11:28:04.000000000","message":"s/netowrk/network/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Consider a situation when cluster contains Compute nodes with 4 SR-IOV NICs"},{"line_number":35,"context_line":"each. 2 of the NICs are connected to the same physical network \u0027Alice\u0027 and"},{"line_number":36,"context_line":"other 2 of the NICs are connected to the same physical netowrk \u0027Bob\u0027."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"A user wants to start a VM that is connected to both networks, \u0027Alice\u0027 and"},{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_1f4e413b","line":36,"in_reply_to":"5a2ca52d_189573e3","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":38,"context_line":"A user wants to start a VM that is connected to both networks, \u0027Alice\u0027 and"},{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"},{"line_number":40,"context_line":"that could be achieved by having 2 VFs for a physical network and bonding"},{"line_number":41,"context_line":"them together."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":44,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentined before"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_18181384","line":41,"updated":"2015-11-05 11:28:04.000000000","message":"I think this last line you meant to say \"be achieved by having two VFs on two different PFs bonded together to form a single network interface that can be plumbed to a single vNIC in a guest\". Is that correct?","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"A user wants to start a VM that is connected to both networks, \u0027Alice\u0027 and"},{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"},{"line_number":40,"context_line":"that could be achieved by having 2 VFs for a physical network and bonding"},{"line_number":41,"context_line":"them together."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":44,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentined before"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_6f1dc472","line":41,"in_reply_to":"5a2ca52d_18181384","updated":"2015-11-09 11:33:00.000000000","message":"yeah, that\u0027s right.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":41,"context_line":"them together."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":44,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentined before"},{"line_number":45,"context_line":"were created with the corresponding \u0027physical_network\u0027 value, a user"},{"line_number":46,"context_line":"could created ports as follows::"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_b809df33","line":44,"updated":"2015-11-05 11:28:04.000000000","message":"s/mentined/mentioned/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"them together."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":44,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentined before"},{"line_number":45,"context_line":"were created with the corresponding \u0027physical_network\u0027 value, a user"},{"line_number":46,"context_line":"could created ports as follows::"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_5fae0982","line":44,"in_reply_to":"5a2ca52d_b809df33","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":44,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentined before"},{"line_number":45,"context_line":"were created with the corresponding \u0027physical_network\u0027 value, a user"},{"line_number":46,"context_line":"could created ports as follows::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":49,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_4409aadc","line":46,"updated":"2015-11-05 11:28:04.000000000","message":"s/could created ports/could create ports/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":44,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentined before"},{"line_number":45,"context_line":"were created with the corresponding \u0027physical_network\u0027 value, a user"},{"line_number":46,"context_line":"could created ports as follows::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":49,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_1fcde165","line":46,"in_reply_to":"fa80f949_4409aadc","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":57,"context_line":"              --nic port-id\u003db0,bob_group \\"},{"line_number":58,"context_line":"              --nic port-id\u003db1,bob_group"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_04396241","line":60,"updated":"2015-11-05 11:28:04.000000000","message":"s/users informs/informs/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"              --nic port-id\u003db0,bob_group \\"},{"line_number":58,"context_line":"              --nic port-id\u003db1,bob_group"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_dfd99923","line":60,"in_reply_to":"fa80f949_04396241","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This results in the following PCI request requirements:"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_833981d9","line":62,"updated":"2015-10-21 16:24:17.000000000","message":"The UX here needs work, maybe we could do \"--nic port-id\u003da0,pf-antiaffinity\u003dalice_group\" to make it more obvious what\u0027s going on? Or instead of \"pf-antiaffinity\", maybe \"pf-spread\" - what can you think of?\n\nCan we assume that multiple NICs supplied for one network should be spread across PFs? In this case we might not need user-supplied groups at all.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This results in the following PCI request requirements:"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_af1ecd6d","line":62,"in_reply_to":"3a29b11f_833981d9","updated":"2015-10-22 05:58:06.000000000","message":"We can assume that and even do it by default (see https://review.openstack.org/#/c/142094/), but this spec is more about allowing user to specify how critical the distributed allocation is.\n\nAs for the option format, I think it\u0027d be more efficient to discuss that in the implementation phase when the design of this feature is ready and agreed on.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This results in the following PCI request requirements:"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_3f9fd3b5","line":62,"in_reply_to":"3a29b11f_af1ecd6d","updated":"2015-11-05 11:28:04.000000000","message":"@roman: I think Alexis is bringing up the UX here appropriately, and I agree with Alexis that the proposed free-form group name isn\u0027t as clear as it could be.\n\nHow about something more like this?\n\n nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\\n                --nic port-id\u003da1,pf-placement-not-near\u003da0 \\\n                --nic port-id\u003db0,pf-placement-not-near\u003db1 \\\n                --nic port-id\u003db1,pf-placement-not-near\u003db0\n\nThat to me is extremely explicit and allows the user to indicate to Nova the exact request for placement of VFs onto PFs that are not the same as the PFs where the other part of the veth port pair is placed.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This results in the following PCI request requirements:"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_8a38ad3e","line":62,"in_reply_to":"fa80f949_3f9fd3b5","updated":"2015-11-09 11:33:00.000000000","message":"Yeah, it\u0027s a little more lengthy but way easier to understand.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":" - a host should have at least 2 PFs assigned to network \u0027Alice\u0027"},{"line_number":67,"context_line":" - a host should have at least 2 PFs assigned to network \u0027Bob\u0027"},{"line_number":68,"context_line":" - each of these PFs should have at least 1 unallocated VF"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":71,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_7f8c7b7f","line":68,"updated":"2015-11-05 11:28:04.000000000","message":"I don\u0027t see how the last bullet point is relevant to this blueprint. Perhaps you can just remove it?","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":" - a host should have at least 2 PFs assigned to network \u0027Alice\u0027"},{"line_number":67,"context_line":" - a host should have at least 2 PFs assigned to network \u0027Bob\u0027"},{"line_number":68,"context_line":" - each of these PFs should have at least 1 unallocated VF"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":71,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_0a118652","line":68,"in_reply_to":"fa80f949_7f8c7b7f","updated":"2015-11-09 11:33:00.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":74,"context_line":"If there are no hosts that meet this requirement, then user gets an error."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note: multiple ports for network could be created after setting Nova\u0027s"},{"line_number":77,"context_line":"config option \u0027allow_duplicate_networks\u0027 to \u0027True\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Proposed change"},{"line_number":80,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_28d64cf1","line":77,"updated":"2015-10-21 16:24:17.000000000","message":"This reads more like proposed change than usecase. A usecase is more like \"as a user interested in HA, I want my network to stay up when one PCI card fails\". It is about the business goals, not how we get there. You can have multiple usecases, illustrating the different benefits of your feature.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The main steps would be:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":" * Extend Nova API so it was possible to specify a device group for"},{"line_number":85,"context_line":"   port during a server creation, for example, store it in"},{"line_number":86,"context_line":"   server.networks[i].dev_group. This attribute is an an arbitrary"},{"line_number":87,"context_line":"   string with name of a device group. Devices in the same group"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_88e520a5","line":84,"range":{"start_line":84,"start_character":25,"end_line":84,"end_character":28},"updated":"2015-10-21 16:24:17.000000000","message":"nit: s/was/is/g","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The main steps would be:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":" * Extend Nova API so it was possible to specify a device group for"},{"line_number":85,"context_line":"   port during a server creation, for example, store it in"},{"line_number":86,"context_line":"   server.networks[i].dev_group. This attribute is an an arbitrary"},{"line_number":87,"context_line":"   string with name of a device group. Devices in the same group"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_0f102156","line":84,"in_reply_to":"3a29b11f_88e520a5","updated":"2015-10-22 05:58:06.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":92,"context_line":"   For example, it could be extended with group type, such as \u0027affinity\u0027"},{"line_number":93,"context_line":"   or \u0027anti-affinity\u0027 (to requite VFs be allocated on the same or on"},{"line_number":94,"context_line":"   different PFs respectively)."},{"line_number":95,"context_line":" * PCI requests handling code modification to respect device group"},{"line_number":96,"context_line":"   requirements and store device group information for devices."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_636a25b5","line":93,"range":{"start_line":93,"start_character":26,"end_line":93,"end_character":33},"updated":"2015-10-21 16:24:17.000000000","message":"is there a use-case for affinity? IE why would this be useful? This could go in your usecases section :) :)\n\nnit: require","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":92,"context_line":"   For example, it could be extended with group type, such as \u0027affinity\u0027"},{"line_number":93,"context_line":"   or \u0027anti-affinity\u0027 (to requite VFs be allocated on the same or on"},{"line_number":94,"context_line":"   different PFs respectively)."},{"line_number":95,"context_line":" * PCI requests handling code modification to respect device group"},{"line_number":96,"context_line":"   requirements and store device group information for devices."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_9229b48c","line":93,"in_reply_to":"3a29b11f_636a25b5","updated":"2015-10-22 05:58:06.000000000","message":"I do not have use cases for affinity. I think that probably it could be useful for somebody and at the same time it doesn\u0027t seem to cost much to design things in a way so it would be possible to add affinity support later (if somebody needs that) without major changes.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":99,"context_line":"   two sriov ports requested for a guest, we just check if we have 2 VFs"},{"line_number":100,"context_line":"   available. However, it\u0027s not enough when these ports have the same"},{"line_number":101,"context_line":"   device group value, and the requirement should be to have a host"},{"line_number":102,"context_line":"   with 2 PFs that have at least 1 VF available."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In case when device group is not specified the default behavior doesn\u0027t"},{"line_number":105,"context_line":"change."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_435049d4","line":102,"updated":"2015-10-21 16:24:17.000000000","message":"Is there no way to request multiple PFs already?","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":99,"context_line":"   two sriov ports requested for a guest, we just check if we have 2 VFs"},{"line_number":100,"context_line":"   available. However, it\u0027s not enough when these ports have the same"},{"line_number":101,"context_line":"   device group value, and the requirement should be to have a host"},{"line_number":102,"context_line":"   with 2 PFs that have at least 1 VF available."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In case when device group is not specified the default behavior doesn\u0027t"},{"line_number":105,"context_line":"change."}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_e47c5e74","line":102,"in_reply_to":"3a29b11f_3239c0d7","updated":"2015-11-05 11:28:04.000000000","message":"There\u0027s actually no way to request a PF at all in Nova right now. You can only allocate a VF to a VM right now.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"   two sriov ports requested for a guest, we just check if we have 2 VFs"},{"line_number":100,"context_line":"   available. However, it\u0027s not enough when these ports have the same"},{"line_number":101,"context_line":"   device group value, and the requirement should be to have a host"},{"line_number":102,"context_line":"   with 2 PFs that have at least 1 VF available."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In case when device group is not specified the default behavior doesn\u0027t"},{"line_number":105,"context_line":"change."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_3239c0d7","line":102,"in_reply_to":"3a29b11f_435049d4","updated":"2015-10-22 05:58:06.000000000","message":"I think there\u0027s no explicit way to do that now, as the current sriov code operates with VFs. Here\u0027s related change: https://review.openstack.org/#/c/212472/","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"627e63d3e307306b79a40a86b15d23da7f40365a","unresolved":false,"context_lines":[{"line_number":136,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":137,"context_line":"but more vast from development perspective and touches two components"},{"line_number":138,"context_line":"instead of one."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_16459a44","line":139,"updated":"2015-10-16 19:23:14.000000000","message":"Not sure it\u0027s a good idea, but there seems to be a simple solution to achieve redundancy by using whitelist. For example, if you have two physical ports that are connected to the same network \u0027physnet\u0027, then a simple way to whitelist it is \n\n        pci_passthrough_whitelist \u003d {\u0027\u003cport1 pci addr\u003e\u0027, \u0027physical_network\u0027:\u0027physnet-1\u0027}\n\n        pci_passthrough_whitelist \u003d {\u0027\u003cport2 pci addr\u003e\u0027, \u0027physical_network\u0027:\u0027physnet-2\u0027}\n\nneutron port-create --binding:vnic_type\u003ddirect --name p1 physnet-1\n\nneutron port-create --binding:vnic_type\u003ddirect --name p2 physnet-2\n\nnova boot --nic port-id\u003dp1 --nic port-id\u003dp2\n\nThe key is that physnet-1 and physnet-2 are basically the same physical network \"physnet\". And that\u0027s the only change that needs to be taken care of by neutron. As the bonding is achieved inside the guest, nova doesn\u0027t need to maintain the knowledge of ports that are redundant. Also there is no complicated scheduling required.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":10392,"name":"Dmitry Nikishov","email":"dnikishov@mirantis.com","username":"dnikishov"},"change_message_id":"9b21d00abbf50d0f219159044dd1f63ed857b65f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":137,"context_line":"but more vast from development perspective and touches two components"},{"line_number":138,"context_line":"instead of one."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a26ad4f_d390ab45","line":139,"in_reply_to":"3a29b11f_0daa5785","updated":"2015-11-02 17:21:27.000000000","message":"\u003ewell, no. If the user needs a non-redundant NIC, she just needs to create a port on physnet\n\nIn this case, most likely, only 1 PF will be accessible to user.\n\nThere is an DHCP/IP-related issue with any implementation which doesn\u0027t touch Neutron. \n\nConsider following environment:\n2 SR-IOV-capable NICs, each has 1 PF. Implementation proposed by Roman will have an issue when Neutron gives out 2 IPs instead of 1 since there are 2 ports are being created for each reduntant VM. A bond interface will receive only one IP interface and it is not clear which IP out of 2 it\u0027s going to be. That also means that IP addresses which are being assigned but not used, are a dead weight.\n\nIf you\u0027d assign 2 PFs 2 different physnets and then create 2 different Neutron networks, then you\u0027d have a situation when only one PF can be used to assign VFs when redundancy is not required while keeping VFs in the same L3 network. Since these PFs are in fact connected to the same physical network, user would expect to be able to assign a VF from any of these to a VM and be able to have an IP from the same L3 network as redundant VMs. But this is not going to work since 2 different Neutron networks will have 2 different subnets and IP ranges (Neutron will not allow assigning same subnet to different networks).","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":136,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":137,"context_line":"but more vast from development perspective and touches two components"},{"line_number":138,"context_line":"instead of one."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_9ff91f83","line":139,"in_reply_to":"3a29b11f_0daa5785","updated":"2015-11-05 11:28:04.000000000","message":"I\u0027m -1 on encoding even more tribal knowledge or internal information into the pci_passthrough_whitelist configuration option. It\u0027s already very difficult for deployers to understand and this would make it even more so.\n\nWe want *less* stuff in nova.conf variables, not more.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"ee7dc7bc848d8aac51fc709a1ad132bdd44430de","unresolved":false,"context_lines":[{"line_number":136,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":137,"context_line":"but more vast from development perspective and touches two components"},{"line_number":138,"context_line":"instead of one."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_a95694cb","line":139,"in_reply_to":"3a29b11f_0daa5785","updated":"2015-10-23 10:17:28.000000000","message":"actually, reading your suggestion I\u0027m wondering if could actually do it in a similar way, leveraging whitelist, but without involving Neutron for that.\n\nFor example, we could place a field into whitelist with a similar meaning that the \u0027dev_group\u0027 in this spec.\n\nFor example, whilelist entries will look file [{\"address\": \"addr1\", physical_network\": \"physnet0\", \"dev_group\": \"alice\"}, {\"address\": \"addr2\": \"physical_network\": \"physnet0\", \"dev_group: \"bob\"}].\n\nSo if user just runs \u0027nova bot ... --nic port-id\u003d$id\u0027, we just take any PCI device from the appropriate phys net. If user specifies \u0027--nic port-id\u003d$id,dev_group\u003dalice\" we search for device that have both physnet\u003dphysnet0 and dev_group\u003dalice.\n\nThis does not require Neutron modifications from what I can see.\n\nAnd just like you said, we could even manually generate this \u0027dev_group\u0027 for whitelist entries, e.g. group by physnet, sort by address, enumerate the result to generate $physnet-$linkno attribute.\n\nJust need to make sure this label is available through the PCI API at least so user could obtain information about this labels/groups/whatever it\u0027d be called.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"346baa2d54f39b9219f403f2411ce6e15577c325","unresolved":false,"context_lines":[{"line_number":136,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":137,"context_line":"but more vast from development perspective and touches two components"},{"line_number":138,"context_line":"instead of one."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_0daa5785","line":139,"in_reply_to":"3a29b11f_326780ea","updated":"2015-10-22 14:33:34.000000000","message":"well, no. If the user needs a non-redundant NIC, she just needs to create a port on physnet. \n\nActually, the more I think about this, the alternative described in this section plus the whitelisting approach would make the user experience better, and in the same time the implementation easier. The whitelisting with the tag of \"physnet\" suffixed with -\u003clink-no\u003e can be done internally, actually, while following certain convention. \n\nOn the other hand,  with adaptors that support multiple PFs per physical port, this proposal for redundancy won\u0027t work. Therefore, there should be a way to determine if a physical port is capable of single PF versus multiple PFs, and as a result, redundancy across a number of arbitrary PFs makes sense.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":137,"context_line":"but more vast from development perspective and touches two components"},{"line_number":138,"context_line":"instead of one."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_326780ea","line":139,"in_reply_to":"5a2ca52d_16459a44","updated":"2015-10-22 05:58:06.000000000","message":"I think this will work, however, this offloads some scheduler tasks to user. E.g. user only needs 1 VM with bonds and all other VMs with just single NIC. So she would need to manually distribute her VM between \u0027physnet-1\u0027 and \u0027physnet-2\u0027.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The PciDevice model will have a new field to store device group assigned"},{"line_number":144,"context_line":"to the device."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"REST API impact"},{"line_number":147,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_7f455bb1","line":144,"updated":"2015-11-05 11:28:04.000000000","message":"This isn\u0027t the appropriate place to store this data, IMHO. The appropriate place to store the data about placement policy for the PCI devices is in the instance_extra.pci_requests field. This isn\u0027t data about the PCI device itself. This is data about the placement policies to apply for the VFs in the launch instance request.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        \u0027networks\u0027: ["},{"line_number":159,"context_line":"        {"},{"line_number":160,"context_line":"        \u0027port\u0027: \u002743b6fef5-dc09-43ed-a6d2-35211a35c8ad\u0027,"},{"line_number":161,"context_line":"        \u0027dev_group\u0027: \u0027intranet_bond\u0027"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":"        ..."},{"line_number":164,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_5fabb71d","line":161,"updated":"2015-11-05 11:28:04.000000000","message":"-1. This information is not an attribute of the network but rather an attribute of the port itself.\n\nCan you detail specifically how the guest would use this information to create an lacp bond across the vNICs? I\u0027m curious how you\u0027d use this dev_group attribute for this purpose. I would think just grabbing the physnet attribute of the port profile would be sufficient to determine which ports to aggregate into a bond?","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"a238dcfda2f79a3ec31587554c674d35c7291c2d","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        \u0027networks\u0027: ["},{"line_number":159,"context_line":"        {"},{"line_number":160,"context_line":"        \u0027port\u0027: \u002743b6fef5-dc09-43ed-a6d2-35211a35c8ad\u0027,"},{"line_number":161,"context_line":"        \u0027dev_group\u0027: \u0027intranet_bond\u0027"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":"        ..."},{"line_number":164,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_c041ac64","line":161,"in_reply_to":"da85f559_450ea135","updated":"2015-11-11 11:25:23.000000000","message":"Jay, after some thoughts I returned this section back in patch set #11 because we still need to pass \u0027pf-placement-not-near\u0027 somehow, and current schema of passing attributes looks this way:\n\nnova bot ... --nic port-id\u003d3032e07f-892c-47de-b7d0-d89dffcfdac4,v4-fixed-ip\u003d1.2.3.4\n\nand this becomes:\n\n \"networks\": [{\"fixed_ip\": \"1.2.3.4\", \"port\": \"3032e07f-892c-47de-b7d0-d89dffcfdac4\"}, ]\n\nSo it seems consistent to pass this attribute in a similar fashion. Anyway, comments are welcome in the updated patch sets.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"6c578ac696fc7ca659d6535aff23ecee781f9bb1","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        \u0027networks\u0027: ["},{"line_number":159,"context_line":"        {"},{"line_number":160,"context_line":"        \u0027port\u0027: \u002743b6fef5-dc09-43ed-a6d2-35211a35c8ad\u0027,"},{"line_number":161,"context_line":"        \u0027dev_group\u0027: \u0027intranet_bond\u0027"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":"        ..."},{"line_number":164,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_450ea135","line":161,"in_reply_to":"fa80f949_5fabb71d","updated":"2015-11-09 11:33:00.000000000","message":"Well, what we actually using is just mac-based mapping that we pass to the guest through metadata so it could configure bonds based on that information.\n\nThe reason I updated the API section is that because I was feeling that it\u0027s a little strange if we pass some information through API but cannot retrieve it back later.\n\nAnyway, I\u0027ll drop this piece for now.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0cc9e92944abc6affea5122430e1b2d2a9a25f02","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    }"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"and in v3 it is like::"},{"line_number":171,"context_line":" /v3/servers"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"{"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_9f035f42","line":170,"updated":"2015-11-05 11:28:04.000000000","message":"There is no longer a v3 API in Nova.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    ..."},{"line_number":184,"context_line":"    }"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"}"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Here, the \u003cstring\u003e \u0027dev_group\u0027 means the device group to put"},{"line_number":189,"context_line":"  the port in. No default value."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_033331ac","line":186,"updated":"2015-10-21 16:24:17.000000000","message":"can I assume the device group will be returned when you query the server ports post-boot? By at least the detail query, maybe the list query?","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    ..."},{"line_number":184,"context_line":"    }"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"}"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Here, the \u003cstring\u003e \u0027dev_group\u0027 means the device group to put"},{"line_number":189,"context_line":"  the port in. No default value."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_72a7380b","line":186,"in_reply_to":"3a29b11f_033331ac","updated":"2015-10-22 05:58:06.000000000","message":"Hm, need to think about that. Probably it would be useful to keep that info, yes.","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":274,"context_line":"Optional section for liberty intended to be used each time the spec"},{"line_number":275,"context_line":"is updated to describe new design, API or any database schema"},{"line_number":276,"context_line":"updated. Useful to let reader understand what\u0027s happened along the"},{"line_number":277,"context_line":"time."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":".. list-table:: Revisions"},{"line_number":280,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_43712943","line":277,"updated":"2015-10-21 16:24:17.000000000","message":"You can delete this para","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":274,"context_line":"Optional section for liberty intended to be used each time the spec"},{"line_number":275,"context_line":"is updated to describe new design, API or any database schema"},{"line_number":276,"context_line":"updated. Useful to let reader understand what\u0027s happened along the"},{"line_number":277,"context_line":"time."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":".. list-table:: Revisions"},{"line_number":280,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_12b36451","line":277,"in_reply_to":"3a29b11f_43712943","updated":"2015-10-22 05:58:06.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"98a310ab0a1cf3b75ec053b04b80b4b0917597bd","unresolved":false,"context_lines":[{"line_number":282,"context_line":"   * - Release Name"},{"line_number":283,"context_line":"     - Description"},{"line_number":284,"context_line":"   * - Liberty"},{"line_number":285,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_a396fd3b","line":285,"updated":"2015-10-21 16:24:17.000000000","message":"Hi, it\u0027s Mitaka now :)\n\nneed to add a row","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"29c2f5afbc0dfe09e25872656e2bb1e64bc6bc7b","unresolved":false,"context_lines":[{"line_number":282,"context_line":"   * - Release Name"},{"line_number":283,"context_line":"     - Description"},{"line_number":284,"context_line":"   * - Liberty"},{"line_number":285,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_52f23c07","line":285,"in_reply_to":"3a29b11f_a396fd3b","updated":"2015-10-22 05:58:06.000000000","message":"Done","commit_id":"0f6c24e7aaebf4dfb7e399d099f38323cc56a5e0"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"098edb513ad2c8aa54ee450bc9c053a758f4cd20","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Specifying a group (\u0027alice_group\u0027 and \u0027bob_group\u0027) users informs"},{"line_number":61,"context_line":"Nova that it wants devices on this group to be allocated on different"},{"line_number":62,"context_line":"PFs."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This results in the following PCI request requirements:"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a29b11f_a6756b64","line":62,"updated":"2015-10-23 01:50:00.000000000","message":"Even if you were doing this:\n\na. your example\u0027s horrible, alice_group is an antiaffinity group, which is exactly the opposite of what I mentally expected when reading this\n\nb. it\u0027s a SPOF question, not a NIC question - doesn\u0027t help you if they\u0027re wired to the same switch (kind of the same problem with antiaffinity nove scheduling, really)\n\nc. xxx\u003dalice_group would be wiser and given the implementation is probably necessary anyway.\n\nAre we sure that this requirement doesn\u0027t span multiple VMs?","commit_id":"c03b3cb90d7d3a39bb680b85e1ae28bddad025ec"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"72cdc5c50bfc897560130b85eb2a874d67416800","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5a3c052f","line":59,"updated":"2015-11-10 11:02:01.000000000","message":"In the \"Proposed change\" section you talk about a more general \"dev_group\" attribute, rather than this more limit \"pf-placement-not-near\" attribute, so I find this example a bit misleading","commit_id":"edbdb2b9732d9ae49f242922ab3733afcda05bcf"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2450856d2976c66c77a908501f5f19eb341dfdf4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_9d88efc6","line":59,"in_reply_to":"da85f559_5a3c052f","updated":"2015-11-11 11:21:16.000000000","message":"Oh, that\u0027s true. In the previous iterations it was decided that \u0027dev_group\u0027 is not the best name because it\u0027s not quite obvious what it means. So the example is correct, it\u0027s the \"Proposed change\" section that needs to be updated.","commit_id":"edbdb2b9732d9ae49f242922ab3733afcda05bcf"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"72cdc5c50bfc897560130b85eb2a874d67416800","unresolved":false,"context_lines":[{"line_number":82,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":83,"context_line":"   For example, it could be extended with group type, such as \u0027affinity\u0027"},{"line_number":84,"context_line":"   or \u0027anti-affinity\u0027 (to require VFs be allocated on the same or on"},{"line_number":85,"context_line":"   different PFs respectively)."},{"line_number":86,"context_line":" * PCI requests handling code modification to respect device group"},{"line_number":87,"context_line":"   requirements and store device group information for devices."},{"line_number":88,"context_line":" * Nova-scheduler needs to be modified to properly calculate required"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_fa94d9e2","line":85,"updated":"2015-11-10 11:02:01.000000000","message":"Considering your example above of 4 nics attached to two separate networks what would the syntax look like ? From this description it sounds like you\u0027re ancicipating something like this:\n\n nova boot --nic port-id\u003da0,devgroup\u003danti-affinity:alice \\\n\t        --nic port-id\u003da1,devgroup\u003danti-affinity:alice \\\n\t        --nic port-id\u003db0,devgroup\u003danti-affinity:bob \\\n\t        --nic port-id\u003db1,devgroup\u003danti-affinity:bob\n\nIf the user wanted both VFs to come from the same PF, then they\u0027d use \"affinity\" as the prefix instead ?","commit_id":"edbdb2b9732d9ae49f242922ab3733afcda05bcf"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2450856d2976c66c77a908501f5f19eb341dfdf4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"   Optionally, meaning of the \u0027dev_group\u0027 attribute could be extended."},{"line_number":83,"context_line":"   For example, it could be extended with group type, such as \u0027affinity\u0027"},{"line_number":84,"context_line":"   or \u0027anti-affinity\u0027 (to require VFs be allocated on the same or on"},{"line_number":85,"context_line":"   different PFs respectively)."},{"line_number":86,"context_line":" * PCI requests handling code modification to respect device group"},{"line_number":87,"context_line":"   requirements and store device group information for devices."},{"line_number":88,"context_line":" * Nova-scheduler needs to be modified to properly calculate required"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_60b9e014","line":85,"in_reply_to":"da85f559_fa94d9e2","updated":"2015-11-11 11:21:16.000000000","message":"Please check the previous reply regarding the attribute name.\n\nAs for affinity, I\u0027m not really sure if there\u0027s a value in that, at least I do not needed that for my use cases and I\u0027m not aware it somebody else needs that.\n\nSo this section is updated.","commit_id":"edbdb2b9732d9ae49f242922ab3733afcda05bcf"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"72cdc5c50bfc897560130b85eb2a874d67416800","unresolved":false,"context_lines":[{"line_number":132,"context_line":"-----------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The InstancePCIRequest model will have a new field corresponding to"},{"line_number":135,"context_line":"\u0027pf-placement-not-near\u0027 attirbute value."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"REST API impact"},{"line_number":138,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_3ab26195","line":135,"updated":"2015-11-10 11:02:01.000000000","message":"Earlier you talk about a \"dev_group\" attribute, but now you\u0027re talking about \"pf-placement-not-near\" once again.","commit_id":"edbdb2b9732d9ae49f242922ab3733afcda05bcf"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"2450856d2976c66c77a908501f5f19eb341dfdf4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"-----------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The InstancePCIRequest model will have a new field corresponding to"},{"line_number":135,"context_line":"\u0027pf-placement-not-near\u0027 attirbute value."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"REST API impact"},{"line_number":138,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_c080ccc1","line":135,"in_reply_to":"da85f559_3ab26195","updated":"2015-11-11 11:21:16.000000000","message":"Now when this is obsolete, the spec should be \u0027dev_group\u0027 free.","commit_id":"edbdb2b9732d9ae49f242922ab3733afcda05bcf"},{"author":{"_account_id":17822,"name":"Gideon Agmon","email":"gideon.agmon@nokia.com","username":"gideon59"},"change_message_id":"c3c8221a73bb49be89cc213c8dd1e2ed2529afc7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"},{"line_number":40,"context_line":"that could be achieved by having two VFs on two different PFs bonded together"},{"line_number":41,"context_line":"to form a single network interface that can be plumbed to a single vNIC"},{"line_number":42,"context_line":"in a guest."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":45,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentioned before"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a68dd71_482ec9a6","line":42,"updated":"2016-01-26 15:27:57.000000000","message":"Two VFs mean two Neutron ports at the VM, and probably the intention here is to have a bond within the VM connected to both these ports. Isn\u0027t it?","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7542cf7fcf7953c637aae59f470d21a8a9dad035","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"},{"line_number":40,"context_line":"that could be achieved by having two VFs on two different PFs bonded together"},{"line_number":41,"context_line":"to form a single network interface that can be plumbed to a single vNIC"},{"line_number":42,"context_line":"in a guest."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":45,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentioned before"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a68dd71_d578f691","line":42,"in_reply_to":"9a68dd71_482ec9a6","updated":"2016-01-26 22:05:03.000000000","message":"I\u0027m not sure I completely understand the phrase \u0027bond within the VM connected to both tese ports\u0027, could you please elaborate on that?","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":17822,"name":"Gideon Agmon","email":"gideon.agmon@nokia.com","username":"gideon59"},"change_message_id":"3fe638edb67fd682f376d23b2cf34ac50061c437","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"},{"line_number":40,"context_line":"that could be achieved by having two VFs on two different PFs bonded together"},{"line_number":41,"context_line":"to form a single network interface that can be plumbed to a single vNIC"},{"line_number":42,"context_line":"in a guest."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":45,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentioned before"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a68dd71_2f4d7199","line":42,"in_reply_to":"9a68dd71_d578f691","updated":"2016-01-27 08:13:00.000000000","message":"For the two VFs towards two Alice PFs (a0 and a1), I guess the VM will typically have e.g. a linux bond, and its two vNICs associated with that bond. The original description above is \"...to form a single network interface that can be plumbed to a single vNIC in a guest.\", while I thought it could be phrased \"...connected to two vNICs in the guest VM associated e.g. with its linux bond / lag.\"","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":17822,"name":"Gideon Agmon","email":"gideon.agmon@nokia.com","username":"gideon59"},"change_message_id":"c3c8221a73bb49be89cc213c8dd1e2ed2529afc7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a68dd71_73161ef3","line":53,"updated":"2016-01-26 15:27:57.000000000","message":"the above four command will generate 4 IP addresses. Note that in case of a VM bond connected to two ports (e.g. to a0 and a1) only a single IP address is really needed.","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":17822,"name":"Gideon Agmon","email":"gideon.agmon@nokia.com","username":"gideon59"},"change_message_id":"21e66b6bbc5ee34756378a211315487b9348615e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a68dd71_52c88a74","line":53,"in_reply_to":"9a68dd71_158d2e7b","updated":"2016-01-27 08:27:26.000000000","message":"If by \"new bonded port type\" you mean the alternative described in line 102, it seems to imply a new port type that generates two vNICs - if so, it is quite a change... The other alternative you\u0027ve mentioned in an email was \"dev_group\" approach, that reminds me the existing \"nova server-group-create\" concept that seems less revolutionary :)","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":15427,"name":"David Edery","email":"david.edery@gmail.com","username":"dedery"},"change_message_id":"6f50327cf88a936e265b1b4119d0d6b991a47d01","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a5de9d1_4207e8c9","line":53,"in_reply_to":"9a68dd71_52c88a74","updated":"2016-01-31 17:04:59.000000000","message":"+1 for reusing the \"nova server-group-create\" (affinity group) model for this problem. The relation between VM (\u003d\u003dvirtual resource) and host (\u003d\u003dphysical resource) can be altered in this case to port (\u003d\u003dvirtual resource though relevant only in the SRIOV case) and NIC (\u003d\u003dphysical resource).\nThus, the operational flow is something like:\na. neutron port-group-create $group-name $policy\nb. neutron port-create ... --hint group\u003d$affinity-group-uuid\n\n(I\u0027m probably missing something here. Nonetheless, this approach should be considered for the sake of consistency unless functionality can\u0027t be met using it)","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"7542cf7fcf7953c637aae59f470d21a8a9dad035","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a68dd71_158d2e7b","line":53,"in_reply_to":"9a68dd71_73161ef3","updated":"2016-01-26 22:05:03.000000000","message":"Yeah, that\u0027s true. The other possible option to avoid that is to introduce some new \u0027bonded\u0027 port type that will represent two VFs to be bonded. I don\u0027t remember pros/cons on that approach though (and don\u0027t remember if it was discussed at all), because I lost a context a little, need to refresh things in my memory.","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c0fcb5956c2e0bec31353995862d4ab93a6e00c4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da85f559_e6e968b8","line":59,"updated":"2015-11-11 12:03:40.000000000","message":"I don\u0027t think that using \u0027pf-placement-not-near\u0027 is a satisfactory solution, as it only supports a single use case - allocation VFs from different PFs.  ie does not let you request that you want the VFs from the same PF. I rather preferred the a general solution where you defined groups to associate VFs.","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"9c1c4301d8186249bbb294e8664edeeca1152a0a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a8ffd7b_65946542","line":59,"in_reply_to":"9a8ffd7b_e30b75d4","updated":"2015-11-27 18:23:28.000000000","message":"Hm, so it seems to me that there\u0027s no direct relation between numa policy and vf allocation policy. For example:\n\n - user may not care about specific placement of VFs, but only use PFs from all the NUMA cells from VM\u0027s host, not only from VMs cell.\n - user may want to request anti-affinity, but at the same time still want the devices to be from the VM\u0027s cell.\n\nIs my understanding correct?","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"cb473bfc752fc7d6c196f3d793f707c81ad8c5e4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a8ffd7b_e30b75d4","line":59,"in_reply_to":"da85f559_8bf09792","updated":"2015-11-27 16:01:48.000000000","message":"So there is a further requirement for placement policy on VFs in relation to NUMA.\n\nWhen using NUMA, the guest will be bound to a specific host NUMA node. Currently Nova will attempt to allocate VFs from a device on the same NUMA node that the guest is set to run on. If no free VFs are available the guest will not be booted.\n\nThis is too strict for some uses cases. People want to be able to express that certain NICs *must* come from the same NUMA node, while other NICs may come from different NUMA nodes if not available otherwise.","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"bc1d5cb5909755dfc9e02c6b5a965ac141480a54","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da85f559_8bf09792","line":59,"in_reply_to":"da85f559_e6e968b8","updated":"2015-11-11 16:07:06.000000000","message":"I see the following pros and cons of \u0027pf-placement-not-near\u0027 compared to \u0027dev_group,{anti-}affinity\u0027:\n\ndev_group pros:\n\n - unified syntax for affinity and anti-affinity allocations\n\ndev_group cons:\n\n - introduces a new term \u0027device group\u0027 that is not self explanatory\n\npf-placement-not-near pros:\n\n - self explanatory\n\npf-placement-not-near cons:\n\n - anti-affinity case will need a new attribute (pf-placement-near)\n - longer to type :-) (minor)\n\nInitially, when this feature was designed for local needs, I introduced dev_group with the same thing in mind -- to have a possibility to support affinity case. However, it turned out that it was never needed. TBH, currently I have no goal to support affinity case as I\u0027m not sure it\u0027s useful at all, though I don\u0027t mind doing that if that\u0027s useful as it doesn\u0027t add much work anyway.\n\nActually, I have no preference to either way, but as other people suggested that dev_group could be not the best UX, I\u0027d wait for them to reply before updating the spec.\n\nThanks!","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"},{"author":{"_account_id":15427,"name":"David Edery","email":"david.edery@gmail.com","username":"dedery"},"change_message_id":"6f50327cf88a936e265b1b4119d0d6b991a47d01","unresolved":false,"context_lines":[{"line_number":99,"context_line":"responsible for more than one device by adding a new attribute, say,"},{"line_number":100,"context_line":"binding:redundancy, so when user creates a port:"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"neutron port-create --binding:vnic_type\u003ddirect --binding:redundancy\u003d2"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It would mean that user wants 2 NICs to achieve redundancy of this"},{"line_number":105,"context_line":"port."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a5de9d1_82c64066","line":102,"updated":"2016-01-31 17:04:59.000000000","message":"To me this is looks too revolutionary from the user\u0027s perspective (who is very much used to getting one port and related plumbing per neutron port. Plus, considering the available port operations this raises further questions about detach, attach etc...).\n\nMaybe a more intuitive approach (which is of course debatable since it\u0027s more intuitive to me :) ) is something like:\n1. neutron port-create --binding:vnic_type\u003ddirect  (\u003c-- uuid returned)\n2. neutron port-create --binding:vnic_type\u003ddirect --bound-to \u003cfirst port uuid\u003e\n\n(\"bound-to\" as an option name can of course be changed according to what\u0027s more user friendly)\n\nIt seems to me that this can achieve the same results (with respect to the physical network)","commit_id":"1de34cd7d5163bfcf9c5b1857d780d39e6c5893a"}],"specs/newton/approved/user-controlled-sriov-ports-allocation.rst":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2748724ccbb7a85f6217e44f00a457dccfc647cd","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u0027Bob\u0027. Additionally, a user wants to have redundancy for these connections"},{"line_number":40,"context_line":"that could be achieved by having two VFs on two different PFs bonded together"},{"line_number":41,"context_line":"to form a single network interface that can be plumbed to a single vNIC"},{"line_number":42,"context_line":"in a guest."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Assuming that the \u0027pci_passthrough_whitelist\u0027 configuration option for Nova"},{"line_number":45,"context_line":"is properly specified and networks \u0027Alice\u0027 and \u0027Bob\u0027 mentioned before"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_2d1208b5","line":42,"updated":"2016-05-27 23:22:42.000000000","message":"a diagram here would be nice, though if I understand you correctly what you\u0027re after is a VM connected to A,B networks by means of two VFa and VFb where VFa and FVb maps to bonded pair of PFs?\n\nWhy don\u0027t you simplify and talk about a single network?","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4d8ae83faeb412e0cd194465426149eee4de821c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"were created with the corresponding \u0027physical_network\u0027 value, a user"},{"line_number":47,"context_line":"could create ports as follows::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_c930b50a","line":52,"range":{"start_line":49,"start_character":0,"end_line":52,"end_character":63},"updated":"2016-05-27 08:49:35.000000000","message":"I wondering if we can leverage the neutron resource tagging\nand tags the neutron port. (currently neutron support only network tagging but it can be easily extend)\nhttps://specs.openstack.org/openstack/neutron-specs/specs/mitaka/add-tags-to-core-resources.html\n \nSo I was thinking \nexample 1:\nneutron port1 with tag A\nneutron  port2 with tag A\nmeaning that they are on the same group and should be allocate on the same PF\n\nexample 2:\nneutron port1 with tag A\nneutron  port2 with tag B\nmeaning that they are on diffrent group and should be allocate on different PFs\n\nexample 3:  \nneutron port1 with no tag\nneutron port2 wit no tag\nwork as it works now can be on the same/different PF(s)","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"18bf7977935817c223da6687f1a69450a25ad975","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_5cee0e23","line":52,"in_reply_to":"9abb7d3a_4d030c74","updated":"2016-05-29 06:51:15.000000000","message":"yes, I want to extend the nova pci_passthrough_filter to select VF according to the tags on the port. I am not planning to change any plugin/driver to do that","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2748724ccbb7a85f6217e44f00a457dccfc647cd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a0 alice"},{"line_number":50,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name a1 alice"},{"line_number":51,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b0 bob"},{"line_number":52,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect --name b1 bob"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_4d030c74","line":52,"in_reply_to":"9abb7d3a_c930b50a","updated":"2016-05-27 23:22:42.000000000","message":"Bear in mind that access to tag information is only meant to be accessed by external systems, and not to be processed by Neutron internals, e.g. plugins and drivers.","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7404666e2164c09343e2b0632b62d128a3ffae2f","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Now user can boot a VM this way::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    nova boot --nic port-id\u003da0,pf-placement-not-near\u003da1 \\"},{"line_number":57,"context_line":"              --nic port-id\u003da1,pf-placement-not-near\u003da0 \\"},{"line_number":58,"context_line":"              --nic port-id\u003db0,pf-placement-not-near\u003db1 \\"},{"line_number":59,"context_line":"              --nic port-id\u003db1,pf-placement-not-near\u003db0"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"If there are hosts that meet that requirement, VM is successfully scheduled"},{"line_number":62,"context_line":"and user could pass interfaces information through metadata to be able"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_47fd05b0","line":59,"range":{"start_line":56,"start_character":0,"end_line":59,"end_character":55},"updated":"2016-05-17 09:31:19.000000000","message":"tl;dr: This will cause a lot of scheduling failures for instances with NUMA topologies.\n\nAFAICT, this is going to cause a lot of heartache for folks using NUMA. NUMA topologies can be enabled in the guest both implicitly (attaching hugepages) and explicitly (image metadata or flavor extra specs). When using a NUMA topology with a PCI/SR-IOV device attached, your vCPU processes are affinitized to the node that said device is associated with. Attempting to attach a second device associated with a different node _without_ specifying a multi-node NUMA topology will result in a scheduling failure. This is a tricky, but rare, corner case right now, however, I imagine the system you\u0027re proposing will make occurrences of this issue far more common. I think you need to address this issue here lest before it becomes a bigger one during development.\n\nNOTE: I recently documented this behavior [1], if you want to see official documentation on the issue (see \u0027Customizing instance NUMA topologies\u0027, second warning).\n\n[1] https://review.openstack.org/#/c/312959/20/doc/admin-guide/source/compute-numa-cpu-pinning.rst","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2748724ccbb7a85f6217e44f00a457dccfc647cd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"If there are no hosts that meet this requirement, then user gets an error."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Note: multiple ports for network could be created after setting Nova\u0027s"},{"line_number":68,"context_line":"config option \u0027allow_duplicate_networks\u0027 to \u0027True\u0027."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Proposed change"},{"line_number":71,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_ad26f813","line":68,"updated":"2016-05-27 23:22:42.000000000","message":"so the bonding will have to be done by the guest and internal to the guest? But why do we want to expose this complexity to the guest? Assume that the bonding is done for redundancy or for increased performance, wouldn\u0027t be nice to expose the guest with a much simpler abstraction which is just like a regular interface only more reliable or faster under the hood?\n\nOr what use care are you going after? it would be nice to be more clear here.","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"9c12691f6655b73e257c2c7557e7b656331cb16a","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If there are no hosts that meet this requirement, then user gets an error."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Note: multiple ports for network could be created after setting Nova\u0027s"},{"line_number":68,"context_line":"config option \u0027allow_duplicate_networks\u0027 to \u0027True\u0027."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Proposed change"},{"line_number":71,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_f0a3a39c","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":51},"updated":"2016-05-29 17:02:12.000000000","message":"the allow_duplicate_networks was removed so you can remove this part see https://review.openstack.org/#/c/192888/2","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":17822,"name":"Gideon Agmon","email":"gideon.agmon@nokia.com","username":"gideon59"},"change_message_id":"7de596f0ddbd96ec3846a846981db33932bb219b","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Note: multiple ports for network could be created after setting Nova\u0027s"},{"line_number":68,"context_line":"config option \u0027allow_duplicate_networks\u0027 to \u0027True\u0027."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Proposed change"},{"line_number":71,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7aa08908_2c054445","line":69,"updated":"2016-06-14 11:20:31.000000000","message":"Another use case is VXLAN offload to a NIC:\n\nWhen there is a VM with two SRIOV virtual ports for redundancy, which need VFs on separated phys, then without this blueprint, using SRIOV ports of network type \u003d Vlan, one can create networks on explicitly separated physical_networks, so Nova selects the VFs from separated Phys.\nBut, with SRIOV connected to a NIC that implements VXLAN offload, the user creates networks of type \u003d VXLAN, for which there is no physical_networks explicitly defined, so there is no way to indicate Nova to choose different physical interfaces. With this blueprint, the nova boot pf-placement-not-near attribute is sufficient for Nova to allocate VFs from different phys.","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7effd3f7974df6f365789bd1422f29bef9c36","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   should not be located on a PF of a VF corresponding to the other"},{"line_number":78,"context_line":"   port referenced by name or id. This attribute would be stored"},{"line_number":79,"context_line":"   in server.networks[i].pf-placement-not-near and its value"},{"line_number":80,"context_line":"   would be a port id or port name,"},{"line_number":81,"context_line":" * PCI requests handling code modification to respect placement"},{"line_number":82,"context_line":"   requirements and to store this information,"},{"line_number":83,"context_line":" * Nova-scheduler needs to be modified to properly calculate required"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_a6685bf6","line":80,"updated":"2016-05-16 15:43:18.000000000","message":"I would much prefer that we just do this kind of placement by default, when we see two requests for the same network.\n\nIs there a good reason not to do that?","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":17822,"name":"Gideon Agmon","email":"gideon.agmon@nokia.com","username":"gideon59"},"change_message_id":"93f999cf4ac03b6bc518f6fbfba9f79e93e9c82e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   should not be located on a PF of a VF corresponding to the other"},{"line_number":78,"context_line":"   port referenced by name or id. This attribute would be stored"},{"line_number":79,"context_line":"   in server.networks[i].pf-placement-not-near and its value"},{"line_number":80,"context_line":"   would be a port id or port name,"},{"line_number":81,"context_line":" * PCI requests handling code modification to respect placement"},{"line_number":82,"context_line":"   requirements and to store this information,"},{"line_number":83,"context_line":" * Nova-scheduler needs to be modified to properly calculate required"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_0d70490a","line":80,"in_reply_to":"dab17558_a6685bf6","updated":"2016-05-17 05:25:58.000000000","message":"Relying on the fact that two port share the same network / IP subnet seems not sufficient, as there are real implementations where the resiliency is at L3 (i.e. two ports on different subnets).","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"a30fef0485e224c4560277a30bd923ca6d5db19b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"   two sriov ports requested for a guest, we just check if we have 2 VFs"},{"line_number":86,"context_line":"   available. However, it\u0027s not enough when these ports cannot reside"},{"line_number":87,"context_line":"   on the same PF due to \u0027pf-placement-not-near\u0027 configuration, and"},{"line_number":88,"context_line":"   the requirement should be to have a host with 2 PFs that have at"},{"line_number":89,"context_line":"   least 1 VF available."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"In case when \u0027pf-placement-not-near\u0027 is not specified the default"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_870b8829","line":88,"updated":"2016-06-01 04:40:59.000000000","message":"currently, objects.pci_device_pool.PciDevicePool does not contain information about PFs. As per the proposal, wouldn\u0027t it require to break down \u0027count\u0027 field into \u003cpf_index\u003e: \u003cvf_count\u003e?","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7effd3f7974df6f365789bd1422f29bef9c36","unresolved":false,"context_lines":[{"line_number":86,"context_line":"   available. However, it\u0027s not enough when these ports cannot reside"},{"line_number":87,"context_line":"   on the same PF due to \u0027pf-placement-not-near\u0027 configuration, and"},{"line_number":88,"context_line":"   the requirement should be to have a host with 2 PFs that have at"},{"line_number":89,"context_line":"   least 1 VF available."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"In case when \u0027pf-placement-not-near\u0027 is not specified the default"},{"line_number":92,"context_line":"behavior doesn\u0027t change."}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_c618ff86","line":89,"updated":"2016-05-16 15:43:18.000000000","message":"This is true, but also tricky. Can you say how this maps to the new resource pool view of the world? I assume two separate resource pools for the same resource on a single node? Or something different.","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7effd3f7974df6f365789bd1422f29bef9c36","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"In case when \u0027pf-placement-not-near\u0027 is not specified the default"},{"line_number":92,"context_line":"behavior doesn\u0027t change."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Alternatives"},{"line_number":95,"context_line":"------------"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_a952ec10","line":93,"updated":"2016-05-16 15:43:18.000000000","message":"How do we expose this to the instance? Do we need changes in the guest, so it knows a bond is a good idea?","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2748724ccbb7a85f6217e44f00a457dccfc647cd","unresolved":false,"context_lines":[{"line_number":99,"context_line":"responsible for more than one device by adding a new attribute, say,"},{"line_number":100,"context_line":"binding:redundancy, so when user creates a port:"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"neutron port-create --binding:vnic_type\u003ddirect --binding:redundancy\u003d2"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It would mean that user wants 2 NICs to achieve redundancy of this"},{"line_number":105,"context_line":"port."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_adb0b88c","line":102,"updated":"2016-05-27 23:22:42.000000000","message":"If you were to pursue changes to the Neutron model wouldn\u0027t be more reasonable to define a bonding entity that captures the properties of your physical infrastructure (nics etc) and then provide a mechanism to associate it to a port, which is semantically a single access point, where traffic flows to/from? I\u0027d rather not bloat the port resource","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2748724ccbb7a85f6217e44f00a457dccfc647cd","unresolved":false,"context_lines":[{"line_number":105,"context_line":"port."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Port model will need to be modified to store more than 1 MAC address,"},{"line_number":108,"context_line":"1 mac address for each redundant interface."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Nova\u0027s network.neutronv2 code will be modified to created necessary"},{"line_number":111,"context_line":"number of interfaces based on binding:redundancy setting."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9abb7d3a_0df3c474","line":108,"updated":"2016-05-27 23:22:42.000000000","message":"you can already do so via allowed address pairs, though they do not bind to specific nics.","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7404666e2164c09343e2b0632b62d128a3ffae2f","unresolved":false,"context_lines":[{"line_number":120,"context_line":"              \"physical_network\": \"foo\","},{"line_number":121,"context_line":"               \"pci_vendor_info\": \"8086:10ed\"}}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"This solution appears to be cleaner and simpler from user perspective,"},{"line_number":124,"context_line":"but more vast from development perspective and touches two components"},{"line_number":125,"context_line":"instead of one."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Data model impact"},{"line_number":128,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_27a601ae","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":15},"updated":"2016-05-17 09:31:19.000000000","message":"I realize that this is far more work and won\u0027t address the NUMA issue pointed out above, but this seems like a cleaner, more obvious, and altogether better solution. This is the API _I_ would like to use, were I an operator. Are you sure you won\u0027t reconsider? :)","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7404666e2164c09343e2b0632b62d128a3ffae2f","unresolved":false,"context_lines":[{"line_number":216,"context_line":"Documentation Impact"},{"line_number":217,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Documentation should be updated with information on how this feature should"},{"line_number":220,"context_line":"be used."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"References"},{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_27d441ea","line":220,"range":{"start_line":219,"start_character":0,"end_line":220,"end_character":8},"updated":"2016-05-17 09:31:19.000000000","message":"note: Please prioritize this regardless of the solution you end with. Lack of docs around these \"advanced\" or \"NFV\" features was an issue called out repeatedly at the Austin summit.","commit_id":"e207ec54eaded9ba4040599611770f0a11a5b700"}],"specs/ocata/approved/user-controlled-sriov-ports-allocation.rst":[{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"b4a688e77b70a03239af7d646557f0bc94494b74","unresolved":false,"context_lines":[{"line_number":104,"context_line":"and associated two ports per group."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":107,"context_line":"\u0027tag\u0027 notion. This allows the cloud deployer to group PCI devices in"},{"line_number":108,"context_line":"the same physnet. In this spec we use this grouping to achieve High"},{"line_number":109,"context_line":"Availability as we will make sure to choose VF from two different"},{"line_number":110,"context_line":"GROUPS where each group indicates a shared risk; i.e. two VFs of a"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_8a1ed55c","line":107,"updated":"2016-06-14 12:55:39.000000000","message":"s/support \u0027tag\u0027 notion/support the notion of \u0027tag\u0027/","commit_id":"7a1278e4163fadabd7107884f898d0b5251c6299"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"33c32d7c1b6cd749bad8e75d13e397b36a6c86dd","unresolved":false,"context_lines":[{"line_number":104,"context_line":"and associated two ports per group."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":107,"context_line":"\u0027tag\u0027 notion. This allows the cloud deployer to group PCI devices in"},{"line_number":108,"context_line":"the same physnet. In this spec we use this grouping to achieve High"},{"line_number":109,"context_line":"Availability as we will make sure to choose VF from two different"},{"line_number":110,"context_line":"GROUPS where each group indicates a shared risk; i.e. two VFs of a"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_ba65d5af","line":107,"in_reply_to":"7aa08908_8a1ed55c","updated":"2016-06-14 15:53:09.000000000","message":"Done","commit_id":"7a1278e4163fadabd7107884f898d0b5251c6299"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"b4a688e77b70a03239af7d646557f0bc94494b74","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                               \"tag\":\"blue\"}"},{"line_number":132,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF4\","},{"line_number":133,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":134,"context_line":"                               \"tag\":\"blue\"}"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Now the user can boot a VM with High Availability using the following"},{"line_number":137,"context_line":"CLI command::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_0d483fcb","line":134,"updated":"2016-06-14 12:55:39.000000000","message":"If I understand correctly, we let the user figure out if the VFs belong to the same PF or not.\n\nWould\u0027t be easier for the user if nova figures this out ?  We know the PF shares the same base PCI address.\n\nThere are two problems here that you are trying to solve.  HA based on physical ports on the compute and HA based on switching domain.  In this proposition you use the \"tag\" as a solution for both problems.\n\nI\u0027m wondering if \"tag\" should only be used to determine the switching domain.  \n\nMaybe a user only cares about using different PF for HA reason and he doesn\u0027t want to mess with the whitelist for that.","commit_id":"7a1278e4163fadabd7107884f898d0b5251c6299"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"33c32d7c1b6cd749bad8e75d13e397b36a6c86dd","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                               \"tag\":\"blue\"}"},{"line_number":132,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF4\","},{"line_number":133,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":134,"context_line":"                               \"tag\":\"blue\"}"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Now the user can boot a VM with High Availability using the following"},{"line_number":137,"context_line":"CLI command::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_5ae671b0","line":134,"in_reply_to":"7aa08908_0d483fcb","updated":"2016-06-14 15:53:09.000000000","message":"IMHO, this bring match more flexibility to the cloud deployer.\nAlso different PF can be different PF on the same NIC or different PF on different NIC. In this case cloud deployer can control this in a way he group the pci devices.","commit_id":"7a1278e4163fadabd7107884f898d0b5251c6299"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"b4a688e77b70a03239af7d646557f0bc94494b74","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Dependencies"},{"line_number":278,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_ea1959d2","line":275,"updated":"2016-06-14 12:55:39.000000000","message":"You\u0027ll also have to change create_pci_requests_for_sriov_ports in neutronv2 api.","commit_id":"7a1278e4163fadabd7107884f898d0b5251c6299"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"33c32d7c1b6cd749bad8e75d13e397b36a6c86dd","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Dependencies"},{"line_number":278,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_3ab565ec","line":275,"in_reply_to":"7aa08908_ea1959d2","updated":"2016-06-14 15:53:09.000000000","message":"Done","commit_id":"7a1278e4163fadabd7107884f898d0b5251c6299"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_2339bca4","line":46,"range":{"start_line":46,"start_character":54,"end_line":46,"end_character":55},"updated":"2016-06-14 16:41:31.000000000","message":"nit: spell this out","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8e6b1b4c933a5f0b47bf767ef95f401146511939","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a9d85d2_963092a0","line":46,"range":{"start_line":46,"start_character":54,"end_line":46,"end_character":55},"in_reply_to":"7aa08908_2339bca4","updated":"2016-06-19 03:29:37.000000000","message":"Done","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80bffe231e70c02f01038d968d79ea303073d1cd","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs nova scheduler to"},{"line_number":52,"context_line":"    allocate two VFs on two different PFs."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Use Case B:"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_0365a043","line":52,"range":{"start_line":46,"start_character":0,"end_line":52,"end_character":42},"updated":"2016-06-14 16:43:50.000000000","message":"this brings up the same issue I pointed out in PS14. Any idea how we can resolve this?\n\n \u003e tl;dr: This will cause a lot of scheduling failures for instances with NUMA topologies.\n \u003e AFAICT, this is going to cause a lot of heartache for folks using NUMA. NUMA topologies can be enabled in the guest both implicitly (attaching hugepages) and explicitly (image metadata or flavor extra specs). When using a NUMA topology with a PCI/SR-IOV device attached, your vCPU processes are affinitized to the node that said device is associated with. Attempting to attach a second device associated with a different node _without_ specifying a multi-node NUMA topology will result in a scheduling failure. This is a tricky, but rare, corner case right now, however, I imagine the system you\u0027re proposing will make occurrences of this issue far more common. I think you need to address this issue here lest before it becomes a bigger one during development.\n \u003e NOTE: I recently documented this behavior [1], if you want to see official documentation on the issue (see \u0027Customizing instance NUMA topologies\u0027, second warning).\n[1] https://review.openstack.org/#/c/312959/20/doc/admin-guide/source/compute-numa-cpu-pinning.rst","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8e6b1b4c933a5f0b47bf767ef95f401146511939","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs nova scheduler to"},{"line_number":52,"context_line":"    allocate two VFs on two different PFs."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Use Case B:"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a9d85d2_76c88675","line":52,"range":{"start_line":46,"start_character":0,"end_line":52,"end_character":42},"in_reply_to":"7aa08908_0365a043","updated":"2016-06-19 03:29:37.000000000","message":"@Stephen,\nI am less familiar with NUMA, but we can work on this in the SR-IOV meeting or in irc to understand to complexity","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":104,"context_line":"and associated two ports per group."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":107,"context_line":"the notion of \u0027tag\u0027. This allows the cloud deployer to group PCI devices in"},{"line_number":108,"context_line":"the same physnet. In this spec we use this grouping to achieve High"},{"line_number":109,"context_line":"Availability as we will make sure to choose VF from two different"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_8348702e","line":106,"range":{"start_line":106,"start_character":32,"end_line":106,"end_character":57},"updated":"2016-06-14 16:41:31.000000000","message":"nit: format as code","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8e6b1b4c933a5f0b47bf767ef95f401146511939","unresolved":false,"context_lines":[{"line_number":103,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":104,"context_line":"and associated two ports per group."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":107,"context_line":"the notion of \u0027tag\u0027. This allows the cloud deployer to group PCI devices in"},{"line_number":108,"context_line":"the same physnet. In this spec we use this grouping to achieve High"},{"line_number":109,"context_line":"Availability as we will make sure to choose VF from two different"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a9d85d2_d6b85ae8","line":106,"range":{"start_line":106,"start_character":32,"end_line":106,"end_character":57},"in_reply_to":"7aa08908_8348702e","updated":"2016-06-19 03:29:37.000000000","message":"not sure what you mean by code.\naccording to http://docutils.sourceforge.net/docs/ref/rst/directives.html#code \n.. code:: python should be use for section of code.\ncan you provide an example of what you mean?","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":114,"context_line":"(e.g. PFs or NICs)."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"For example lets assume there are 2 SR-IOV NICs A and B. NIC A and NIC"},{"line_number":117,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"},{"line_number":118,"context_line":"correspondingly."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"An example of a PCI whitelist that corresponds to the red and blue"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_2307fcca","line":117,"range":{"start_line":117,"start_character":35,"end_line":117,"end_character":42},"updated":"2016-06-14 16:41:31.000000000","message":"nit: format as code?","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":214,"context_line":"  as in [3]_."},{"line_number":215,"context_line":"* Regarding Neutron instead of using tag resource we can create bond model."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Data model impact"},{"line_number":218,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_03a640c0","line":215,"range":{"start_line":215,"start_character":0,"end_line":215,"end_character":75},"updated":"2016-06-14 16:41:31.000000000","message":"Could you provide a little more information about this, including notes on why it\u0027s an inferior idea?","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8e6b1b4c933a5f0b47bf767ef95f401146511939","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":214,"context_line":"  as in [3]_."},{"line_number":215,"context_line":"* Regarding Neutron instead of using tag resource we can create bond model."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Data model impact"},{"line_number":218,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a9d85d2_b6a02ea7","line":215,"range":{"start_line":215,"start_character":0,"end_line":215,"end_character":75},"in_reply_to":"7aa08908_03a640c0","updated":"2016-06-19 03:29:37.000000000","message":"I don\u0027t think it is inferior, but I don\u0027t want to block this spec, because of missing feature in neutron.","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Cloud depolyer will need to set the pci_passthrough_whitelist"},{"line_number":254,"context_line":"to allow grouping of PCI devices."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_a37e4c16","line":253,"range":{"start_line":253,"start_character":36,"end_line":253,"end_character":61},"updated":"2016-06-14 16:41:31.000000000","message":"nit: code","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Cloud depolyer will need to set the pci_passthrough_whitelist"},{"line_number":254,"context_line":"to allow grouping of PCI devices."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_c398b877","line":253,"range":{"start_line":253,"start_character":6,"end_line":253,"end_character":14},"updated":"2016-06-14 16:41:31.000000000","message":"s/depolyer/deployer","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8e6b1b4c933a5f0b47bf767ef95f401146511939","unresolved":false,"context_lines":[{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Cloud depolyer will need to set the pci_passthrough_whitelist"},{"line_number":254,"context_line":"to allow grouping of PCI devices."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a9d85d2_36e71e14","line":253,"range":{"start_line":253,"start_character":6,"end_line":253,"end_character":14},"in_reply_to":"7aa08908_c398b877","updated":"2016-06-19 03:29:37.000000000","message":"Done","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ce447c1e1129563b31ad9ab1f124d025896871c","unresolved":false,"context_lines":[{"line_number":279,"context_line":"Dependencies"},{"line_number":280,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Neutron resource tagging support only network resource. We need to extend"},{"line_number":283,"context_line":"  it to support tagging of port resources. See [2]_"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_439a0863","line":282,"range":{"start_line":282,"start_character":27,"end_line":282,"end_character":39},"updated":"2016-06-14 16:41:31.000000000","message":"nit: s/support only/only supports/","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8e6b1b4c933a5f0b47bf767ef95f401146511939","unresolved":false,"context_lines":[{"line_number":279,"context_line":"Dependencies"},{"line_number":280,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Neutron resource tagging support only network resource. We need to extend"},{"line_number":283,"context_line":"  it to support tagging of port resources. See [2]_"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a9d85d2_76f1a6cd","line":282,"range":{"start_line":282,"start_character":27,"end_line":282,"end_character":39},"in_reply_to":"7aa08908_439a0863","updated":"2016-06-19 03:29:37.000000000","message":"Done","commit_id":"89c61a86c5595bd970ff2f7c79c77800bc50c764"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":117,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"},{"line_number":118,"context_line":"correspondingly."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"An example of a PCI whitelist that corresponds to the red and blue"},{"line_number":121,"context_line":"groups can be::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_a1a0b144","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":15},"updated":"2016-09-06 15:42:10.000000000","message":"nit: respectively","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":117,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"},{"line_number":118,"context_line":"correspondingly."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"An example of a PCI whitelist that corresponds to the red and blue"},{"line_number":121,"context_line":"groups can be::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_98d25733","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":15},"in_reply_to":"9a89bdaa_a1a0b144","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":204,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":205,"context_line":"      corresponding PCI devices pool matching the wildcard tag."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    * This spec doesn\u0027t address PCI with NUMA allocation, but it"},{"line_number":208,"context_line":"      can be in the future."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_05a168a3","line":208,"range":{"start_line":207,"start_character":0,"end_line":208,"end_character":27},"updated":"2016-09-06 15:42:10.000000000","message":"IMO, you need to make this more explicit - namely, that this won\u0027t work with many NUMA topologies as things stand today, though it should be addressed in a different, future spec. You could copy-paste a variant my explanation into this spec if necessary","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":204,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":205,"context_line":"      corresponding PCI devices pool matching the wildcard tag."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    * This spec doesn\u0027t address PCI with NUMA allocation, but it"},{"line_number":208,"context_line":"      can be in the future."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_92f153d0","line":208,"range":{"start_line":207,"start_character":0,"end_line":208,"end_character":27},"in_reply_to":"9a89bdaa_05a168a3","updated":"2016-09-11 13:26:36.000000000","message":"Can you give examples for cases which this won\u0027t work?","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bdb903787fb66f6198a75f64cb6ed4da770cf3cd","unresolved":false,"context_lines":[{"line_number":204,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":205,"context_line":"      corresponding PCI devices pool matching the wildcard tag."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    * This spec doesn\u0027t address PCI with NUMA allocation, but it"},{"line_number":208,"context_line":"      can be in the future."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_eecc6163","line":208,"range":{"start_line":207,"start_character":0,"end_line":208,"end_character":27},"in_reply_to":"9a89bdaa_92f153d0","updated":"2016-09-12 11:29:17.000000000","message":"Sure. Take a host with two NUMA nodes and two PFs. Each PF is associated with a different NUMA node.\n\nAttempt to boot an instance with \u0027hw:cpu_policy\u003ddedicated\u0027 and two SR-IOV ports sourced from different PFs (for HA). This will fail to boot as, by default, (a) all pinned CPUs for an instance must be sourced from the same NUMA node and (b) PCI devices must be on the same NUMA node as at least pinned CPU.\n\nYou can prevent this failure by configuring the guest NUMA topology to split the guest over multiple cores. For example, if you\u0027re attaching two PCI devices from two different nodes, then you could request a two node guest NUMA topology:\n\n    hw:numa_nodes\u003d2\n\nHowever, even this can have issues if, for example, a NUMA nodes associated with a PCI device is already full.\n\nIMO this issue needs to be called out now to prevent future questions. In addition, it might be worth linking to the below specs which, when combined, should resolve this issue:\n\n- https://blueprints.launchpad.net/nova/+spec/reserve-numa-with-pci\n  https://review.openstack.org/#/c/364468/\n\n- https://blueprints.launchpad.net/nova/+spec/share-pci-between-numa-nodes\n  https://review.openstack.org/#/c/361140/","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":214,"context_line":"  as in [3]_."},{"line_number":215,"context_line":"* Regarding Neutron instead of using tag resource we can create bond model."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Data model impact"},{"line_number":218,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_65e154d0","line":215,"range":{"start_line":213,"start_character":0,"end_line":215,"end_character":75},"updated":"2016-09-06 15:42:10.000000000","message":"These need explanation as to why they\u0027re not as good as your proposal","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":214,"context_line":"  as in [3]_."},{"line_number":215,"context_line":"* Regarding Neutron instead of using tag resource we can create bond model."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Data model impact"},{"line_number":218,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_926cf39d","line":215,"range":{"start_line":213,"start_character":0,"end_line":215,"end_character":75},"in_reply_to":"9a89bdaa_65e154d0","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":217,"context_line":"Data model impact"},{"line_number":218,"context_line":"-----------------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Adding tag to pci_device_pool object."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"REST API impact"},{"line_number":223,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_054b28ca","line":220,"range":{"start_line":220,"start_character":14,"end_line":220,"end_character":29},"updated":"2016-09-06 15:42:10.000000000","message":"nit: Format as code with double backticks","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":217,"context_line":"Data model impact"},{"line_number":218,"context_line":"-----------------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Adding tag to pci_device_pool object."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"REST API impact"},{"line_number":223,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_d8b3ff08","line":220,"range":{"start_line":220,"start_character":14,"end_line":220,"end_character":29},"in_reply_to":"9a89bdaa_054b28ca","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Performance Impact"},{"line_number":245,"context_line":"------------------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"This will increase the number a pools in computes nodes if"},{"line_number":248,"context_line":"the cloud deployer will use the \"tag\" option."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_858498d4","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":45},"updated":"2016-09-06 15:42:10.000000000","message":"I don\u0027t understand this point. Could you elaborate?","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Performance Impact"},{"line_number":245,"context_line":"------------------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"This will increase the number a pools in computes nodes if"},{"line_number":248,"context_line":"the cloud deployer will use the \"tag\" option."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_72912f9a","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":45},"in_reply_to":"9a89bdaa_858498d4","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Cloud deployer will need to set the pci_passthrough_whitelist"},{"line_number":254,"context_line":"to allow grouping of PCI devices."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_6564f448","line":253,"range":{"start_line":253,"start_character":36,"end_line":253,"end_character":61},"updated":"2016-09-06 15:42:10.000000000","message":"nit: Format as code with double backticks","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":250,"context_line":"Other deployer impact"},{"line_number":251,"context_line":"---------------------"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Cloud deployer will need to set the pci_passthrough_whitelist"},{"line_number":254,"context_line":"to allow grouping of PCI devices."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_b26737b6","line":253,"range":{"start_line":253,"start_character":36,"end_line":253,"end_character":61},"in_reply_to":"9a89bdaa_6564f448","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":270,"context_line":"Work Items"},{"line_number":271,"context_line":"----------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_45c8d022","line":273,"range":{"start_line":273,"start_character":14,"end_line":273,"end_character":39},"updated":"2016-09-06 15:42:10.000000000","message":"nit: code","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":270,"context_line":"Work Items"},{"line_number":271,"context_line":"----------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_d8aa1f85","line":273,"range":{"start_line":273,"start_character":14,"end_line":273,"end_character":39},"in_reply_to":"9a89bdaa_45c8d022","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":271,"context_line":"----------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"},{"line_number":277,"context_line":"   and add it to the pci_request"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_45eff086","line":274,"range":{"start_line":274,"start_character":41,"end_line":274,"end_character":55},"updated":"2016-09-06 15:42:10.000000000","message":"What\u0027s this?","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":271,"context_line":"----------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"},{"line_number":277,"context_line":"   and add it to the pci_request"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_a5d51cba","line":274,"range":{"start_line":274,"start_character":14,"end_line":274,"end_character":24},"updated":"2016-09-06 15:42:10.000000000","message":"nit: code","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":271,"context_line":"----------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"},{"line_number":277,"context_line":"   and add it to the pci_request"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_38906b4e","line":274,"range":{"start_line":274,"start_character":41,"end_line":274,"end_character":55},"in_reply_to":"9a89bdaa_45eff086","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":271,"context_line":"----------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"},{"line_number":277,"context_line":"   and add it to the pci_request"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_1895673f","line":274,"range":{"start_line":274,"start_character":14,"end_line":274,"end_character":24},"in_reply_to":"9a89bdaa_a5d51cba","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"223f93ed823f879aea0dd3f8a5afd2251945cf09","unresolved":false,"context_lines":[{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"},{"line_number":277,"context_line":"   and add it to the pci_request"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_a5ec3c90","line":276,"range":{"start_line":276,"start_character":10,"end_line":276,"end_character":45},"updated":"2016-09-06 15:42:10.000000000","message":"nit: code?","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"66ec28878230949de4e21a9554c19851d8ef8910","unresolved":false,"context_lines":[{"line_number":273,"context_line":" * Extend the pci_passthrough_whitelist with tag"},{"line_number":274,"context_line":" * Add tag to pci_device pool and update the pci manage"},{"line_number":275,"context_line":"   to filter according to tag as well."},{"line_number":276,"context_line":" * Update create_pci_requests_for_sriov_ports to get the port tag"},{"line_number":277,"context_line":"   and add it to the pci_request"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a89bdaa_f8ad239c","line":276,"range":{"start_line":276,"start_character":10,"end_line":276,"end_character":45},"in_reply_to":"9a89bdaa_a5ec3c90","updated":"2016-09-11 13:26:36.000000000","message":"Done","commit_id":"17f35b8c4846990e5a1234cca7ffbd07193b0066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"bd5505ed0759c9e6a9c1bd6abbba1f53ca111fa8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/user-controlled-sriov-ports-allocation"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In certain scenarios an additional HA for networking might be required"},{"line_number":15,"context_line":"for a guest.  That can be achieved by exposing multiple virtual"},{"line_number":16,"context_line":"functions (VFs) inside a guest, and utilizing them in various ways to"},{"line_number":17,"context_line":"achieve HA. For example, one way is bonding the VFs. Another is having"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_acadea9c","line":14,"updated":"2016-09-12 17:48:34.000000000","message":"\"additional HA\" doesn\u0027t mean much.\n\nI would re-phrase it as \"In certain scenarios a guest might require a networking HA solution\".","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/user-controlled-sriov-ports-allocation"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In certain scenarios an additional HA for networking might be required"},{"line_number":15,"context_line":"for a guest.  That can be achieved by exposing multiple virtual"},{"line_number":16,"context_line":"functions (VFs) inside a guest, and utilizing them in various ways to"},{"line_number":17,"context_line":"achieve HA. For example, one way is bonding the VFs. Another is having"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_8a1ef709","line":14,"in_reply_to":"9a89bdaa_acadea9c","updated":"2016-09-18 14:19:45.000000000","message":"Done","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"af6156ac8a1cdd9a9f9f975bfb0d7edaadb38db8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"number of Virtual Functions (VF) within this device, each of the VFs could be"},{"line_number":34,"context_line":"associated with a network port and passed to a guest using PCI passthrough."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"OpenStack does support SR-IOV ports, however, it gives no control to user on"},{"line_number":37,"context_line":"how VFs will be distributed across PFs. Moreover, with the current"},{"line_number":38,"context_line":"implementation, if a host has multiple PFs, VFs will be allocated in a linear"},{"line_number":39,"context_line":"fashion."}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_d1f39071","line":36,"updated":"2016-09-18 06:55:19.000000000","message":"the","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"bd5505ed0759c9e6a9c1bd6abbba1f53ca111fa8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs nova scheduler to"},{"line_number":52,"context_line":"    allocate two VFs on two different PFs."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Use Case B:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_acb24ae3","line":51,"updated":"2016-09-12 17:48:34.000000000","message":"nit: c/nova scheduler/the nova scheduler/","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs nova scheduler to"},{"line_number":52,"context_line":"    allocate two VFs on two different PFs."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Use Case B:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_ca99df7a","line":51,"in_reply_to":"9a89bdaa_acb24ae3","updated":"2016-09-18 14:19:45.000000000","message":"Done","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"bd5505ed0759c9e6a9c1bd6abbba1f53ca111fa8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Use Case B:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":57,"context_line":"    Each NIC has TWO physical functions. All physical functions on the"},{"line_number":58,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":59,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. Use"},{"line_number":60,"context_line":"    case A would allow the Nova scheduler to assign two VFs from two"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_ace96ab9","line":57,"updated":"2016-09-12 17:48:34.000000000","message":"Do you mean a NIC that has two ports ?  If so, maybe just clarifies this in the text.","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Use Case B:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":57,"context_line":"    Each NIC has TWO physical functions. All physical functions on the"},{"line_number":58,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":59,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. Use"},{"line_number":60,"context_line":"    case A would allow the Nova scheduler to assign two VFs from two"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_0a8e672d","line":57,"in_reply_to":"9a89bdaa_ace96ab9","updated":"2016-09-18 14:19:45.000000000","message":"yes","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"bd5505ed0759c9e6a9c1bd6abbba1f53ca111fa8","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    Risk Link Groups [1]_ but on a"},{"line_number":86,"context_line":"    smaller scope)."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Proposed change"},{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Leveraging the neutron support for resource tagging [2]_"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_a7ad059d","line":88,"updated":"2016-09-12 17:48:34.000000000","message":"I\u0027d like to see how you are planning to implement this feature.  Maybe not in details, but a simple walk through from a nova point of view would be good and helps to make sure the effort is well understood.\n\nWith this proposition, don\u0027t the scheduler would have to first fetch the tags from neutron via rpc ?  Not sure if this is desired.  Maybe a solution that is not dependent on neutron would be more suitable.","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    Risk Link Groups [1]_ but on a"},{"line_number":86,"context_line":"    smaller scope)."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Proposed change"},{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Leveraging the neutron support for resource tagging [2]_"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_8aa19796","line":88,"in_reply_to":"9a89bdaa_a7ad059d","updated":"2016-09-18 14:19:45.000000000","message":"we don\u0027t need RPC because nova-api query the neutron port to get the physnet in create_pci_requests_for_sriov_ports. see in https://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L1420\nThe idea is just to see if there is also tag on the port and if so we should add to the pci_request spec.","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"bd5505ed0759c9e6a9c1bd6abbba1f53ca111fa8","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF1\","},{"line_number":124,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":125,"context_line":"                               \"tag\":\"red\"}"},{"line_number":126,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF2\","},{"line_number":127,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":128,"context_line":"                               \"tag\":\"red\"}"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_8c574659","line":125,"updated":"2016-09-12 17:48:34.000000000","message":"I\u0027m not sure about the keyword \"tag\", this doesn\u0027t mean much.\n\nMaybe something like \"networkgroup\" would be more appropriate ?  I\u0027m open to discussion.","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF1\","},{"line_number":124,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":125,"context_line":"                               \"tag\":\"red\"}"},{"line_number":126,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF2\","},{"line_number":127,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":128,"context_line":"                               \"tag\":\"red\"}"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_2d089d27","line":125,"in_reply_to":"9a89bdaa_8c574659","updated":"2016-09-18 14:19:45.000000000","message":"Done","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"af6156ac8a1cdd9a9f9f975bfb0d7edaadb38db8","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":142,"context_line":"different physical function, as one virtual function belongs to red group"},{"line_number":143,"context_line":"and the other to blue group."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_8a6fdafa","line":141,"range":{"start_line":141,"start_character":59,"end_line":141,"end_character":63},"updated":"2016-09-18 06:55:19.000000000","message":"remove","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":142,"context_line":"different physical function, as one virtual function belongs to red group"},{"line_number":143,"context_line":"and the other to blue group."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_4da7a90a","line":141,"range":{"start_line":141,"start_character":59,"end_line":141,"end_character":63},"in_reply_to":"7a8ec9b2_8a6fdafa","updated":"2016-09-18 14:19:45.000000000","message":"Done","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"af6156ac8a1cdd9a9f9f975bfb0d7edaadb38db8","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":142,"context_line":"different physical function, as one virtual function belongs to red group"},{"line_number":143,"context_line":"and the other to blue group."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"On the hand, the following command will make sure that the two SR-IOV ports"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_4a507232","line":142,"range":{"start_line":142,"start_character":63,"end_line":142,"end_character":64},"updated":"2016-09-18 06:55:19.000000000","message":"the","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":142,"context_line":"different physical function, as one virtual function belongs to red group"},{"line_number":143,"context_line":"and the other to blue group."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"On the hand, the following command will make sure that the two SR-IOV ports"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_edeb1511","line":142,"range":{"start_line":142,"start_character":63,"end_line":142,"end_character":64},"in_reply_to":"7a8ec9b2_4a507232","updated":"2016-09-18 14:19:45.000000000","message":"Done","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"af6156ac8a1cdd9a9f9f975bfb0d7edaadb38db8","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":142,"context_line":"different physical function, as one virtual function belongs to red group"},{"line_number":143,"context_line":"and the other to blue group."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"On the hand, the following command will make sure that the two SR-IOV ports"},{"line_number":146,"context_line":"will be on the same Physical Function - indicated by a single tag \"red\"::"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_aa61f606","line":143,"range":{"start_line":143,"start_character":16,"end_line":143,"end_character":17},"updated":"2016-09-18 06:55:19.000000000","message":"the","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"af6156ac8a1cdd9a9f9f975bfb0d7edaadb38db8","unresolved":false,"context_lines":[{"line_number":142,"context_line":"different physical function, as one virtual function belongs to red group"},{"line_number":143,"context_line":"and the other to blue group."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"On the hand, the following command will make sure that the two SR-IOV ports"},{"line_number":146,"context_line":"will be on the same Physical Function - indicated by a single tag \"red\"::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da2"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_ea577e23","line":145,"range":{"start_line":145,"start_character":6,"end_line":145,"end_character":7},"updated":"2016-09-18 06:55:19.000000000","message":"other","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"af6156ac8a1cdd9a9f9f975bfb0d7edaadb38db8","unresolved":false,"context_lines":[{"line_number":145,"context_line":"On the hand, the following command will make sure that the two SR-IOV ports"},{"line_number":146,"context_line":"will be on the same Physical Function - indicated by a single tag \"red\"::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da2"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"A more complex scenario will be:"},{"line_number":151,"context_line":"Consider a situation with compute nodes that have 2 SR-IOV NICs."}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_2a1b2682","line":148,"updated":"2016-09-18 06:55:19.000000000","message":"missing --tag\u003d\"red\" ?","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e131015f015f6e7bbdf503432d33afa144a203c1","unresolved":false,"context_lines":[{"line_number":145,"context_line":"On the hand, the following command will make sure that the two SR-IOV ports"},{"line_number":146,"context_line":"will be on the same Physical Function - indicated by a single tag \"red\"::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da2"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"A more complex scenario will be:"},{"line_number":151,"context_line":"Consider a situation with compute nodes that have 2 SR-IOV NICs."}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_4d432913","line":148,"in_reply_to":"7a8ec9b2_2a1b2682","updated":"2016-09-18 14:19:45.000000000","message":"no, because we are passing the port which is belogns to group red","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f8ae59040f0d6487b38428e53d92cc97730dc037","unresolved":false,"context_lines":[{"line_number":245,"context_line":"Performance Impact"},{"line_number":246,"context_line":"------------------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Until now PCI device were grouped under the same physnet. The proposed change"},{"line_number":249,"context_line":"add tag notation which will sub group pci devices according to physnet and"},{"line_number":250,"context_line":"tags. This will increase the number of pci pools seen by scheduler per compute"},{"line_number":251,"context_line":"node."},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Other deployer impact"},{"line_number":254,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_8e5af581","line":251,"range":{"start_line":248,"start_character":0,"end_line":251,"end_character":5},"updated":"2016-09-12 11:31:09.000000000","message":"much better","commit_id":"fc266cc2b4c94290d5393404f16eaee3c9b1d93e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"69d2532d57090a7ab44615b395f4db24792b65b0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Use Case B:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":57,"context_line":"    Each duel port NIC has TWO physical functions. All physical functions on"},{"line_number":58,"context_line":"    the node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":59,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. Use"},{"line_number":60,"context_line":"    case A would allow the Nova scheduler to assign two VFs from two"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7a8ec9b2_10bcd8b9","line":57,"updated":"2016-09-18 14:05:53.000000000","message":"s/duel/dual/","commit_id":"68f49e1c0c3be0478214aa2db2786b3741d03416"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"d6bf17d3136837cb5faa7f3bc3fc325cf3056860","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Use Case B:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    Consider a situation with compute nodes that have 2 SR-IOV NICs."},{"line_number":57,"context_line":"    Each duel port NIC has TWO physical functions. All physical functions on"},{"line_number":58,"context_line":"    the node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":59,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. Use"},{"line_number":60,"context_line":"    case A would allow the Nova scheduler to assign two VFs from two"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7a8ec9b2_b04884cd","line":57,"in_reply_to":"7a8ec9b2_10bcd8b9","updated":"2016-09-18 14:20:12.000000000","message":"Done","commit_id":"68f49e1c0c3be0478214aa2db2786b3741d03416"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"1db9190bf455e86a6ccba47ec5ff93d1925a0589","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    neutron tag-add --resource-type\u003dport --resource\u003da4 --tag\u003dblue"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":104,"context_line":"and associated two ports per group."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":107,"context_line":"the notion of \u0027networkgroup\u0027. This allows the cloud deployer to group"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7a8ec9b2_762349bd","line":104,"updated":"2016-09-19 08:25:33.000000000","message":"I\u0027m really not happy about using neutron tags as a functional tie to nova in this way.\n\nTags are a general metadata concept for cloud admin to use for their own purposes. If nova dictates that tags set in Neutron are all interpreted as network groups in Nova, then this prevents the cloud admin using tags for their own purposes as it will clash with Nova\u0027s usage.\n\nWe\u0027ve rejected fnuctional usage of Nova tags in other specs for this same reason.\n\nIf Nova needs to have a concept of a network group associated with ports, then I want to see that concept *explicitly* modelled on both the Nova and Neutron API side.","commit_id":"e00cf8ac2a7e801ddf92fbdccddc072ed61d234a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"1db9190bf455e86a6ccba47ec5ff93d1925a0589","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    * In the case where a wildcard is used in the tag, the PCI"},{"line_number":205,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":206,"context_line":"      corresponding PCI devices pool matching the wildcard tag."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":209,"context_line":"      associated with a PCI device. There are other blueprints for"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7a8ec9b2_783337f6","line":206,"updated":"2016-09-19 08:25:33.000000000","message":"That you are also doing wildcard matching against tag strings makes this whole modelling even worse, as you\u0027ve now taken what is considered to be an opaque string tag, and turned it into a structured data item.","commit_id":"e00cf8ac2a7e801ddf92fbdccddc072ed61d234a"},{"author":{"_account_id":22307,"name":"Carlos Conde","email":"carconper@gmail.com"},"change_message_id":"e755744e2f484bc9e8b0687d13cf41ff853c9093","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":209,"context_line":"      associated with a PCI device. There are other blueprints for"},{"line_number":210,"context_line":"      resolving these problems [5]_ [6]_. This mean that scheduling problems"},{"line_number":211,"context_line":"      of NUMA Nodes with this kind of PCI allocations is out of scope for this"},{"line_number":212,"context_line":"      blueprint and may be address in future."},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7a8ec9b2_7e988d78","line":210,"range":{"start_line":210,"start_character":51,"end_line":210,"end_character":52},"updated":"2016-09-18 17:22:40.000000000","message":"means","commit_id":"e00cf8ac2a7e801ddf92fbdccddc072ed61d234a"},{"author":{"_account_id":22307,"name":"Carlos Conde","email":"carconper@gmail.com"},"change_message_id":"e755744e2f484bc9e8b0687d13cf41ff853c9093","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":209,"context_line":"      associated with a PCI device. There are other blueprints for"},{"line_number":210,"context_line":"      resolving these problems [5]_ [6]_. This mean that scheduling problems"},{"line_number":211,"context_line":"      of NUMA Nodes with this kind of PCI allocations is out of scope for this"},{"line_number":212,"context_line":"      blueprint and may be address in future."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7a8ec9b2_de99a17a","line":211,"range":{"start_line":211,"start_character":54,"end_line":211,"end_character":56},"updated":"2016-09-18 17:22:40.000000000","message":"are","commit_id":"e00cf8ac2a7e801ddf92fbdccddc072ed61d234a"},{"author":{"_account_id":22307,"name":"Carlos Conde","email":"carconper@gmail.com"},"change_message_id":"e755744e2f484bc9e8b0687d13cf41ff853c9093","unresolved":false,"context_lines":[{"line_number":209,"context_line":"      associated with a PCI device. There are other blueprints for"},{"line_number":210,"context_line":"      resolving these problems [5]_ [6]_. This mean that scheduling problems"},{"line_number":211,"context_line":"      of NUMA Nodes with this kind of PCI allocations is out of scope for this"},{"line_number":212,"context_line":"      blueprint and may be address in future."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Alternatives"},{"line_number":215,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7a8ec9b2_7e7fad14","line":212,"range":{"start_line":212,"start_character":27,"end_line":212,"end_character":34},"updated":"2016-09-18 17:22:40.000000000","message":"addressed","commit_id":"e00cf8ac2a7e801ddf92fbdccddc072ed61d234a"},{"author":{"_account_id":22307,"name":"Carlos Conde","email":"carconper@gmail.com"},"change_message_id":"e755744e2f484bc9e8b0687d13cf41ff853c9093","unresolved":false,"context_lines":[{"line_number":217,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":218,"context_line":"  as in [3]_. This spec provide the cloud admin away to control on VF"},{"line_number":219,"context_line":"  allocation. The Distribute PCI Requests is best manner VF allocation"},{"line_number":220,"context_line":"  and can\u0027t enforce VFs HA, which can critical for the user."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Data model impact"},{"line_number":223,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7a8ec9b2_9e7ab922","line":220,"updated":"2016-09-18 17:22:40.000000000","message":"be","commit_id":"e00cf8ac2a7e801ddf92fbdccddc072ed61d234a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a36203381860e9224497f05a7a727297bafccd75","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Use Cases"},{"line_number":42,"context_line":"----------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a8bc5a2_bba3c34e","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":11},"updated":"2016-09-28 10:29:31.000000000","message":"nit: this should probably be header, rather than a definition list","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e08f7d5bbd17a38c71e8e0b8f49fae6f1da2d872","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Use Cases"},{"line_number":42,"context_line":"----------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3a98d1f4_55c5203a","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":11},"in_reply_to":"5a8bc5a2_bba3c34e","updated":"2016-09-29 07:19:42.000000000","message":"Done","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2e22b3c13c9f85d83245f135cc96b83672c887b7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs the nova scheduler to"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7a8ec9b2_ffae09e6","line":48,"range":{"start_line":47,"start_character":40,"end_line":48,"end_character":55},"updated":"2016-09-20 09:06:08.000000000","message":"Let\u0027s assume that we remove this extra constraints (i.e. one PF is connected to physnet-red and the other is to physnet-blue). Do we still have the same problem or in this case the user can specify that she wants one port from physnet-red and the other from physnet-blue?","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d232b17b3162dc8e6ed24dc949aed2708471ac56","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs the nova scheduler to"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7a8ec9b2_a17b7b7a","line":48,"range":{"start_line":47,"start_character":40,"end_line":48,"end_character":55},"in_reply_to":"7a8ec9b2_8b86a063","updated":"2016-09-20 10:57:46.000000000","message":"does this mean that the problem described in this spec can be worked around by modelling the redundant physical network with two physical network in neutron?","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"d134a880e3a18f2e3bfad0772f4d41e4351645d1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs the nova scheduler to"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7a8ec9b2_3c74f4fb","line":48,"range":{"start_line":47,"start_character":40,"end_line":48,"end_character":55},"in_reply_to":"7a8ec9b2_a17b7b7a","updated":"2016-09-20 11:19:14.000000000","message":"I never tried it and I am not sure how well it will work because of the separation to 2 networks\nI think you may need a virtual router to connect the 2 different networks.","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"286ca14a033d0c5c5f1d2fc4c96c94a288578dbc","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Use Case A:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":47,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":48,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":49,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":50,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":51,"context_line":"    connectivity of the VM. To achieve that he needs the nova scheduler to"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7a8ec9b2_8b86a063","line":48,"range":{"start_line":47,"start_character":40,"end_line":48,"end_character":55},"in_reply_to":"7a8ec9b2_ffae09e6","updated":"2016-09-20 10:28:20.000000000","message":"no, because it means that you have 2 port on different networks and these networks on belong to different physnets\nso you will create 2 pci_request. one pci request with phynset-red and other one with physnet-blue. the pci stats already create the pci device pool per physnet","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a36203381860e9224497f05a7a727297bafccd75","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                        --name a2 private"},{"line_number":100,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":101,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":102,"context_line":"                        --name a2 private"},{"line_number":103,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":104,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":105,"context_line":"                        --name a2 private"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a8bc5a2_9bb52780","line":102,"range":{"start_line":102,"start_character":31,"end_line":102,"end_character":33},"updated":"2016-09-28 10:29:31.000000000","message":"should this be called \u0027a3\u0027 (and \u0027a4\u0027 below)?","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e08f7d5bbd17a38c71e8e0b8f49fae6f1da2d872","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                        --name a2 private"},{"line_number":100,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":101,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":102,"context_line":"                        --name a2 private"},{"line_number":103,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":104,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":105,"context_line":"                        --name a2 private"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3a98d1f4_5c581d57","line":102,"range":{"start_line":102,"start_character":31,"end_line":102,"end_character":33},"in_reply_to":"5a8bc5a2_9bb52780","updated":"2016-09-29 07:19:42.000000000","message":"Done","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a36203381860e9224497f05a7a727297bafccd75","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":101,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":102,"context_line":"                        --name a2 private"},{"line_number":103,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":104,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":105,"context_line":"                        --name a2 private"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":108,"context_line":"and associated two ports per group."}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a8bc5a2_1b93d7fb","line":105,"range":{"start_line":103,"start_character":0,"end_line":105,"end_character":41},"updated":"2016-09-28 10:29:31.000000000","message":"yeah, this is better than tags. Good call, danpb","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e08f7d5bbd17a38c71e8e0b8f49fae6f1da2d872","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":101,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":102,"context_line":"                        --name a2 private"},{"line_number":103,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":104,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":105,"context_line":"                        --name a2 private"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":108,"context_line":"and associated two ports per group."}],"source_content_type":"text/x-rst","patch_set":24,"id":"3a98d1f4_b5e2e4d3","line":105,"range":{"start_line":103,"start_character":0,"end_line":105,"end_character":41},"in_reply_to":"5a8bc5a2_1b93d7fb","updated":"2016-09-29 07:19:42.000000000","message":"Done","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a36203381860e9224497f05a7a727297bafccd75","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":105,"context_line":"                        --name a2 private"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":108,"context_line":"and associated two ports per group."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a8bc5a2_fbac6b37","line":107,"updated":"2016-09-28 10:29:31.000000000","message":"blue, (comma)","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e08f7d5bbd17a38c71e8e0b8f49fae6f1da2d872","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":105,"context_line":"                        --name a2 private"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Note that the above took four ports and created two groups, red and blue"},{"line_number":108,"context_line":"and associated two ports per group."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3a98d1f4_3c2271ba","line":107,"in_reply_to":"5a8bc5a2_fbac6b37","updated":"2016-09-29 07:19:42.000000000","message":"Done","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a36203381860e9224497f05a7a727297bafccd75","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"*:2\"}\u0027"},{"line_number":186,"context_line":"                        --name a2 private"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"This will enforce Nova to choose two VFs, with the restriction that"},{"line_number":189,"context_line":"each should be connected to different top-of-rack (TOR) switches,"},{"line_number":190,"context_line":"regardless of the NIC each VF belongs to (i.e. they can even belong to"},{"line_number":191,"context_line":"the SAME PF)::"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a8bc5a2_bb3f43d5","line":188,"range":{"start_line":188,"start_character":18,"end_line":188,"end_character":22},"updated":"2016-09-28 10:29:31.000000000","message":"nit: nova (lowercase)","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e08f7d5bbd17a38c71e8e0b8f49fae6f1da2d872","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"*:2\"}\u0027"},{"line_number":186,"context_line":"                        --name a2 private"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"This will enforce Nova to choose two VFs, with the restriction that"},{"line_number":189,"context_line":"each should be connected to different top-of-rack (TOR) switches,"},{"line_number":190,"context_line":"regardless of the NIC each VF belongs to (i.e. they can even belong to"},{"line_number":191,"context_line":"the SAME PF)::"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3a98d1f4_7c031910","line":188,"range":{"start_line":188,"start_character":18,"end_line":188,"end_character":22},"in_reply_to":"5a8bc5a2_bb3f43d5","updated":"2016-09-29 07:19:42.000000000","message":"Done","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dc5c6c6663d940eea249a1d70b1a70495e31b949","unresolved":false,"context_lines":[{"line_number":213,"context_line":"each should belong to different NICs, and also to different TOR switches"},{"line_number":214,"context_line":"(enabling similar mechanism to SRLG [1]_."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":".. note::Notes:"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    * In the case where a wildcard is used in the \u0027networkgroup\u0027, the PCI"},{"line_number":219,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":220,"context_line":"      corresponding PCI devices pool matching the wildcard \u0027networkgroup\u0027."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":223,"context_line":"      associated with a PCI device. There are other blueprints for"},{"line_number":224,"context_line":"      resolving these problems [3]_ [4]_. This mean that scheduling problems"},{"line_number":225,"context_line":"      of NUMA Nodes with this kind of PCI allocations is out of scope for this"},{"line_number":226,"context_line":"      blueprint and may be address in future."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Alternatives"},{"line_number":229,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a8bc5a2_db6c0f39","line":226,"range":{"start_line":216,"start_character":0,"end_line":226,"end_character":45},"updated":"2016-09-28 10:22:18.000000000","message":"This isn\u0027t being output into the build [1]. I think these need to be two separate notes like so:\n\n    .. note::\n      In the case where...\n\n    .. note::\n      This spec doesn\u0027t...\n\n[1] http://docs-draft.openstack.org/42/182242/24/check/gate-nova-specs-docs-ubuntu-xenial/fa28721//doc/build/html/specs/ocata/approved/user-controlled-sriov-ports-allocation.html#alternatives","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e08f7d5bbd17a38c71e8e0b8f49fae6f1da2d872","unresolved":false,"context_lines":[{"line_number":213,"context_line":"each should belong to different NICs, and also to different TOR switches"},{"line_number":214,"context_line":"(enabling similar mechanism to SRLG [1]_."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":".. note::Notes:"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    * In the case where a wildcard is used in the \u0027networkgroup\u0027, the PCI"},{"line_number":219,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":220,"context_line":"      corresponding PCI devices pool matching the wildcard \u0027networkgroup\u0027."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":223,"context_line":"      associated with a PCI device. There are other blueprints for"},{"line_number":224,"context_line":"      resolving these problems [3]_ [4]_. This mean that scheduling problems"},{"line_number":225,"context_line":"      of NUMA Nodes with this kind of PCI allocations is out of scope for this"},{"line_number":226,"context_line":"      blueprint and may be address in future."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Alternatives"},{"line_number":229,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3a98d1f4_df1fbf59","line":226,"range":{"start_line":216,"start_character":0,"end_line":226,"end_character":45},"in_reply_to":"5a8bc5a2_db6c0f39","updated":"2016-09-29 07:19:42.000000000","message":"Done","commit_id":"a9f4fc4a243bf85ebe1ee395b90859664b831071"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"4f0c60966d43eef007c1460ed40b259ce8bd6010","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                               \"networkgroup\":\"2:1\"}"},{"line_number":178,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF4\","},{"line_number":179,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":180,"context_line":"                               \"networkgroup\":\"2:2\"}"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In the above, \u0027networkgroup\u0027 \"X:Y\" stands for NIC X, and switch Y::"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"ba5da102_3a71f276","line":180,"updated":"2016-11-02 12:55:01.000000000","message":"So you\u0027ve illustrated two different syntax for \u0027networkgroup\u0027 here. In the first case it was a plain string \"blue\", \"red\", and in this second case it is a compound string with components separated by \":\" and also allowing wildcards.\n\nI\u0027d like more clarity on the semantics and permitted format for networkgroup values. eg when using \u0027:\u0027 are only 2 components allowed, or an arbitrary number \"foo:bar:wizz:eek\" ?  Are there specific semantics associated with each component or is it arbitrary.\n\nBasically I\u0027m trying to understand whether having a single \"networkgroup\" with compound values is best, or wether we should have multiple keys in pci_passthrough_whitelist instead of just \"networkgroup\"\n\nCan you update the spec to be more explicit about this stuff.","commit_id":"38c2071110cdd156c52084a81985beb7037af327"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"40649ff080fadc9a10f71050c2d091b93d437a88","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                               \"networkgroup\":\"2:1\"}"},{"line_number":178,"context_line":"    pci_passthrough_whitelist\u003d{\"devname\":\"PF4\","},{"line_number":179,"context_line":"                               \"physical_network\":\"physnet1\","},{"line_number":180,"context_line":"                               \"networkgroup\":\"2:2\"}"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In the above, \u0027networkgroup\u0027 \"X:Y\" stands for NIC X, and switch Y::"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"ba5da102_a0cd5388","line":180,"in_reply_to":"ba5da102_3a71f276","updated":"2016-11-06 13:53:46.000000000","message":"Done","commit_id":"38c2071110cdd156c52084a81985beb7037af327"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7ca76625668c3d58ca0be4a207e0a36d6a476ec9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"For example, one way is bonding the VFs. Another is having"},{"line_number":18,"context_line":"separate L3 interfaces per VF and upon link failure, having the guest"},{"line_number":19,"context_line":"OS update its own routing table accordingly (failover to the other"},{"line_number":20,"context_line":"VFs), and there are other ways to achieve HA using multiple VFs."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Obviously, in order to achieve HA one has to carefully pick the VFs so"},{"line_number":23,"context_line":"that they will belong to different \"failure domains\" - i.e. different"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_0c049913","line":20,"updated":"2016-11-07 14:32:10.000000000","message":"I guess one of the most interesting use case is to have two NICs attached on different switches and bond these NICs in failover mode. The problem I can see here is that, you will not be able to failover to the second NIC and update its MAC address because in libvirt driver with use for SRIOV \u003cinterface type\u003d\u0027hostdev\u0027\u003e instead of the hostdev element [1]. Means that there is a restriction since the MAC address has been set before the guest OS boot. The only way to achieve that update is to set the interface as \u0027trust\u0027  in the host.\n\nVladik and me are going to provide a spec for that specific use case related to HA\n\n\n[1] https://libvirt.org/formatdomain.html#elementsNICSHostdev\n[2] https://community.mellanox.com/docs/DOC-2473","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The single root I/O virtualization (SR-IOV) allows a PCI device to provide a"},{"line_number":31,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":32,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":33,"context_line":"number of Virtual Functions (VF) within this device, each of the VFs could be"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_3e106801","line":30,"updated":"2016-11-08 16:02:13.000000000","message":"s/The single/Single/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ad439e3d7f1d9c7acfb0b975ce9464adb6543901","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The single root I/O virtualization (SR-IOV) allows a PCI device to provide a"},{"line_number":31,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":32,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":33,"context_line":"number of Virtual Functions (VF) within this device, each of the VFs could be"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_1be47f0b","line":30,"in_reply_to":"9a629dbe_3e106801","updated":"2016-11-09 00:32:26.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":48,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":49,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":50,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":51,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":52,"context_line":"    connectivity of the VM. To achieve that he needs the nova scheduler to"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_3e5948ff","line":49,"updated":"2016-11-08 16:02:13.000000000","message":"s/belongs/belong/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ad439e3d7f1d9c7acfb0b975ce9464adb6543901","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    Consider a situation with compute nodes that have two SR-IOV NICs."},{"line_number":48,"context_line":"    Each NIC has one physical function. All physical functions on the"},{"line_number":49,"context_line":"    node belongs to the same physical network \u0027private\u0027. A user wants"},{"line_number":50,"context_line":"    to start a VM that is connected to physical network \u0027private\u0027. In"},{"line_number":51,"context_line":"    addition, the user wants to have redundancy for network"},{"line_number":52,"context_line":"    connectivity of the VM. To achieve that he needs the nova scheduler to"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_3bca236e","line":49,"in_reply_to":"9a629dbe_3e5948ff","updated":"2016-11-09 00:32:26.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Leveraging the neutron binding-profile parameter to pass port \u0027networkgroup\u0027"},{"line_number":95,"context_line":"label. we can use neutron ports with the following api\u0027s::"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":98,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"red\"}\u0027"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_f99f135d","line":95,"range":{"start_line":95,"start_character":5,"end_line":95,"end_character":6},"updated":"2016-11-07 21:08:07.000000000","message":"s/./,/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":92,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Leveraging the neutron binding-profile parameter to pass port \u0027networkgroup\u0027"},{"line_number":95,"context_line":"label. we can use neutron ports with the following api\u0027s::"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":98,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"red\"}\u0027"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_888f9522","line":95,"range":{"start_line":95,"start_character":5,"end_line":95,"end_character":6},"in_reply_to":"9a629dbe_f99f135d","updated":"2016-11-08 09:08:27.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Note that the above took four ports and created two groups, red, blue"},{"line_number":111,"context_line":"and associated two ports per group."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":114,"context_line":"the notion of \u0027networkgroup\u0027. This allows the cloud deployer to group"},{"line_number":115,"context_line":"PCI devices in the same physnet. In this spec we use this grouping to"},{"line_number":116,"context_line":"achieve High Availability as we will make sure to choose VF from two"},{"line_number":117,"context_line":"different GROUPS where each group indicates a shared risk; i.e. two"},{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_b9a3db9d","line":121,"range":{"start_line":113,"start_character":0,"end_line":121,"end_character":19},"updated":"2016-11-07 21:08:07.000000000","message":"How does the user creating the ports and putting them into groups know how the admin configured the PCI whitelist in nov.conf in that cloud? In other words, how is any of this capability discoverable by the end user?\n\nI almost think about something like this falling into the category of traits and being able to make a request to the placement engine for required and preferred parts of the request spec. That\u0027s all pretty far out though, but it seems to be where we\u0027re trying to get with that. Would need Jay Pipes to chime in here.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_c107911a","line":121,"in_reply_to":"9a629dbe_6b04fb16","updated":"2016-11-08 16:02:13.000000000","message":"@moshele: With nested resource providers and traits, the solution to this on the inventory side of the equation would look like this:\n\n      compute node (root provider)\n        /                        \\\n       /                          \\\n      PFA (child provider)        PFB (child provider)\n       |                               | \n       -\u003e inventory: 4 SRIOV_NET_VF    -\u003e inventory of 4 SRIOV_NET_VF\n       |                               |\n       -\u003e traits: \"net:phys:private\"   -\u003e traits: \"net:phys:private\"\n\nSo, pretty simple on the inventory side.\n\nWe would need a way of allowing the user to generically specify that they wanted 2 VFs and that those VFs would need to be on separate *resource providers* that were on the same physical network segment.\n\nSomething like this might work for this generic request representation:\n\n \"resources\": {\n   \"SRIOV_NET_VF\": 2\n },\n \"required\": {\n   \"SRIOV_NET_VF\": [\n     \"net:phys:private\"\n   ]\n },\n \"constraints\": {\n   \"SRIOV_NET_VF\": {\n     \"num_resource_providers\": 2\n   }\n }\n\nThe above request payload could then be interpreted appropriately by the placement engine. However, of course, we will need to have nested resource providers and the traits work complete for this to be a reality, and that is Pike timeframe.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_6b04fb16","line":121,"in_reply_to":"9a629dbe_8b05cfc3","updated":"2016-11-08 09:08:27.000000000","message":"I agree with sahid.\nRegarding the placement engine as I understood from jay the physical_network is going to be a trait associate to a resource provider so I guess networkgroup can be traits as well. I will ping jay to review it.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Note that the above took four ports and created two groups, red, blue"},{"line_number":111,"context_line":"and associated two ports per group."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":114,"context_line":"the notion of \u0027networkgroup\u0027. This allows the cloud deployer to group"},{"line_number":115,"context_line":"PCI devices in the same physnet. In this spec we use this grouping to"},{"line_number":116,"context_line":"achieve High Availability as we will make sure to choose VF from two"},{"line_number":117,"context_line":"different GROUPS where each group indicates a shared risk; i.e. two"},{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_3e6ea801","line":121,"range":{"start_line":113,"start_character":0,"end_line":121,"end_character":19},"in_reply_to":"9a629dbe_b9a3db9d","updated":"2016-11-08 16:02:13.000000000","message":"@mriedem: Yes, the traits concept as well as the nested resource providers work will need to be completed to handle these use cases without this pci_passthrough_whitelist tribal knowledge needing to be imparted from the operator to the end user.\n\nBottom line for these specialized NFV deployment use cases is that there really is no multi-tenancy in NFV deployments. There\u0027s no real cloud end-users. The admin and the end user are one and the same and therefore many of these NFV-specific specs feel comfortable equating the role of the admin (or MANO/VNFM service user) with the end user of the cloud. Because that is true in NFV deployments: there\u0027s no end user that is calling the REST APIs, only an automated VNF manager or orchestration tool that has full admin rights against all hardware and services in the (not a) cloud.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"78b8f6ee15d1126a4418ab49fba14a0e93475628","unresolved":false,"context_lines":[{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_8b05cfc3","line":121,"in_reply_to":"9a629dbe_b9a3db9d","updated":"2016-11-08 08:15:19.000000000","message":"We are expecting the admin to expose/explain the groups to users. That seems reasonable.\n\nUsers just have to know which group to use when creating a neutron port.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ad439e3d7f1d9c7acfb0b975ce9464adb6543901","unresolved":false,"context_lines":[{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_dbba076e","line":121,"in_reply_to":"9a629dbe_c107911a","updated":"2016-11-09 00:32:26.000000000","message":"your proposal is limited to choosing only 2 VF from 2 different PFs (which may or may not be on the same NIC). \nThis spec propose a solution to other user cases such as:\n1. 2 VF on different PFs which belongs to different NICs.\n2. 2 VF on different PFs which belongs to different NICs which connected to different switches.\n\nI would suggest to keep the networkgroup even when we move the the new placement engine and to use them as traits.\n\nSo you will request first VF with \n\"required\": {\n   \"SRIOV_NET_VF\": [\n     \"net:phys:private\"\n     \"net:networkgroup:blue\"\n   ]\n}\nand second VF with\n\"required\": {\n   \"SRIOV_NET_VF\": [\n     \"net:phys:private\"\n     \"net:networkgroup:red\"\n   ]\n}","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97d1ff3dd4b554da18ccb1fca7e0459ac2f53d68","unresolved":false,"context_lines":[{"line_number":118,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":119,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":120,"context_line":"picked from different \"groups\" representing different resource"},{"line_number":121,"context_line":"(e.g. PFs or NICs)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"For example lets assume there are two SR-IOV NICs A and B. NIC A and NIC"},{"line_number":124,"context_line":"B has each two physical functions, PF1,PF2 and PF3,PF4"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_51cab46f","line":121,"in_reply_to":"9a629dbe_dbba076e","updated":"2016-11-13 22:15:50.000000000","message":"Why are we calling it \"networkgroup\"? It\u0027s not a network group. It\u0027s an indication of the TOR that the NIC is attached to, no?\n\nAnyway, what bothers me about all of this is just how non-abstract it is. It is putting so much tribal knowledge of the hardware and network gear/topology into the both nova.CONF options (pci_passthrough_whitelist) as well as the call to nova boot. :(\n\nAs I went into detail in (much) earlier revisions of this spec, I prefer an API that allows the caller to specify the *policy* they wish to see enforced about the ports being wired up in the guest.\n\nSo, for instance, I would prefer to be able to send the nova boot command a data packet that looks more like this:\n\n # Construct a policy that the guest needs two resources\n # of type SRIOV_NET_VF and those resources must be\n # assigned from different SR-IOV physical functions\n # that must be tagged with the same physical network\n # but must be attached to different top-of-rack switches\n {\n   \"resources\": {\n     \"SRIOV_NET_VF\": 2\n   }\n   \"placement\": {\n     \"near\": [\n       {\n         \"resource_class\": \"SRIOV_NET_VF\",\n         \"count\": 2,\n         \"scope\": \"net:nic:physnet\"\n       }\n     ],\n     \"not-near\": [\n       {\n         \"resource_class\": \"SRIOV_NET_VF\",\n         \"count\": 2,\n         \"scope\": \"net:nic:sriov:pf\"\n       },\n       {\n         \"resource_class\": \"SRIOV_NET_VF\",\n         \"count\": 2,\n         \"scope\": \"net:nic:switch\"\n       }\n     ]\n   }\n }\n\n\nThe above doesn\u0027t encode any specifics about *what* physnet any particular NIC is tagged with. It doesn\u0027t encode any specifics about *which* TOR the hardware is connected to. It simply declares what the policy should be for a guest that needs 2 VFs on two different PFs that are connected to two different TORs but whose underlying NICs are tagged with the same physnet tag.\n\nAnyway, the above is just long-term thinking, really. It represents a direction I think we should be going in, not something that we can do this cycle of course.\n\nThis proposal, as it stands, will add a bunch of technical debt to the nova-compute codebase and I fear it will be technical debt that, like the current PCI manager code, will be extremely difficult to pay off. So, this worries me quite a bit.\n\nBut, telcos have been asking for this type of functionality for a number of releases now, and frankly it seems that OpenStack is just becoming a purpose-built telco application, so perhaps we are just delaying the inevitable by pushing back on this type of functionality? :(\n\nHeck, I just don\u0027t know any more.\n\n-jay","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":143,"context_line":"Now the user can boot a VM with High Availability using the following"},{"line_number":144,"context_line":"CLI command::"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":149,"context_line":"different physical function, as one virtual function belongs to the red group"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_f949d3d1","line":146,"updated":"2016-11-07 21:08:07.000000000","message":"This assumes the operator has the exact correct pci whitelist configuration that works with the ports you created and the networkgroups you put those ports into.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":149,"context_line":"different physical function, as one virtual function belongs to the red group"},{"line_number":150,"context_line":"and the other blue group."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_19c20734","line":148,"range":{"start_line":148,"start_character":54,"end_line":148,"end_character":63},"updated":"2016-11-07 21:08:07.000000000","message":"s/will will/will/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The above command will make sure that the SR-IOV port will will be on"},{"line_number":149,"context_line":"different physical function, as one virtual function belongs to the red group"},{"line_number":150,"context_line":"and the other blue group."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_e803b171","line":148,"range":{"start_line":148,"start_character":54,"end_line":148,"end_character":63},"in_reply_to":"9a629dbe_19c20734","updated":"2016-11-08 09:08:27.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This will enforce nova to choose two VFs, with the restriction that"},{"line_number":216,"context_line":"each should belong to different NICs, and also to different TOR switches"},{"line_number":217,"context_line":"(enabling similar mechanism to SRLG."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":".. note::"},{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_39c7cb13","line":217,"range":{"start_line":217,"start_character":31,"end_line":217,"end_character":35},"updated":"2016-11-07 21:08:07.000000000","message":"s/SRLG/SRLG)/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This will enforce nova to choose two VFs, with the restriction that"},{"line_number":216,"context_line":"each should belong to different NICs, and also to different TOR switches"},{"line_number":217,"context_line":"(enabling similar mechanism to SRLG."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":".. note::"},{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_e83ad135","line":217,"range":{"start_line":217,"start_character":31,"end_line":217,"end_character":35},"in_reply_to":"9a629dbe_39c7cb13","updated":"2016-11-08 09:08:27.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":217,"context_line":"(enabling similar mechanism to SRLG."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":".. note::"},{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":221,"context_line":"      components separated by \":\". In the latter format the number of"},{"line_number":222,"context_line":"      components is arbitrary number and depended on how the cloud deployer"},{"line_number":223,"context_line":"      want to divide the networkgeoup. In the examples above the semantics"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_79d143cd","line":220,"updated":"2016-11-07 21:08:07.000000000","message":"nit: you don\u0027t need the * bullet.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":217,"context_line":"(enabling similar mechanism to SRLG."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":".. note::"},{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":221,"context_line":"      components separated by \":\". In the latter format the number of"},{"line_number":222,"context_line":"      components is arbitrary number and depended on how the cloud deployer"},{"line_number":223,"context_line":"      want to divide the networkgeoup. In the examples above the semantics"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_a817f9a1","line":220,"in_reply_to":"9a629dbe_79d143cd","updated":"2016-11-08 09:08:27.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":219,"context_line":".. note::"},{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":221,"context_line":"      components separated by \":\". In the latter format the number of"},{"line_number":222,"context_line":"      components is arbitrary number and depended on how the cloud deployer"},{"line_number":223,"context_line":"      want to divide the networkgeoup. In the examples above the semantics"},{"line_number":224,"context_line":"      associated with each component is physical connectivity, meaning we"},{"line_number":225,"context_line":"      divided it to one string that represent the NIC and one string that"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_1ca2ccae","line":222,"updated":"2016-11-08 16:02:13.000000000","message":"s/is arbitrary number/is an arbitrary number/\ns/depended on/depends on/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ad439e3d7f1d9c7acfb0b975ce9464adb6543901","unresolved":false,"context_lines":[{"line_number":219,"context_line":".. note::"},{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":221,"context_line":"      components separated by \":\". In the latter format the number of"},{"line_number":222,"context_line":"      components is arbitrary number and depended on how the cloud deployer"},{"line_number":223,"context_line":"      want to divide the networkgeoup. In the examples above the semantics"},{"line_number":224,"context_line":"      associated with each component is physical connectivity, meaning we"},{"line_number":225,"context_line":"      divided it to one string that represent the NIC and one string that"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_bb455371","line":222,"in_reply_to":"9a629dbe_1ca2ccae","updated":"2016-11-09 00:32:26.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":221,"context_line":"      components separated by \":\". In the latter format the number of"},{"line_number":222,"context_line":"      components is arbitrary number and depended on how the cloud deployer"},{"line_number":223,"context_line":"      want to divide the networkgeoup. In the examples above the semantics"},{"line_number":224,"context_line":"      associated with each component is physical connectivity, meaning we"},{"line_number":225,"context_line":"      divided it to one string that represent the NIC and one string that"},{"line_number":226,"context_line":"      represent the switch (NIC:SWITCH). A cloud deployer can decide on"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_5c836404","line":223,"updated":"2016-11-08 16:02:13.000000000","message":"s/want/wants/\ns/networkgeoup/networkgroup/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ad439e3d7f1d9c7acfb0b975ce9464adb6543901","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":221,"context_line":"      components separated by \":\". In the latter format the number of"},{"line_number":222,"context_line":"      components is arbitrary number and depended on how the cloud deployer"},{"line_number":223,"context_line":"      want to divide the networkgeoup. In the examples above the semantics"},{"line_number":224,"context_line":"      associated with each component is physical connectivity, meaning we"},{"line_number":225,"context_line":"      divided it to one string that represent the NIC and one string that"},{"line_number":226,"context_line":"      represent the switch (NIC:SWITCH). A cloud deployer can decide on"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_9b35eff8","line":223,"in_reply_to":"9a629dbe_5c836404","updated":"2016-11-09 00:32:26.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":".. note::"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    * In the case where a wildcard is used in the \u0027networkgroup\u0027, the PCI"},{"line_number":232,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":233,"context_line":"      corresponding PCI devices pool matching the wildcard \u0027networkgroup\u0027."},{"line_number":234,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_19e3e7a4","line":231,"updated":"2016-11-07 21:08:07.000000000","message":"ditto - I\u0027d suggest using a single note with 3 bullets, or 3 notes with no bullets.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":".. note::"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    * In the case where a wildcard is used in the \u0027networkgroup\u0027, the PCI"},{"line_number":232,"context_line":"      resource tracker will allocate a PCI device from the"},{"line_number":233,"context_line":"      corresponding PCI devices pool matching the wildcard \u0027networkgroup\u0027."},{"line_number":234,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_484addc6","line":231,"in_reply_to":"9a629dbe_19e3e7a4","updated":"2016-11-08 09:08:27.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":235,"context_line":".. note::"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":238,"context_line":"      associated with a PCI device. There are other blueprints for"},{"line_number":239,"context_line":"      resolving these problems [3]_ [4]_. This mean that scheduling problems"},{"line_number":240,"context_line":"      of NUMA Nodes with this kind of PCI allocations is out of scope for this"},{"line_number":241,"context_line":"      blueprint and may be address in future."},{"line_number":242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_799f8303","line":239,"range":{"start_line":238,"start_character":36,"end_line":239,"end_character":42},"updated":"2016-11-07 21:08:07.000000000","message":"Seems we should fix our existing technical debt before piling on more complexity, and this is pretty complex.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47ceec20fb2b42dd2b21e6dfec1acb3b23a776c9","unresolved":false,"context_lines":[{"line_number":244,"context_line":"------------"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":247,"context_line":"  as in [2]_. This spec provide the cloud admin away to control on VF"},{"line_number":248,"context_line":"  allocation. The Distribute PCI Requests is best manner VF allocation"},{"line_number":249,"context_line":"  and can\u0027t enforce VFs HA, which can critical for the user."},{"line_number":250,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_1cb72cd9","line":247,"updated":"2016-11-08 16:02:13.000000000","message":"s/away/a way/\ns/control on/control/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ad439e3d7f1d9c7acfb0b975ce9464adb6543901","unresolved":false,"context_lines":[{"line_number":244,"context_line":"------------"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":247,"context_line":"  as in [2]_. This spec provide the cloud admin away to control on VF"},{"line_number":248,"context_line":"  allocation. The Distribute PCI Requests is best manner VF allocation"},{"line_number":249,"context_line":"  and can\u0027t enforce VFs HA, which can critical for the user."},{"line_number":250,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_1b22bfb9","line":247,"in_reply_to":"9a629dbe_1cb72cd9","updated":"2016-11-09 00:32:26.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":246,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":247,"context_line":"  as in [2]_. This spec provide the cloud admin away to control on VF"},{"line_number":248,"context_line":"  allocation. The Distribute PCI Requests is best manner VF allocation"},{"line_number":249,"context_line":"  and can\u0027t enforce VFs HA, which can critical for the user."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Data model impact"},{"line_number":252,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_19a8471f","line":249,"range":{"start_line":249,"start_character":34,"end_line":249,"end_character":37},"updated":"2016-11-07 21:08:07.000000000","message":"s/can/can be/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":246,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":247,"context_line":"  as in [2]_. This spec provide the cloud admin away to control on VF"},{"line_number":248,"context_line":"  allocation. The Distribute PCI Requests is best manner VF allocation"},{"line_number":249,"context_line":"  and can\u0027t enforce VFs HA, which can critical for the user."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Data model impact"},{"line_number":252,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_48781df3","line":249,"range":{"start_line":249,"start_character":34,"end_line":249,"end_character":37},"in_reply_to":"9a629dbe_19a8471f","updated":"2016-11-08 09:08:27.000000000","message":"Done","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":271,"context_line":"Other end user impact"},{"line_number":272,"context_line":"---------------------"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Users will be able to control how VFs are allocated in their setups"},{"line_number":275,"context_line":"using SR-IOV and to enable HA in various modes (including the SRLG"},{"line_number":276,"context_line":"model)."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Performance Impact"},{"line_number":279,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_9949b78e","line":276,"range":{"start_line":274,"start_character":0,"end_line":276,"end_character":7},"updated":"2016-11-07 21:08:07.000000000","message":"Again, assuming they create the ports correctly and the admin configures the pci whitelist correctly, and those seem like big assumptions. Maybe we\u0027re just thinking of highly-specialized NFV shops where there is a single tenant user which is also the admin so they know exactly what they are doing. Still, seems like unicorn functionality to add to nova in that case.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"78b8f6ee15d1126a4418ab49fba14a0e93475628","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Users will be able to control how VFs are allocated in their setups"},{"line_number":275,"context_line":"using SR-IOV and to enable HA in various modes (including the SRLG"},{"line_number":276,"context_line":"model)."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Performance Impact"},{"line_number":279,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_abd53344","line":276,"in_reply_to":"9a629dbe_9949b78e","updated":"2016-11-08 08:15:19.000000000","message":"I don\u0027t think so, operator just have to expose the groups to users (e.g: switch-a, switch-b). It similar to have different availability zones, we are expecting the operators to explain what is zone-a and what is zone-b.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":307,"context_line":"----------"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":" * Update the pci stats to filter according to networkgroup as well."},{"line_number":310,"context_line":" * Update ``create_pci_requests_for_sriov_ports`` to get the port"},{"line_number":311,"context_line":"   binding-profile."},{"line_number":312,"context_line":"   and extract the networkgroup from it."},{"line_number":313,"context_line":" * Update pci_request spec with the networkgroup."},{"line_number":314,"context_line":" * Update _populate_neutron_binding_profile to update the profile and not"},{"line_number":315,"context_line":"   overwrite it."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"Dependencies"},{"line_number":318,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_fcb9c12f","line":315,"range":{"start_line":310,"start_character":3,"end_line":315,"end_character":16},"updated":"2016-11-07 21:08:07.000000000","message":"So this is all just trivial interaction between nova and neutron, the real work is in the first bullet, correct?\n\nI\u0027m sort of interested in seeing a section somewhere in the spec on error conditions.","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":307,"context_line":"----------"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":" * Update the pci stats to filter according to networkgroup as well."},{"line_number":310,"context_line":" * Update ``create_pci_requests_for_sriov_ports`` to get the port"},{"line_number":311,"context_line":"   binding-profile."},{"line_number":312,"context_line":"   and extract the networkgroup from it."},{"line_number":313,"context_line":" * Update pci_request spec with the networkgroup."},{"line_number":314,"context_line":" * Update _populate_neutron_binding_profile to update the profile and not"},{"line_number":315,"context_line":"   overwrite it."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"Dependencies"},{"line_number":318,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_0ecf0d80","line":315,"range":{"start_line":310,"start_character":3,"end_line":315,"end_character":16},"in_reply_to":"9a629dbe_fcb9c12f","updated":"2016-11-08 09:08:27.000000000","message":"yes, most of the code change will be in pci stats and pci utils\nThe implementation is very simple overall \nsee https://review.openstack.org/#/c/374151/","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":322,"context_line":"Testing"},{"line_number":323,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"The changes to the selection logic are testable through unit testing."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Documentation Impact"},{"line_number":328,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_5cee2d23","line":325,"updated":"2016-11-07 21:08:07.000000000","message":"Can\u0027t one of the Intel or Mellanox PCI CIs handle testing this?","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":322,"context_line":"Testing"},{"line_number":323,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"The changes to the selection logic are testable through unit testing."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Documentation Impact"},{"line_number":328,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_ceab5588","line":325,"in_reply_to":"9a629dbe_5cee2d23","updated":"2016-11-08 09:08:27.000000000","message":"yes we can add this to mellanox SR-IOV  CI, but we will nee d to update tempest to support the binding-profile","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19b2b04ddf145f3485ca7a11b0801caaadc0b9a9","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Documentation Impact"},{"line_number":328,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Documentation should be updated with information on how this feature should"},{"line_number":331,"context_line":"be used."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_bcc4a992","line":330,"updated":"2016-11-07 21:08:07.000000000","message":"nit: I like to see some thought put into where the docs for this would actually live. I think we have some PCI/NFV docs in the networking guide. I\u0027d like to see some effort put into actually looking at where documentation for this stuff would live, because this is complicated enough that it\u0027s going to need some thought put into how it\u0027s going to be documented and where.\n\nMaybe something in here is a start:\n\nhttp://docs.openstack.org/admin-guide/compute-pci-passthrough.html\n\nBut that\u0027s only the admin guide, which user guides would be updated to instruct a user on how to create the ports correctly? e.g. is the special networkgroup binding-profile stuff in neutron documented anywhere already?","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"1ef1a9e67b240428f8e58ac195a5ecea0d480b08","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Documentation Impact"},{"line_number":328,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Documentation should be updated with information on how this feature should"},{"line_number":331,"context_line":"be used."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_4ee665b5","line":330,"in_reply_to":"9a629dbe_bcc4a992","updated":"2016-11-08 09:08:27.000000000","message":"I think it best to add to SR-IOV documentation in the networking-guide\n\nhttps://github.com/openstack/openstack-manuals/blob/master/doc/networking-guide/source/config-sriov.rst","commit_id":"cb4fd0936343a5d19b6731f445fa6dd39c1ae49c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"be31c67894a8da31ac61ec99a524cc6eb6c8e4fd","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                        --name a3 private"},{"line_number":106,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":107,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":108,"context_line":"                        --name a4 private"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Note that the above took four ports and created two groups, red, blue"},{"line_number":111,"context_line":"and associated two ports per group."}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_f1649f4a","line":108,"updated":"2016-11-15 00:24:01.000000000","message":"When whoever is doing the creation of ports how do they find out about their options when it comes to networkgroup values? Are these already set in the nova.conf of various nova-compute nodes? Can they be queried? How does anyone know about them?","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a4f9a5c2df48b1af54acf92b9538fc75863044e5","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                        --name a3 private"},{"line_number":106,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":107,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"blue\"}\u0027"},{"line_number":108,"context_line":"                        --name a4 private"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Note that the above took four ports and created two groups, red, blue"},{"line_number":111,"context_line":"and associated two ports per group."}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_5989f1c9","line":108,"in_reply_to":"7a77a97e_f1649f4a","updated":"2016-11-15 08:21:03.000000000","message":"like Jay wrote in the previous comments, this is an NFV-specific use case that assumes equality between the operator and the cloud end-user. Because the operator will configure the pci_passthrough_whitelist  in the nova.conf he will what are the networkgroup values.","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"be31c67894a8da31ac61ec99a524cc6eb6c8e4fd","unresolved":false,"context_lines":[{"line_number":111,"context_line":"and associated two ports per group."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":114,"context_line":"the notion of \u0027networkgroup\u0027. This allows the cloud deployer to group"},{"line_number":115,"context_line":"PCI devices in the same physnet. In this spec we use this grouping to"},{"line_number":116,"context_line":"achieve High Availability as we will make sure to choose VF from two"},{"line_number":117,"context_line":"different GROUPS where each group indicates a shared risk; i.e. two"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_71a08f91","line":114,"updated":"2016-11-15 00:24:01.000000000","message":"So \u0027networkgroup\u0027 is added as another supported tag in the list of tags which is currently only \u0027physical_network\u0027?","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a4f9a5c2df48b1af54acf92b9538fc75863044e5","unresolved":false,"context_lines":[{"line_number":111,"context_line":"and associated two ports per group."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"On the nova side we enhance the pci_passthrough_whitelist to support"},{"line_number":114,"context_line":"the notion of \u0027networkgroup\u0027. This allows the cloud deployer to group"},{"line_number":115,"context_line":"PCI devices in the same physnet. In this spec we use this grouping to"},{"line_number":116,"context_line":"achieve High Availability as we will make sure to choose VF from two"},{"line_number":117,"context_line":"different GROUPS where each group indicates a shared risk; i.e. two"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_999389fa","line":114,"in_reply_to":"7a77a97e_71a08f91","updated":"2016-11-15 08:21:03.000000000","message":"yes","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"be31c67894a8da31ac61ec99a524cc6eb6c8e4fd","unresolved":false,"context_lines":[{"line_number":286,"context_line":"Other deployer impact"},{"line_number":287,"context_line":"---------------------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Cloud deployer will need to set the ``pci_passthrough_whitelist``"},{"line_number":290,"context_line":"to allow grouping of PCI devices."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_31b537cd","line":289,"updated":"2016-11-15 00:24:01.000000000","message":"nova/conf/pci.py suggests that this is the old name. The new name is \u0027passthrough_whitelist\u0027","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a4f9a5c2df48b1af54acf92b9538fc75863044e5","unresolved":false,"context_lines":[{"line_number":286,"context_line":"Other deployer impact"},{"line_number":287,"context_line":"---------------------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Cloud deployer will need to set the ``pci_passthrough_whitelist``"},{"line_number":290,"context_line":"to allow grouping of PCI devices."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_f94e3d95","line":289,"in_reply_to":"7a77a97e_31b537cd","updated":"2016-11-15 08:21:03.000000000","message":"yes I will change it to pci.passthrough_whitelist","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"be31c67894a8da31ac61ec99a524cc6eb6c8e4fd","unresolved":false,"context_lines":[{"line_number":287,"context_line":"---------------------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Cloud deployer will need to set the ``pci_passthrough_whitelist``"},{"line_number":290,"context_line":"to allow grouping of PCI devices."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Developer impact"},{"line_number":293,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_51263317","line":290,"updated":"2016-11-15 00:24:01.000000000","message":"The gist then is that for every compute node that wants these kinds of networking options, configuration will be required which replicates some of the details of how port have been or will be created in neutron?\n\nAnd that could be different from cloud to cloud with no constraint on how those details are labelled?","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a4f9a5c2df48b1af54acf92b9538fc75863044e5","unresolved":false,"context_lines":[{"line_number":287,"context_line":"---------------------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Cloud deployer will need to set the ``pci_passthrough_whitelist``"},{"line_number":290,"context_line":"to allow grouping of PCI devices."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Developer impact"},{"line_number":293,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_ceb9b230","line":290,"in_reply_to":"7a77a97e_51263317","updated":"2016-11-15 08:21:03.000000000","message":"If I understand you correctly you are worries about cloud-interoperabily, right?\nso for NFV-specific use case, I don\u0027t think it a concern.","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"be31c67894a8da31ac61ec99a524cc6eb6c8e4fd","unresolved":false,"context_lines":[{"line_number":307,"context_line":"----------"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":" * Update the pci stats to filter according to networkgroup as well."},{"line_number":310,"context_line":" * Update ``create_pci_requests_for_sriov_ports`` to get the port"},{"line_number":311,"context_line":"   binding-profile."},{"line_number":312,"context_line":"   and extract the networkgroup from it."},{"line_number":313,"context_line":" * Update pci_request spec with the networkgroup."}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_d1032375","line":310,"updated":"2016-11-15 00:24:01.000000000","message":"It\u0027s odd to me that this method is listed in the work items but not mentioned anywhere else in the spec. Is there some detail missing above?","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a4f9a5c2df48b1af54acf92b9538fc75863044e5","unresolved":false,"context_lines":[{"line_number":307,"context_line":"----------"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":" * Update the pci stats to filter according to networkgroup as well."},{"line_number":310,"context_line":" * Update ``create_pci_requests_for_sriov_ports`` to get the port"},{"line_number":311,"context_line":"   binding-profile."},{"line_number":312,"context_line":"   and extract the networkgroup from it."},{"line_number":313,"context_line":" * Update pci_request spec with the networkgroup."}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_e1c59f5b","line":310,"in_reply_to":"7a77a97e_d1032375","updated":"2016-11-15 08:21:03.000000000","message":"I am not sure why I want it to be mentioned anywhere else in the spec. This bullet just indicated that we need to update the current create_pci_requests_for_sriov_ports method to get the networkgroup from port binding-profile and update the pci request spec with it.","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"be31c67894a8da31ac61ec99a524cc6eb6c8e4fd","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":" * Update the pci stats to filter according to networkgroup as well."},{"line_number":310,"context_line":" * Update ``create_pci_requests_for_sriov_ports`` to get the port"},{"line_number":311,"context_line":"   binding-profile."},{"line_number":312,"context_line":"   and extract the networkgroup from it."},{"line_number":313,"context_line":" * Update pci_request spec with the networkgroup."},{"line_number":314,"context_line":" * Update _populate_neutron_binding_profile to update the profile and not"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_b1d8671f","line":311,"updated":"2016-11-15 00:24:01.000000000","message":"get rid of \u0027.$\u0027 and join up with next line?","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a4f9a5c2df48b1af54acf92b9538fc75863044e5","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":" * Update the pci stats to filter according to networkgroup as well."},{"line_number":310,"context_line":" * Update ``create_pci_requests_for_sriov_ports`` to get the port"},{"line_number":311,"context_line":"   binding-profile."},{"line_number":312,"context_line":"   and extract the networkgroup from it."},{"line_number":313,"context_line":" * Update pci_request spec with the networkgroup."},{"line_number":314,"context_line":" * Update _populate_neutron_binding_profile to update the profile and not"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_9981c992","line":311,"in_reply_to":"7a77a97e_b1d8671f","updated":"2016-11-15 08:21:03.000000000","message":"Done","commit_id":"187e6095371dac6f702e2ab70606413b0aac9d78"}],"specs/pike/approved/user-controlled-sriov-ports-allocation.rst":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"that they will belong to different \"failure domains\" - i.e. different"},{"line_number":24,"context_line":"Physical Functions (PFs)."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This is use case is NFV-specific which assumes equality between the operator"},{"line_number":27,"context_line":"and the cloud end-user."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_8d0d9c92","line":26,"updated":"2017-03-08 23:16:51.000000000","message":"s/is use case is/use case is/","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"number of functions within the same device, specifically, there\u0027s"},{"line_number":34,"context_line":"a Physical Function (PF) that\u0027s a primary function of the device, and a"},{"line_number":35,"context_line":"number of Virtual Functions (VF) within this device, each of the VFs could be"},{"line_number":36,"context_line":"associated with a network port and passed to a guest using PCI passthrough."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"OpenStack does support SR-IOV ports, however, it gives no control to a user on"},{"line_number":39,"context_line":"how VFs will be distributed across PFs. Moreover, with the current"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_4dc80423","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":30},"updated":"2017-03-08 23:16:51.000000000","message":"It would be worth being much more explicit about what precisely the VF can be associated with. I believe you are referring to a *Neutron port object* above, yes?","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    * NIC 2 PF1 is connected to switch A"},{"line_number":79,"context_line":"    * NIC 2 PF2 is connected to switch B"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    All physical functions on the node belongs to the same physical"},{"line_number":82,"context_line":"    network \u0027private\u0027. A user wants to start a VM that is connected to"},{"line_number":83,"context_line":"    physical network \u0027private\u0027. Use case B will allow the nova"},{"line_number":84,"context_line":"    scheduler to choose two VFs that belong to two different PFs that"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_6d4ea897","line":81,"updated":"2017-03-08 23:16:51.000000000","message":"s/belongs/belong/","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                           \"physical_network\":\"physnet1\","},{"line_number":141,"context_line":"                           \"networkgroup\":\"blue\"}"},{"line_number":142,"context_line":"    passthrough_whitelist\u003d{\"devname\":\"PF4\","},{"line_number":143,"context_line":"                           \"physical_network\":\"physnet1\","},{"line_number":144,"context_line":"                           \"networkgroup\":\"blue\"}"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Now the user can boot a VM with High Availability using the following"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_a8216ea1","line":143,"updated":"2017-03-08 23:16:51.000000000","message":"Consider s/physnet1/private/g to be consistent with the example from earlier.","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                           \"physical_network\":\"physnet1\","},{"line_number":144,"context_line":"                           \"networkgroup\":\"blue\"}"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Now the user can boot a VM with High Availability using the following"},{"line_number":147,"context_line":"CLI command::"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_284d7e6c","line":146,"updated":"2017-03-08 23:16:51.000000000","message":"s/with High Availability/with redundant network connectivity/\n\nThe reason is because high availability is about more than just the network connectivity.","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da3"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"The above command will make sure that the SR-IOV port will be on"},{"line_number":152,"context_line":"different physical function, as one virtual function belongs to the red group"},{"line_number":153,"context_line":"and the other blue group."},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_28649ee2","line":151,"updated":"2017-03-08 23:16:51.000000000","message":"Well, technically the above command won\u0027t make sure... it\u0027s the scheduler and compute node that need to do that ;)","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                        --name a1 private"},{"line_number":191,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":192,"context_line":"                        --binding-profile\u003d\u0027{\"networkgroup\":\"*:2\"}\u0027"},{"line_number":193,"context_line":"                        --name a2 private"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"This will enforce nova to choose two VFs, with the restriction that"},{"line_number":196,"context_line":"each should be connected to different top-of-rack (TOR) switches,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_c845c217","line":193,"updated":"2017-03-08 23:16:51.000000000","message":"I really dislike the whole \"networkgroup\u003dX:Y\" syntax. It\u0027s obscure and opaque. Is this a Neutron API thing or is networkgroup just a free-form attribute in the Neutron port API and this spec is proposing to encode this network and switch group relationship in this syntax?\n\nAlso, the primary reason I don\u0027t like this proposed API is that it assumes that the user and operator are one and the same, because it requires the user to have in-depth knowledge of the network and hardware topology/setup of the cloud. This, itself, is not a cloudy abstraction at all.\n\nCloudy abstractions would, instead, have the user express the required or requested resources and any relationship those resources would need with each other (affinity, anti-affinity, etc), and the cloud infrastructure components that have detailed knowledge of the hardware and network topology would construct a placement query to determine if there is a compute node matching that request.","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"49a3c7785ed234014bc1415ddf95a3d4800bb4d1","unresolved":false,"context_lines":[{"line_number":223,"context_line":".. note::"},{"line_number":224,"context_line":"    * This feature is NFV-specific and it is a temporary solution"},{"line_number":225,"context_line":"      until traits and nested resource providers enable a data-driven"},{"line_number":226,"context_line":"      way to configure various providers of these nested resources."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    * The \u0027networkroup\u0027 syntax can be a plain string or compound string with"},{"line_number":229,"context_line":"      components separated by \":\". In the latter format the number of"}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a30ddce_28cade6d","line":226,"updated":"2017-03-08 23:16:51.000000000","message":"So, basically, this is just a hack that will require a bunch of review bandwidth for people currently working on the placement API and nested resource providers just so Nova can meet another NFV feature checkbox ASAP.\n\nWe\u0027ve seen how other of these features (PCI device management, NUMA, CPU pinning, etc) have added significant complexity and technical debt to Nova. This has the makings of another such thing. Just want to go on the record saying that.","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e6432023fa9234c929a276c95cac440136424ae0","unresolved":false,"context_lines":[{"line_number":250,"context_line":"* Distribute PCI Requests Across Multiple Devices in a best effort manner"},{"line_number":251,"context_line":"  as in [2]_. This spec provide the cloud admin a way to control VF"},{"line_number":252,"context_line":"  allocation. The Distribute PCI Requests is best manner VF allocation"},{"line_number":253,"context_line":"  and can\u0027t enforce VFs HA, which can be critical for the user."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Data model impact"},{"line_number":256,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3a1ff146_87e88818","line":253,"updated":"2017-03-14 14:08:43.000000000","message":"If you take the spec here:\nhttp://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/distribute-pci-allocations.html\n\nSurely you could just add scheduler hint, or similar that implies  on the port that implies a requirement for HA, and fail to build if you can\u0027t find two separate physical nics that match your requirements?\n\nI would much rather we went down this simpler path, while we wait for the better traits based solution to be available.","commit_id":"2edab90c13e564a44f11a4ff01a0b82fec403dd6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff763a47ee456b40e61c052ad2a21d717f3c1e7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"9f436f4f_5b5a8683","updated":"2017-08-17 18:41:42.000000000","message":"i think we need to try and converge this spec with https://review.openstack.org/#/c/463526/31\nto have one sepc that covers both usescases.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Physical Functions (PFs)."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This use case is NFV-specific which assumes equality between the operator"},{"line_number":27,"context_line":"and the cloud end-user."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem description"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_04716076","line":27,"updated":"2017-10-02 22:03:16.000000000","message":"This is an overstatement of what NFV implies.  It does not appear to affect what follows.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2150fb890753c6ad587f14596f6c63a6b2be4342","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Physical Functions (PFs)."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This use case is NFV-specific which assumes equality between the operator"},{"line_number":27,"context_line":"and the cloud end-user."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem description"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_ffcdb15c","line":27,"in_reply_to":"7f515b1d_04716076","updated":"2017-10-02 23:35:21.000000000","message":"The reason for the above statement is because for this spec to work, it assumes that the user has intimate knowledge regarding the physical network topology and switch layout of the deployment. NFV, in particular ETSI NFV MANO layer systems are a good example of when this assumption represents reality: MANO systems are generally not multi-tenant applications. Instead, they have a single (service) user that has administrative rights and has baked in tribal knowledge of the underlying deployment configuration.\n\nI know of no other use cases where the operator and \"cloud\" end-user are pretty much one and the same.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":26,"context_line":"This use case is NFV-specific which assumes equality between the operator"},{"line_number":27,"context_line":"and the cloud end-user."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem description"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Single root I/O virtualization (SR-IOV) allows a PCI device to provide"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_c4d34800","line":29,"updated":"2017-10-02 22:03:16.000000000","message":"Having two NICs with redundant paths to the same network is great, but largely unhelpful.  What I want is, in addition, for those NICs to be configured as bonded (e.g. LACP) or individually to have liveness tests on them (e.g. BFD), otherwise I have no idea how to make use of them. To be fair, this spec makes no attempt to address this (or the ramifications, such as a bonded port having a single MAC).\n\nHow do I know that a NIC is no longer working?  How do I know how long it\u0027s going to take before I discover a NIC is no longer working?  That last point is important; if it takes me 5 minutes, then that\u0027s no good.\n\nAlso, you\u0027re talking redundancy but perhaps I have a requirement for double-bandwidth and that\u0027s why I\u0027m using two interfaces.\n\nAll noted in here not to scupper this spec, but to ask the audience if this suggests a different model (one candidate being one-port two-interfaces) that either might be easier to implement, or perhaps widely different to the point that it would need a radically different API.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2150fb890753c6ad587f14596f6c63a6b2be4342","unresolved":false,"context_lines":[{"line_number":26,"context_line":"This use case is NFV-specific which assumes equality between the operator"},{"line_number":27,"context_line":"and the cloud end-user."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem description"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Single root I/O virtualization (SR-IOV) allows a PCI device to provide"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_5ffe056b","line":29,"in_reply_to":"7f515b1d_c4d34800","updated":"2017-10-02 23:35:21.000000000","message":"\u003e Having two NICs with redundant paths to the same network is great,\n \u003e but largely unhelpful.  What I want is, in addition, for those NICs\n \u003e to be configured as bonded (e.g. LACP) or individually to have\n \u003e liveness tests on them (e.g. BFD), otherwise I have no idea how to\n \u003e make use of them. To be fair, this spec makes no attempt to address\n \u003e this (or the ramifications, such as a bonded port having a single\n \u003e MAC).\n\nCorrect, and there was (and is) no intention to have the Placement API have any knowledge of or control over the configuration of a particular NIC for a guest.\n\n \u003e How do I know that a NIC is no longer working?  How do I know how\n \u003e long it\u0027s going to take before I discover a NIC is no longer\n \u003e working?  That last point is important; if it takes me 5 minutes,\n \u003e then that\u0027s no good.\n\nNothing to do with what\u0027s being discussed here. You are mixing two entirely different concepts. One of liveness and one of resource consumption. This spec (and indeed the Nova control plane) understands and cares about the latter, not the former.\n\n \u003e Also, you\u0027re talking redundancy but perhaps I have a requirement\n \u003e for double-bandwidth and that\u0027s why I\u0027m using two interfaces.\n\nSure, though redundancy is a user case discussed below.\n\n \u003e All noted in here not to scupper this spec, but to ask the audience\n \u003e if this suggests a different model (one candidate being one-port\n \u003e two-interfaces) that either might be easier to implement, or\n \u003e perhaps widely different to the point that it would need a\n \u003e radically different API.\n\nWe\u0027d like to solve one problem at a time. The problem being discussed in this spec is one of resource tracking and consumption, nothing more.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    different PFs, even if the two PFs are of the same NIC. In order"},{"line_number":67,"context_line":"    to achieve better high availability, the nova scheduler will need to"},{"line_number":68,"context_line":"    allocate two VFs on two different PFs which belongs to **two"},{"line_number":69,"context_line":"    different NICs**."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Use Case C:"},{"line_number":72,"context_line":"~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_e40084ad","line":69,"updated":"2017-10-02 22:03:16.000000000","message":"Perhaps the least interesting use case.  NICs fail rarely, TORs get upgraded regularly, so TOR failure is far more frequent and using two NICs in the server to link to one TOR is mitigating the less frequent failure.\n\nMore common is to find two SRIOV-available PFs on the same physnet on two separate NICs, each connected to two different TORs.  This solves B and C with the complexity of use case A.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    * NIC 1 PF1 is connected to switch A"},{"line_number":78,"context_line":"    * NIC 1 PF2 is connected to switch B"},{"line_number":79,"context_line":"    * NIC 2 PF1 is connected to switch A"},{"line_number":80,"context_line":"    * NIC 2 PF2 is connected to switch B"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    All physical functions on the node belong to the same physical"},{"line_number":83,"context_line":"    network \u0027private\u0027. A user wants to start a VM that is connected to"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_84d8b052","line":80,"updated":"2017-10-02 22:03:16.000000000","message":"If you connect NIC1 to switch A and NIC2 to switch B the problem is greatly simplified and all the problems resolve themselves, so perhaps less complex wiring is in order (that is, write a document explaining how to use the feature) and then simply rule this case out?  (The failure case is the same for switch and NIC failures - half your uplink bandwidth has gone, in a balanced bond, or you fail over in an unbalanced one.)","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff763a47ee456b40e61c052ad2a21d717f3c1e7e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Group of PCI devices could be labeled with arbitrary tags with the"},{"line_number":98,"context_line":"help of passthrough_whitelist in nova.conf::"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    [pci]"},{"line_number":101,"context_line":"    passthrough_whitelist\u003d{\"devname\":\"PF1\","}],"source_content_type":"text/x-rst","patch_set":35,"id":"9f436f4f_1bd99ef3","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":29},"updated":"2017-08-17 18:41:42.000000000","message":"the tags should not be sotred as part of the whitelist instead should be part of a seperate config option and modeled as a trait on the resouce provider.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6f4b67d158ff325d4dd301bd8738eddecc1106b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Group of PCI devices could be labeled with arbitrary tags with the"},{"line_number":98,"context_line":"help of passthrough_whitelist in nova.conf::"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    [pci]"},{"line_number":101,"context_line":"    passthrough_whitelist\u003d{\"devname\":\"PF1\","}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_faa01194","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":29},"in_reply_to":"7f515b1d_e4c76463","updated":"2017-10-03 16:27:54.000000000","message":"A fact which gets some people steamed.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":95,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Group of PCI devices could be labeled with arbitrary tags with the"},{"line_number":98,"context_line":"help of passthrough_whitelist in nova.conf::"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    [pci]"},{"line_number":101,"context_line":"    passthrough_whitelist\u003d{\"devname\":\"PF1\","}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_e4c76463","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":29},"in_reply_to":"9f436f4f_1bd99ef3","updated":"2017-10-02 22:03:16.000000000","message":"Why?  Other elements in the whitelist are used for this purpose, not least \u0027physical_network\u0027 itself.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    passthrough_whitelist\u003d{\"devname\":\"PF1\","},{"line_number":102,"context_line":"                           \"physical_network\":\"private\","},{"line_number":103,"context_line":"                           \"nic\": \"NIC 1\","},{"line_number":104,"context_line":"                           \"switch\":\"A\"}"},{"line_number":105,"context_line":"    passthrough_whitelist\u003d{\"devname\":\"PF2\","},{"line_number":106,"context_line":"                           \"physical_network\":\"private\","},{"line_number":107,"context_line":"                           \"nic\": \"NIC 2\","}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_64a9348e","line":104,"updated":"2017-10-02 22:03:16.000000000","message":"A more general \u0027failure_domain\u0027 \u003d arbitrary value would be simpler to work with (and per above probably more relevant).","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"64cc592d1c02f22dbe1303bbd614f341cee77082","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"After that, we could make the following request to the cloud: \"Give me"},{"line_number":119,"context_line":"VM with 2 PCI devices with physical_network equals \"private\" and with"},{"line_number":120,"context_line":"unique tags \"nic\" and \"switch\" for each device, please\". In case of"},{"line_number":121,"context_line":"unavailability of such devices, it fallbacks to default behavior and"},{"line_number":122,"context_line":"returns random devices with physical network \"private\"."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"A source for unique tags listing is config option::"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_64b10190","line":122,"range":{"start_line":120,"start_character":57,"end_line":122,"end_character":55},"updated":"2017-07-12 20:30:08.000000000","message":"Or fails. Possibly at the behest of a \"strict\" option. But I would think if I went through the trouble to create the tags and specify them in my request, I would want them adhered to.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"e0b2528b08c90bb98a5c16a761f56fb6da8e193c","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"After that, we could make the following request to the cloud: \"Give me"},{"line_number":119,"context_line":"VM with 2 PCI devices with physical_network equals \"private\" and with"},{"line_number":120,"context_line":"unique tags \"nic\" and \"switch\" for each device, please\". In case of"},{"line_number":121,"context_line":"unavailability of such devices, it fallbacks to default behavior and"},{"line_number":122,"context_line":"returns random devices with physical network \"private\"."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"A source for unique tags listing is config option::"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_a2a2d2fa","line":122,"range":{"start_line":120,"start_character":57,"end_line":122,"end_character":55},"in_reply_to":"1f1a1f67_4d910647","updated":"2017-07-18 08:34:10.000000000","message":"Yes, I\u0027ve updated POC and will update spec.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"bdd3b37ebaa62880792c7d9f10eab1d7c3370e78","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"After that, we could make the following request to the cloud: \"Give me"},{"line_number":119,"context_line":"VM with 2 PCI devices with physical_network equals \"private\" and with"},{"line_number":120,"context_line":"unique tags \"nic\" and \"switch\" for each device, please\". In case of"},{"line_number":121,"context_line":"unavailability of such devices, it fallbacks to default behavior and"},{"line_number":122,"context_line":"returns random devices with physical network \"private\"."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"A source for unique tags listing is config option::"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_4d910647","line":122,"range":{"start_line":120,"start_character":57,"end_line":122,"end_character":55},"in_reply_to":"1f1a1f67_64b10190","updated":"2017-07-17 17:30:18.000000000","message":"I agree with Eric... if a user requests something that we can\u0027t provide, we should fail.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff763a47ee456b40e61c052ad2a21d717f3c1e7e","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"After that, we could make the following request to the cloud: \"Give me"},{"line_number":119,"context_line":"VM with 2 PCI devices with physical_network equals \"private\" and with"},{"line_number":120,"context_line":"unique tags \"nic\" and \"switch\" for each device, please\". In case of"},{"line_number":121,"context_line":"unavailability of such devices, it fallbacks to default behavior and"},{"line_number":122,"context_line":"returns random devices with physical network \"private\"."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"A source for unique tags listing is config option::"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"9f436f4f_fb5a5a4e","line":122,"range":{"start_line":120,"start_character":57,"end_line":122,"end_character":55},"in_reply_to":"1f1a1f67_a2a2d2fa","updated":"2017-08-17 18:41:42.000000000","message":"i think this is fundementally broken if the network policy is encored as an atribute of the nova config and not a property of the neutron port.\nhttps://review.openstack.org/#/c/463526/31\n\ne.g. \nneutron port-create --binding:vnic_type\u003ddirect --binding:profile\u003d{bond\u003dtrue, bond_mode\u003dactive-backup,bound_interface_count\u003d2,bond_antiafinity\u003dpf} --name bond1 private","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"648c5653e47fe5616fe6a7d88d52659651927cad","unresolved":false,"context_lines":[{"line_number":124,"context_line":"A source for unique tags listing is config option::"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"  [pci]"},{"line_number":127,"context_line":"  passthrough_unique_tags\u003dswitch,nic"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternative sources for passthrough_unique_tags could be a scheduler"},{"line_number":130,"context_line":"hint of a flavor property which allows per request settings."}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f1d235d_1fd159ce","line":127,"range":{"start_line":127,"start_character":1,"end_line":127,"end_character":36},"updated":"2017-06-30 13:47:56.000000000","message":"When we initially implemented SRIOV, arbitrary tags can be applied in the whitelist. But there is no way to use those tags except for the tag \u0027physical_network\u0027. When a neutron port with direct vnic_type is requested, only PCI devices with the same physical network as the requested neutron port are candidates for the neutron port. This was mainly a compromise then. A generic way to request SRIOV devices with certain tag(s) for neutron ports is desirable.\n\nOne idea is to indicate the desirable SRIOV devices in the binding profile. For example (The syntax is important for implementation, but please ignore that for now with the example in below),\n\nneutron port-create --binding:vnic-type\u003ddirect --binding:tags:HA\u003dprimary --name ha-port-primary private\nneutron port-create --binding:vnic-type\u003ddirect --binding:tags:HA\u003dsecondary --name ha-port-secondary private\n\n\nwhen generating a PCI request spec, tags can be taken from both the binding profile (for generic tags) in addition to the physical network the neutron port is associated with.\n\nThis would give user fine-grained control over SRIOV device selection.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ed35032187c35a50ff18a133b91cf7b90320c9b0","unresolved":false,"context_lines":[{"line_number":124,"context_line":"A source for unique tags listing is config option::"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"  [pci]"},{"line_number":127,"context_line":"  passthrough_unique_tags\u003dswitch,nic"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternative sources for passthrough_unique_tags could be a scheduler"},{"line_number":130,"context_line":"hint of a flavor property which allows per request settings."}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f1d235d_a95569c8","line":127,"range":{"start_line":127,"start_character":1,"end_line":127,"end_character":36},"in_reply_to":"3f1d235d_1fd159ce","updated":"2017-07-03 12:07:20.000000000","message":"That work is happening here:\n\nhttp://specs.openstack.org/openstack/nova-specs/specs/pike/approved/enable-sriov-nic-features.html\n\nAt the same time, we\u0027re trying to refactor all the PCI device handling code so that it aligns with the rest of resource tracking in Nova instead of being a one-off different tracking system.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"249340bff30c35325cfdab3c7c14b2a74b6acc71","unresolved":false,"context_lines":[{"line_number":133,"context_line":"PCI devices in the same physnet. In this spec we use this grouping to"},{"line_number":134,"context_line":"achieve High Availability as we will make sure to choose VF from two"},{"line_number":135,"context_line":"different GROUPS where each group indicates a shared risk; i.e. two"},{"line_number":136,"context_line":"VFs of a single PF are of the same group sharing the risk of a PF/NIC"},{"line_number":137,"context_line":"failure. Thus we would like to make sure that the two VFs will be"},{"line_number":138,"context_line":"picked from different \"groups\" representing different resources"},{"line_number":139,"context_line":"(e.g. PFs or NICs)."}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_19919953","line":136,"range":{"start_line":136,"start_character":63,"end_line":136,"end_character":69},"updated":"2017-07-13 10:43:28.000000000","message":"PF/NIC/switch for completeness :)","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":22104,"name":"zhangyanxian","email":"zhangyanxianmail@163.com","username":"zhangyanxian"},"change_message_id":"d5c5de4a4884f6be1581555e9696bf4677b271b7","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":147,"context_line":"                        --name a2 private"},{"line_number":148,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":149,"context_line":"                        --name a4 private"},{"line_number":150,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":151,"context_line":"                        --name a4 private"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"ff0f0b1f_ef71bea9","line":149,"range":{"start_line":149,"start_character":31,"end_line":149,"end_character":33},"updated":"2017-05-26 05:17:01.000000000","message":"Same with the fourth interface name,should it be \"a3\"?","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff763a47ee456b40e61c052ad2a21d717f3c1e7e","unresolved":false,"context_lines":[{"line_number":138,"context_line":"picked from different \"groups\" representing different resources"},{"line_number":139,"context_line":"(e.g. PFs or NICs)."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"For example, we need to get 2 VMs with HA networking."},{"line_number":142,"context_line":"We can use neutron ports with the following api\u0027s::"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":145,"context_line":"                        --name a1 private"},{"line_number":146,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":147,"context_line":"                        --name a2 private"},{"line_number":148,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":149,"context_line":"                        --name a4 private"},{"line_number":150,"context_line":"    neutron port-create --binding:vnic_type\u003ddirect"},{"line_number":151,"context_line":"                        --name a4 private"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"With the aforementioned nova settings, for request::"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"9f436f4f_7b1d4a72","line":151,"range":{"start_line":141,"start_character":0,"end_line":151,"end_character":41},"updated":"2017-08-17 18:41:42.000000000","message":"using multiple ports like this weill mean that neutron will allocate multiple macs and multiple ips to those ports.\n\nin a bond case should we not have just one mac/ip per bond not per port of the bond?","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6f4b67d158ff325d4dd301bd8738eddecc1106b","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    nova boot --nic port-id\u003da1 --nic port-id\u003da2"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"we will get PF1 and PF2 device."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_752672bd","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":31},"updated":"2017-10-03 16:27:54.000000000","message":"Wha?  How?  I don\u0027t see how any part of this setup understands the context of tag (anti)affinity across separate neutron port-create CLI invocations.  Considering out-of-band port activity, VF availability, etc.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"648c5653e47fe5616fe6a7d88d52659651927cad","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. note::"},{"line_number":161,"context_line":"    * This feature is NFV-specific and it is a temporary solution"},{"line_number":162,"context_line":"      until traits and nested resource providers enable a data-driven"},{"line_number":163,"context_line":"      way to configure various providers of these nested resources."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":166,"context_line":"      associated with a PCI device. There are other blueprints for"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f1d235d_ff4a1d7e","line":163,"range":{"start_line":161,"start_character":6,"end_line":163,"end_character":67},"updated":"2017-06-30 13:47:56.000000000","message":"I thought that this spec is trying to address the issue of identifying a resource provider for a particular neutron port, and allocate a pci device from that provider. On the other hand,  the nested resource providers would address how to define such a provider.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff763a47ee456b40e61c052ad2a21d717f3c1e7e","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. note::"},{"line_number":161,"context_line":"    * This feature is NFV-specific and it is a temporary solution"},{"line_number":162,"context_line":"      until traits and nested resource providers enable a data-driven"},{"line_number":163,"context_line":"      way to configure various providers of these nested resources."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":166,"context_line":"      associated with a PCI device. There are other blueprints for"}],"source_content_type":"text/x-rst","patch_set":35,"id":"9f436f4f_ae17f245","line":163,"range":{"start_line":161,"start_character":6,"end_line":163,"end_character":67},"in_reply_to":"3f1d235d_ff4a1d7e","updated":"2017-08-17 18:41:42.000000000","message":"given that we are wrapping up pike and now heading into queens i dont think we should create a tempory solution to this issue and instead retarget this to use traits and nest resouce providers which should both be available in queens.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"7b90b7a3da664067c7f893f377fa60ba201344de","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. note::"},{"line_number":161,"context_line":"    * This feature is NFV-specific and it is a temporary solution"},{"line_number":162,"context_line":"      until traits and nested resource providers enable a data-driven"},{"line_number":163,"context_line":"      way to configure various providers of these nested resources."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    * This spec doesn\u0027t address scheduling problems of NUMA Nodes"},{"line_number":166,"context_line":"      associated with a PCI device. There are other blueprints for"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7f515b1d_6497f43b","line":163,"range":{"start_line":161,"start_character":6,"end_line":163,"end_character":67},"in_reply_to":"9f436f4f_ae17f245","updated":"2017-10-02 22:03:16.000000000","message":"This feature is highly desirable.  If there\u0027s any likelihood that the full solution doesn\u0027t land in Queens then I would heartily endorse this one being used instead, providing the APIs remain consistent.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"bdd3b37ebaa62880792c7d9f10eab1d7c3370e78","unresolved":false,"context_lines":[{"line_number":184,"context_line":"REST API impact"},{"line_number":185,"context_line":"---------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Security impact"},{"line_number":190,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_0d6b0ef1","line":187,"updated":"2017-07-17 17:30:18.000000000","message":"Need to detail somewhere, either here or above, how a user specifies these tags in an API request.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"e0b2528b08c90bb98a5c16a761f56fb6da8e193c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"REST API impact"},{"line_number":185,"context_line":"---------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Security impact"},{"line_number":190,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_8280f647","line":187,"in_reply_to":"1f1a1f67_0d6b0ef1","updated":"2017-07-18 08:34:10.000000000","message":"Good suggestion, thanks.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"249340bff30c35325cfdab3c7c14b2a74b6acc71","unresolved":false,"context_lines":[{"line_number":209,"context_line":"Until now PCI device were grouped under the same physnet. The proposed change"},{"line_number":210,"context_line":"adds unique tags notation which will sub group pci devices according to"},{"line_number":211,"context_line":"physnet and unique tags. This will increase the number of pci pools seen by"},{"line_number":212,"context_line":"scheduler per compute node."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Other deployer impact"},{"line_number":215,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_6c28b185","line":212,"updated":"2017-07-13 10:43:28.000000000","message":"I think we need to be explicit here about the fact that we\u0027re iterating through the number of combinations here as we could have to do a significant amount of operations trying to find the pools we want.","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"249340bff30c35325cfdab3c7c14b2a74b6acc71","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Key point of the algorithm is to get PCI devices with the greatest"},{"line_number":229,"context_line":"number of unique tags. It means that if we have two tags (t1, t2) and"},{"line_number":230,"context_line":"it\u0027s not possible to get devices with both unique t1 and t2 it tries"},{"line_number":231,"context_line":"to get devices with unique t2 (details of choice will be explained"},{"line_number":232,"context_line":"further). Alternative behavior could be implemented easily: just fail"},{"line_number":233,"context_line":"if it\u0027s impossible to get devices with unique tags."}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_b983c556","line":230,"range":{"start_line":230,"start_character":60,"end_line":230,"end_character":62},"updated":"2017-07-13 10:43:28.000000000","message":"nit - algorithm","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"249340bff30c35325cfdab3c7c14b2a74b6acc71","unresolved":false,"context_lines":[{"line_number":241,"context_line":"3. Check if number of values for unique tags is appropriate for pci"},{"line_number":242,"context_line":"   requests count. Choose tags with correct amount of unique values"},{"line_number":243,"context_line":"   if not."},{"line_number":244,"context_line":"4. Filter pci devices pools."},{"line_number":245,"context_line":"5. Update pci requests."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"Let\u0027s see some examples:"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f1a1f67_8c32edf0","line":244,"updated":"2017-07-13 10:43:28.000000000","message":"... based on tags uniqueness","commit_id":"dc71b14c7370f468a99b8a326b55a290f162ded5"}]}
