)]}'
{"specs/victoria/approved/support-sriov-smartnic.rst":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"721f61f49f18dfdd57ad64f4481202d3402190aa","unresolved":false,"context_lines":[{"line_number":120,"context_line":"smart nic associated to a specific network. To implement this, it requires"},{"line_number":121,"context_line":"Nova, Cyborg and Neutron changes."},{"line_number":122,"context_line":"Assuming that Cyborg has reported the smart nic resources and related traits"},{"line_number":123,"context_line":"correctly.  The workflow is proposed as the following::"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"  +-----------+      +-----------+ +-----------+   +-----------+   +---------+"},{"line_number":126,"context_line":"  |   admin   |      |  Neutron  | |   Nova    |   | Placement |   |  Cyborg |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_60ef8387","line":123,"range":{"start_line":123,"start_character":16,"end_line":123,"end_character":24},"updated":"2020-07-25 03:06:48.000000000","message":"Does this workflow consider other server actions such as reboot/migration/shutdown/start?","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4630485f430190aedfbc5395bb110d6f65d960d1","unresolved":false,"context_lines":[{"line_number":120,"context_line":"smart nic associated to a specific network. To implement this, it requires"},{"line_number":121,"context_line":"Nova, Cyborg and Neutron changes."},{"line_number":122,"context_line":"Assuming that Cyborg has reported the smart nic resources and related traits"},{"line_number":123,"context_line":"correctly.  The workflow is proposed as the following::"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"  +-----------+      +-----------+ +-----------+   +-----------+   +---------+"},{"line_number":126,"context_line":"  |   admin   |      |  Neutron  | |   Nova    |   | Placement |   |  Cyborg |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_49c9c376","line":123,"range":{"start_line":123,"start_character":16,"end_line":123,"end_character":24},"in_reply_to":"9f560f44_60ef8387","updated":"2020-07-27 07:17:34.000000000","message":"reboot/migration etc is covered. But obviously not in this section. \nIn nova section states the port_backend request gonna extended port resource request. This means the request go into request spec, and then it could re-use most of the reboot/migration codes.\n\nBut seems explicitly mention this is a good idea.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4630485f430190aedfbc5395bb110d6f65d960d1","unresolved":false,"context_lines":[{"line_number":274,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":275,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":276,"context_line":"  the details of device profile which indicated by this port_backend."},{"line_number":277,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":278,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"},{"line_number":279,"context_line":"  resource and traits to this request group, if not, we should generate a"},{"line_number":280,"context_line":"  new resource group. Nova should have one single request_group to schedule"},{"line_number":281,"context_line":"  to a single smartnic resource provider [10]_."},{"line_number":282,"context_line":"* Nova Compute: Nova should update port binding profile with sriov nic\u0027s info"},{"line_number":283,"context_line":"  (such as pci adderess etc), so that libvirt driver can genereta related xml"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_89b75bd9","line":280,"range":{"start_line":277,"start_character":2,"end_line":280,"end_character":73},"updated":"2020-07-27 07:17:34.000000000","message":"It should mention extending the reqeust_group is port bias, each port use just one request group of placement.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4630485f430190aedfbc5395bb110d6f65d960d1","unresolved":false,"context_lines":[{"line_number":276,"context_line":"  the details of device profile which indicated by this port_backend."},{"line_number":277,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":278,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"},{"line_number":279,"context_line":"  resource and traits to this request group, if not, we should generate a"},{"line_number":280,"context_line":"  new resource group. Nova should have one single request_group to schedule"},{"line_number":281,"context_line":"  to a single smartnic resource provider [10]_."},{"line_number":282,"context_line":"* Nova Compute: Nova should update port binding profile with sriov nic\u0027s info"},{"line_number":283,"context_line":"  (such as pci adderess etc), so that libvirt driver can genereta related xml"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_698e472f","line":280,"range":{"start_line":279,"start_character":53,"end_line":280,"end_character":21},"updated":"2020-07-27 07:17:34.000000000","message":"It\u0027s better to mention, by extending this request group, most of reboot/restart/migration code could be reused, and these code flows covered.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"721f61f49f18dfdd57ad64f4481202d3402190aa","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* A new driver need to be added in Cyborg in order to discover and bind the"},{"line_number":290,"context_line":"  device. More details will be in Cyborg spec."},{"line_number":291,"context_line":"* Cyborg need implement a providers.yaml file to configure smart nic\u0027s"},{"line_number":292,"context_line":"  resource provider including resource class, trait and parent resource"},{"line_number":293,"context_line":"  provider. The following is a simplified pseudo-schema for the file format"},{"line_number":294,"context_line":"  (Please refer to Nova\u0027s Provider Configuration File [11]_):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_c0d64fc4","line":291,"range":{"start_line":291,"start_character":26,"end_line":291,"end_character":40},"updated":"2020-07-25 03:06:48.000000000","message":"configure file for static resources maybe OK.\n\nconfigure file for a complex card may increase the burden on admin/developer\u0027w work.\n\nsuch as the trait for a variable smartnic function.\nsuch as how to determine parent_provider name? \nsuch as a multi function smartnic card?","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4630485f430190aedfbc5395bb110d6f65d960d1","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* A new driver need to be added in Cyborg in order to discover and bind the"},{"line_number":290,"context_line":"  device. More details will be in Cyborg spec."},{"line_number":291,"context_line":"* Cyborg need implement a providers.yaml file to configure smart nic\u0027s"},{"line_number":292,"context_line":"  resource provider including resource class, trait and parent resource"},{"line_number":293,"context_line":"  provider. The following is a simplified pseudo-schema for the file format"},{"line_number":294,"context_line":"  (Please refer to Nova\u0027s Provider Configuration File [11]_):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_c998336c","line":291,"range":{"start_line":291,"start_character":26,"end_line":291,"end_character":40},"in_reply_to":"9f560f44_c0d64fc4","updated":"2020-07-27 07:17:34.000000000","message":"It\u0027s worth to note that this yaml just want to resolve the problem you listed. \n\nSo, add an explicit description here seems a good idea. BTW, uuid5 hash is used to generated identical UUID.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"607e7b328340ccb16ddb44e4a1c7624142a83aa8","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* A new driver need to be added in Cyborg in order to discover and bind the"},{"line_number":290,"context_line":"  device. More details will be in Cyborg spec."},{"line_number":291,"context_line":"* Cyborg need implement a providers.yaml file to configure smart nic\u0027s"},{"line_number":292,"context_line":"  resource provider including resource class, trait and parent resource"},{"line_number":293,"context_line":"  provider. The following is a simplified pseudo-schema for the file format"},{"line_number":294,"context_line":"  (Please refer to Nova\u0027s Provider Configuration File [11]_):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_82fa803f","line":291,"range":{"start_line":291,"start_character":26,"end_line":291,"end_character":40},"in_reply_to":"9f560f44_c998336c","updated":"2020-07-28 04:21:56.000000000","message":"Such as the card can also be nest provider.\nAnd there maybe also multi same card in one host.\nTo distinguish them,  maybe provider name can be composed of device name and BDF, or other forms.\n\nuuid5 is just used to generate UUID.  It can not reduce any this kind of burden for the admin/deployer.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"721f61f49f18dfdd57ad64f4481202d3402190aa","unresolved":false,"context_lines":[{"line_number":429,"context_line":"Work Items"},{"line_number":430,"context_line":"----------"},{"line_number":431,"context_line":"* Add new port extension in Neutron"},{"line_number":432,"context_line":"* Implement a new driver for smart nic in Cyborg"},{"line_number":433,"context_line":"* Add a configuration file in Cyborg to handle physnet"},{"line_number":434,"context_line":"* Parse and merge request into request spec in Nova"},{"line_number":435,"context_line":"* Bind ARQ to port id and update port binding profile."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_20e46bac","line":432,"range":{"start_line":432,"start_character":29,"end_line":432,"end_character":38},"updated":"2020-07-25 03:06:48.000000000","message":"Any plan for the smart nic?  \nMaybe for this feature, a common sriov card is OK.\nIt can make thinks more simple.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"721f61f49f18dfdd57ad64f4481202d3402190aa","unresolved":false,"context_lines":[{"line_number":431,"context_line":"* Add new port extension in Neutron"},{"line_number":432,"context_line":"* Implement a new driver for smart nic in Cyborg"},{"line_number":433,"context_line":"* Add a configuration file in Cyborg to handle physnet"},{"line_number":434,"context_line":"* Parse and merge request into request spec in Nova"},{"line_number":435,"context_line":"* Bind ARQ to port id and update port binding profile."},{"line_number":436,"context_line":"* Insert xml section about sriov nic."},{"line_number":437,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_00e1679b","line":434,"range":{"start_line":434,"start_character":0,"end_line":434,"end_character":51},"updated":"2020-07-25 03:06:48.000000000","message":"In the above nova change section, does no describe how to merge the request spec.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4630485f430190aedfbc5395bb110d6f65d960d1","unresolved":false,"context_lines":[{"line_number":431,"context_line":"* Add new port extension in Neutron"},{"line_number":432,"context_line":"* Implement a new driver for smart nic in Cyborg"},{"line_number":433,"context_line":"* Add a configuration file in Cyborg to handle physnet"},{"line_number":434,"context_line":"* Parse and merge request into request spec in Nova"},{"line_number":435,"context_line":"* Bind ARQ to port id and update port binding profile."},{"line_number":436,"context_line":"* Insert xml section about sriov nic."},{"line_number":437,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_09cb4b53","line":434,"range":{"start_line":434,"start_character":0,"end_line":434,"end_character":51},"in_reply_to":"9f560f44_00e1679b","updated":"2020-07-27 07:17:34.000000000","message":"Yeah, an explicit description is better.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"721f61f49f18dfdd57ad64f4481202d3402190aa","unresolved":false,"context_lines":[{"line_number":433,"context_line":"* Add a configuration file in Cyborg to handle physnet"},{"line_number":434,"context_line":"* Parse and merge request into request spec in Nova"},{"line_number":435,"context_line":"* Bind ARQ to port id and update port binding profile."},{"line_number":436,"context_line":"* Insert xml section about sriov nic."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"Dependencies"},{"line_number":439,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_a05b5b85","line":436,"range":{"start_line":436,"start_character":0,"end_line":436,"end_character":37},"updated":"2020-07-25 03:06:48.000000000","message":"Is there xml special for this kind of sriov nic?\nCat we leverage ov-vif, or do we need a extra a cyborg handle for the sriov nic from cyborg? \nAny description for extra works will need for this work items?","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4630485f430190aedfbc5395bb110d6f65d960d1","unresolved":false,"context_lines":[{"line_number":433,"context_line":"* Add a configuration file in Cyborg to handle physnet"},{"line_number":434,"context_line":"* Parse and merge request into request spec in Nova"},{"line_number":435,"context_line":"* Bind ARQ to port id and update port binding profile."},{"line_number":436,"context_line":"* Insert xml section about sriov nic."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"Dependencies"},{"line_number":439,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_29c28f34","line":436,"range":{"start_line":436,"start_character":0,"end_line":436,"end_character":37},"in_reply_to":"9f560f44_a05b5b85","updated":"2020-07-27 07:17:34.000000000","message":"We actually re-use all the liberty xml generating code. Fix me, XinRan.","commit_id":"d546540ceea7f8cc175ac6bde01a3917112ee5bf"}],"specs/wallaby/approved/support-sriov-smartnic.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":82,"context_line":"get the nic as a resource. We will explain this part in detail in Cyborg"},{"line_number":83,"context_line":"spec."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Device information report"},{"line_number":86,"context_line":":::::::::::::::::::::::::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_47950332","line":83,"updated":"2020-10-01 15:59:57.000000000","message":"Could you please add a link to such spec?","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"949f8d627283ed6447634cdde0ce7c283bb61f0f","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":82,"context_line":"get the nic as a resource. We will explain this part in detail in Cyborg"},{"line_number":83,"context_line":"spec."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Device information report"},{"line_number":86,"context_line":":::::::::::::::::::::::::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_ebbd1569","line":83,"in_reply_to":"9f560f44_47950332","updated":"2020-10-30 07:31:42.000000000","message":"Done","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":96,"context_line":"the flowchart). In this step, we should find a way in which Cyborg and"},{"line_number":97,"context_line":"Neutron are aware of the existence of the resource providers"},{"line_number":98,"context_line":"corresponding to the same networking device."},{"line_number":99,"context_line":"To solve this, it is necessary that Cyborg and Neutron make a convention"},{"line_number":100,"context_line":"of resource provider’s names(this name is stored in providers.yaml) so"},{"line_number":101,"context_line":"that they can get the same UUID from the name. In this way, the one who"},{"line_number":102,"context_line":"wants to create a new resource provider should check if the RP is already"},{"line_number":103,"context_line":"existed by Placement API, which can avoid duplicate records in Placement."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_11486988","line":100,"range":{"start_line":99,"start_character":55,"end_line":100,"end_character":28},"updated":"2020-10-01 15:59:57.000000000","message":"There is a naming convention in Neutron for device RPs and Nova has already depend on that convention. See: https://github.com/openstack/nova/blob/2beb18444fccac2ffe73292423ff801a9f327f49/nova/compute/utils.py#L1527-L1531","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Neutron are aware of the existence of the resource providers"},{"line_number":98,"context_line":"corresponding to the same networking device."},{"line_number":99,"context_line":"To solve this, it is necessary that Cyborg and Neutron make a convention"},{"line_number":100,"context_line":"of resource provider’s names(this name is stored in providers.yaml) so"},{"line_number":101,"context_line":"that they can get the same UUID from the name. In this way, the one who"},{"line_number":102,"context_line":"wants to create a new resource provider should check if the RP is already"},{"line_number":103,"context_line":"existed by Placement API, which can avoid duplicate records in Placement."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_915bd953","line":100,"range":{"start_line":100,"start_character":29,"end_line":100,"end_character":66},"updated":"2020-10-01 15:59:57.000000000","message":"providers.yaml of Nova?","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"949f8d627283ed6447634cdde0ce7c283bb61f0f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Neutron are aware of the existence of the resource providers"},{"line_number":98,"context_line":"corresponding to the same networking device."},{"line_number":99,"context_line":"To solve this, it is necessary that Cyborg and Neutron make a convention"},{"line_number":100,"context_line":"of resource provider’s names(this name is stored in providers.yaml) so"},{"line_number":101,"context_line":"that they can get the same UUID from the name. In this way, the one who"},{"line_number":102,"context_line":"wants to create a new resource provider should check if the RP is already"},{"line_number":103,"context_line":"existed by Placement API, which can avoid duplicate records in Placement."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_2bb8ad74","line":100,"range":{"start_line":100,"start_character":29,"end_line":100,"end_character":66},"in_reply_to":"9f560f44_915bd953","updated":"2020-10-30 07:31:42.000000000","message":"After the ptg discussion, we should add a configuration file in cyborg side and keep it consistent with nova/neutron.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* How to report physnet trait:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Admin should be aware of mapping relation between the nic and"},{"line_number":109,"context_line":"physical network. So we should let the admin manage this."},{"line_number":110,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":111,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":112,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":113,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":114,"context_line":"report to Placement."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Interaction when booting the VM"},{"line_number":117,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_64d5a547","line":114,"range":{"start_line":108,"start_character":0,"end_line":114,"end_character":20},"updated":"2020-10-01 15:59:57.000000000","message":"This is defined in two places:\n* In neutron in the sriov agent config [sriov_nic]/physical_device_mappings\n  It is a list of physnet:host_device_name pairs. \n* In nova it is in the nova-compute config. e.g:\n[pci]/passthrough_whitelist \u003d [{ \"address\": \"0000:81:*\", \"physical_network\": \"physnet0\" }]\n\nIt would be nice not having a 3rd place to configure this. Do you have a plan to unify these places?","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* How to report physnet trait:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Admin should be aware of mapping relation between the nic and"},{"line_number":109,"context_line":"physical network. So we should let the admin manage this."},{"line_number":110,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":111,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":112,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":113,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":114,"context_line":"report to Placement."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Interaction when booting the VM"},{"line_number":117,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_b180ac8d","line":114,"range":{"start_line":108,"start_character":0,"end_line":114,"end_character":20},"in_reply_to":"1f621f24_abab1d1b","updated":"2020-10-30 10:22:42.000000000","message":"If the same physical device only configured either by neutron or by cyborg but never by both then having a physnet config in cyborg is OK.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"949f8d627283ed6447634cdde0ce7c283bb61f0f","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* How to report physnet trait:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Admin should be aware of mapping relation between the nic and"},{"line_number":109,"context_line":"physical network. So we should let the admin manage this."},{"line_number":110,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":111,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":112,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":113,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":114,"context_line":"report to Placement."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Interaction when booting the VM"},{"line_number":117,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_abab1d1b","line":114,"range":{"start_line":108,"start_character":0,"end_line":114,"end_character":20},"in_reply_to":"9f560f44_64d5a547","updated":"2020-10-30 07:31:42.000000000","message":"Currenty, we choose to add a config file in cyborg side as a solution. But other solutions are welcomed, we can discuss if neutron can always report physnet trait, for example.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":145,"context_line":"       |--------------------------------\u003e|               |                 |"},{"line_number":146,"context_line":"                        3.get port details and physnet trait               |"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                           |------------\u003e|               |                 |"},{"line_number":149,"context_line":"                                                  4. get device profile"},{"line_number":150,"context_line":"                           |             |\u003c-------------------------------\u003e|"},{"line_number":151,"context_line":"                           |             |  5.sheduling  |                 |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_87c71b47","line":148,"range":{"start_line":148,"start_character":27,"end_line":148,"end_character":42},"updated":"2020-10-01 15:59:57.000000000","message":"This arrow is in the wrong direction. Nova asks the information of the ports from neutron","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"949f8d627283ed6447634cdde0ce7c283bb61f0f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"       |--------------------------------\u003e|               |                 |"},{"line_number":146,"context_line":"                        3.get port details and physnet trait               |"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                           |------------\u003e|               |                 |"},{"line_number":149,"context_line":"                                                  4. get device profile"},{"line_number":150,"context_line":"                           |             |\u003c-------------------------------\u003e|"},{"line_number":151,"context_line":"                           |             |  5.sheduling  |                 |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_8ba8e11f","line":148,"range":{"start_line":148,"start_character":27,"end_line":148,"end_character":42},"in_reply_to":"9f560f44_87c71b47","updated":"2020-10-30 07:31:42.000000000","message":"Done","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":169,"context_line":"1. Firstly, Neutron needs to add a new port extension \u0027port_backend’ to"},{"line_number":170,"context_line":"store the device profile created by admin. Related API needs to be added"},{"line_number":171,"context_line":"as well to operate this. For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type direct --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_67f2c79d","line":172,"range":{"start_line":172,"start_character":34,"end_line":172,"end_character":53},"updated":"2020-10-01 15:59:57.000000000","message":"Do we need a cyborg / smartnic specific vnic type? Or does smartnic will support all the existing vnic_types like normal, direct, direct-physical, macvtap...","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"949f8d627283ed6447634cdde0ce7c283bb61f0f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"1. Firstly, Neutron needs to add a new port extension \u0027port_backend’ to"},{"line_number":170,"context_line":"store the device profile created by admin. Related API needs to be added"},{"line_number":171,"context_line":"as well to operate this. For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type direct --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_0b7211e6","line":172,"range":{"start_line":172,"start_character":34,"end_line":172,"end_character":53},"in_reply_to":"9f560f44_67f2c79d","updated":"2020-10-30 07:31:42.000000000","message":"We can add a new vnic-type\u003dcyborg for the port associated with deivce managed by cyborg. I updated this in next commit.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":194,"context_line":"this port is associated to, as well as the physical network this network"},{"line_number":195,"context_line":"belongs to."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"4. If the “port_backend” extension of sriov_port1 is not None, Nova will"},{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [2]_, related ARQ are"},{"line_number":199,"context_line":"created in this step."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"5. Nova needs to merge physical network trait and the resource class/trait"},{"line_number":202,"context_line":"obtained from Cyborg’s device profile into a one single request group. And this"},{"line_number":203,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":204,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"6. Nova schedules the VM to an available compute node who matches all"},{"line_number":207,"context_line":"requested resources."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_477fc3de","line":204,"range":{"start_line":197,"start_character":0,"end_line":204,"end_character":55},"updated":"2020-10-01 15:59:57.000000000","message":"This feels complicated to me. Today a neutron port has a resource_request that already describes the required physnet trait. So it does not make sense to get another physnet trait from cyborg for the same neutron port.\n\nI have similar feeling about the resource classes. If this is one neutron port then I would assume that the resource request of the port describes what the port needs. From nova perspective I don\u0027t want to go throught the  port-\u003eport_backend-\u003ecyborg indirection to get another resource request that then needs to be merged to the already handled port resource request.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"8. Libvirt driver need to insert SRIOV nic info to the XML"},{"line_number":215,"context_line":"section."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"API calls"},{"line_number":219,"context_line":"^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_c7a75350","line":216,"updated":"2020-10-01 15:59:57.000000000","message":"So far my understanding is that from nova perspective a smart nic is just another type of neutron port that has some resource request that needs to consider during scheduling and at the end it becomes a single PCI device in the domain XML. This is totally same as other direct or direct-physical neutron ports. So I would like to handle them as such.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"20e2b8cb3675837f466d38d9ff22e02e975d4777","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"8. Libvirt driver need to insert SRIOV nic info to the XML"},{"line_number":215,"context_line":"section."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"API calls"},{"line_number":219,"context_line":"^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f65232a_54716ce0","line":216,"in_reply_to":"9f560f44_c7a75350","updated":"2020-10-21 02:54:49.000000000","message":"You are absolutely right, once properly update the binding information to neutron, libvirt handle it just as normal SRIOV, nothing needs to change there.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  In this way, Neutron should firstly get resource provider created by Cyborg"},{"line_number":354,"context_line":"  by Placment API, and Neutron also need to find the right physnet tratis"},{"line_number":355,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"How Nova generate request_spec with request device"},{"line_number":358,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":359,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_e29b65c5","line":356,"updated":"2020-10-01 15:59:57.000000000","message":"Does smartnic support requires the [sriov_nic]/physical_device_mappings neutron configuration? If yes then:\n\nTo be able to use an SRIOV port today neutron needs to be configured at least with [sriov_nic]/physical_device_mappings . If neutron also have qos min bandwidth configuration then neutron starts reporting the device RPs and physnet traits.\n\nWhat if we change neutron to report the device RPs and physnet traits already when [sriov_nic]/physical_device_mappings is configured, just not report the bandwidth resources until qos is configured.\n\nThis way Cyborg can assume that the device RP and the physnet trait is always created by neutron.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"949f8d627283ed6447634cdde0ce7c283bb61f0f","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  In this way, Neutron should firstly get resource provider created by Cyborg"},{"line_number":354,"context_line":"  by Placment API, and Neutron also need to find the right physnet tratis"},{"line_number":355,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"How Nova generate request_spec with request device"},{"line_number":358,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":359,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_cb501936","line":356,"in_reply_to":"9f560f44_e29b65c5","updated":"2020-10-30 07:31:42.000000000","message":"In this solution, we should consider the RP structure. Currently, cyborg report device RP direcly under compute node RP as a child. If bandwidth qos configured, the nic is reported under Agent RP. \nWhat will the RP structure look like if we let neutron report physnet no matter if qos is configured or not. \nI will add this question in next commit as well.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"20e2b8cb3675837f466d38d9ff22e02e975d4777","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  In this way, Neutron should firstly get resource provider created by Cyborg"},{"line_number":354,"context_line":"  by Placment API, and Neutron also need to find the right physnet tratis"},{"line_number":355,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"How Nova generate request_spec with request device"},{"line_number":358,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":359,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f65232a_f49198f3","line":356,"in_reply_to":"9f560f44_e29b65c5","updated":"2020-10-21 02:54:49.000000000","message":"In this way, Nova SRIOV may be benefits also. This is an alternative possible solve 2 problems.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7ae73c618a84bed09563daf48e841bb5f508882","unresolved":false,"context_lines":[{"line_number":356,"context_line":""},{"line_number":357,"context_line":"How Nova generate request_spec with request device"},{"line_number":358,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":359,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":360,"context_line":"  trait into port_resource_reqeust, then return to Nova."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":363,"context_line":"  is a sub-component for Neutorn. It\u0027s better to let Nova interact with Cyborg"},{"line_number":364,"context_line":"  and Neutron equally."},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"* Implement a new PortBackendRequest to store the port backend\u0027s request"},{"line_number":367,"context_line":"  group, and pass it as a new parameter when Nova generate request_spec."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f560f44_6290f597","line":364,"range":{"start_line":359,"start_character":1,"end_line":364,"end_character":22},"updated":"2020-10-01 15:59:57.000000000","message":"While it requires cyborg - neturon interactions I think from nova perspective a smartnic port is just a neutron port. Nova does not even need to know that it is backed by a smartnic, nova only needs a proper resource request at the start and a PCI device at the end.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"20e2b8cb3675837f466d38d9ff22e02e975d4777","unresolved":false,"context_lines":[{"line_number":356,"context_line":""},{"line_number":357,"context_line":"How Nova generate request_spec with request device"},{"line_number":358,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":359,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":360,"context_line":"  trait into port_resource_reqeust, then return to Nova."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":363,"context_line":"  is a sub-component for Neutorn. It\u0027s better to let Nova interact with Cyborg"},{"line_number":364,"context_line":"  and Neutron equally."},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"* Implement a new PortBackendRequest to store the port backend\u0027s request"},{"line_number":367,"context_line":"  group, and pass it as a new parameter when Nova generate request_spec."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f65232a_3462f017","line":364,"range":{"start_line":359,"start_character":1,"end_line":364,"end_character":22},"in_reply_to":"9f560f44_6290f597","updated":"2020-10-21 02:54:49.000000000","message":"Worth digging deeper. Nova knows lots of port information, Feel like nova/network/neutron binding so tight with Neutron.  \n\nOne tricky problem is Nova needs to rebuild/resize... the instance,  most of the case(fixe me) Nova need to arrange resources consume timing to proper resize instance.","commit_id":"749b12ab19027442f89b18f290e845d93ac36154"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"sriov nic resource."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed change"},{"line_number":38,"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":6,"id":"1f621f24_b14f0cbc","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":19},"updated":"2020-10-30 10:22:42.000000000","message":"This use case currently supported via neutron. So please detail the real use case which I guess involves customizing the sriov device with some offloading capabilities.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"sriov nic resource."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed change"},{"line_number":38,"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":6,"id":"1f621f24_88d0d0f9","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":19},"in_reply_to":"1f621f24_b14f0cbc","updated":"2020-11-03 02:37:58.000000000","message":"Yes, exactly. I will add more details here.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":82,"context_line":"get the nic as a resource. We will explain this part in detail in Cyborg"},{"line_number":83,"context_line":"spec, please refer to https://review.opendev.org/#/c/759545/."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Device information report"},{"line_number":86,"context_line":":::::::::::::::::::::::::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_f11344b7","line":83,"updated":"2020-10-30 10:22:42.000000000","message":"I left some comment in the cyborg spec","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":105,"context_line":"one configured in Neutron. In this way, the one who wants to create a new"},{"line_number":106,"context_line":"resource provider should check if the RP is already existed by Placement API,"},{"line_number":107,"context_line":"which can avoid duplicate records in Placement. (Please refer to 2,3 in"},{"line_number":108,"context_line":"flowchart)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* How to report physnet trait:"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_f1622416","line":108,"updated":"2020-10-30 10:22:42.000000000","message":"On the PTG[1] we said that in the first step we would like to avoid the complication of representing one physical device twice, once by neutron from qos perspective and once by cyborg from accelerator perspective. \n\nWhile the above text solves the double representation by instructing cyborg admin to use the same name for the RP. It does not solve the issue of\n* which services starts first and creates the RP tree while the other service waits for the RP tree\n* does not handle the implicit ownership of the RPs (please note that the device RP is created under the neutron agent RP at the moment). E.g. neutron might try to delete the RPs after a configuration change while cyborg still depend on those RPs.\n\nSo I still suggest to state here (and document it later during the implementation) that a smart nic device that is handled by Cyborg should not be configured in neutron device mapping. And vice versa if a smartnic is used as an SRIOV device by neutron then it cannot be in parallel configured in cyborg.\n\n[1] https://etherpad.opendev.org/p/nova-wallaby-ptg","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86b87563f1982623c15b9f2149671a530d1a324d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"one configured in Neutron. In this way, the one who wants to create a new"},{"line_number":106,"context_line":"resource provider should check if the RP is already existed by Placement API,"},{"line_number":107,"context_line":"which can avoid duplicate records in Placement. (Please refer to 2,3 in"},{"line_number":108,"context_line":"flowchart)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* How to report physnet trait:"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_9ab45b37","line":108,"in_reply_to":"1f621f24_883e1027","updated":"2020-11-05 13:22:12.000000000","message":"\u003e From my understanding, the device mapping config:\n \u003e (physical_device_mappings \u003d physnet1:eth0)\n \u003e will not create any RP in placement. \n\nCorrect only resource_provider_bandwidths configuration would trigger an RP creating in neutron.\n\n \u003e It is used to locate the nic\n \u003e in a certain network.  If we do not configure this, we can not boot\n \u003e a VM with sriov port. Please correct me if I missed some info.\n \u003e \n\nIf you need the neutron sriov agent to configure the smartNIC phyiscal device on the host then you need to configure the smartNIC device in the physical_device_mappings config. However this would mean that both the neutron agent and the cyborg agent would try to configure the same physical device on the host. Would this cause a configuration conflict on the physical device level?\n\n \u003e I agree with you that we should let Cyborg handle and report nic RP\n \u003e and physnet trait to Placement.\n\nWhat you definitely need to forbid is to configure resource_provider_bandwidths in neutron for a device that is also configured in Cyborg. As that would lead to RP conflict as both neutron and cyborg would try to create an RP for the same physical device.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":105,"context_line":"one configured in Neutron. In this way, the one who wants to create a new"},{"line_number":106,"context_line":"resource provider should check if the RP is already existed by Placement API,"},{"line_number":107,"context_line":"which can avoid duplicate records in Placement. (Please refer to 2,3 in"},{"line_number":108,"context_line":"flowchart)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* How to report physnet trait:"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_883e1027","line":108,"in_reply_to":"1f621f24_f1622416","updated":"2020-11-03 02:37:58.000000000","message":"From my understanding, the device mapping config:\n(physical_device_mappings \u003d physnet1:eth0)\nwill not create any RP in placement. It is used to locate the nic in a certain network.  If we do not configure this, we can not boot a VM with sriov port. Please correct me if I missed some info.\n\nI agree with you that we should let Cyborg handle and report nic RP and physnet trait to Placement.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Admin should be aware of mapping relation between the nic and"},{"line_number":113,"context_line":"physical network. So we should let the admin manage this."},{"line_number":114,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":115,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":116,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":117,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":118,"context_line":"report to Placement."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_d150c835","line":115,"range":{"start_line":114,"start_character":44,"end_line":115,"end_character":63},"updated":"2020-10-30 10:22:42.000000000","message":"See my comment above","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":113,"context_line":"physical network. So we should let the admin manage this."},{"line_number":114,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":115,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":116,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":117,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":118,"context_line":"report to Placement."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Interaction when booting the VM"},{"line_number":121,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_515cb84a","line":118,"range":{"start_line":116,"start_character":54,"end_line":118,"end_character":20},"updated":"2020-10-30 10:22:42.000000000","message":"If the same physical device only configured either by neutron or by cyborg but never by both at the same time then having a physnet config and phynet reporting in cyborg is OK.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":113,"context_line":"physical network. So we should let the admin manage this."},{"line_number":114,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":115,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":116,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":117,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":118,"context_line":"report to Placement."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Interaction when booting the VM"},{"line_number":121,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_683bb437","line":118,"range":{"start_line":116,"start_character":54,"end_line":118,"end_character":20},"in_reply_to":"1f621f24_515cb84a","updated":"2020-11-03 02:37:58.000000000","message":"Does this mean that, currently, we cannot support co-existence between cyborg smartnic support and neutron QoS feature?","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86b87563f1982623c15b9f2149671a530d1a324d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"physical network. So we should let the admin manage this."},{"line_number":114,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":115,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":116,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":117,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":118,"context_line":"report to Placement."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Interaction when booting the VM"},{"line_number":121,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_9a8d7b7d","line":118,"range":{"start_line":116,"start_character":54,"end_line":118,"end_character":20},"in_reply_to":"1f621f24_683bb437","updated":"2020-11-05 13:22:12.000000000","message":"Yes. To support both cyborg smartnic handling and neutron qos handling on the same physical device we would need to solve the RP representation and ownership issues I described at my comment at L108.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":212,"context_line":"6. Nova schedules the VM to an available compute node who matches all"},{"line_number":213,"context_line":"requested resources."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"7. After scheduling, Nova needs to call Cyborg to bind the ARQ with port id"},{"line_number":216,"context_line":"and return attach_handle which contains the device\u0027s info such as PCI"},{"line_number":217,"context_line":"address. Nova also needs to tell Neutron to update the port binding’s info"},{"line_number":218,"context_line":"in this step."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_510af825","line":215,"range":{"start_line":215,"start_character":59,"end_line":215,"end_character":75},"updated":"2020-10-30 10:22:42.000000000","message":"does it mean that the create and update ARQ API in cyborg needs to change include the port_id?","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":212,"context_line":"6. Nova schedules the VM to an available compute node who matches all"},{"line_number":213,"context_line":"requested resources."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"7. After scheduling, Nova needs to call Cyborg to bind the ARQ with port id"},{"line_number":216,"context_line":"and return attach_handle which contains the device\u0027s info such as PCI"},{"line_number":217,"context_line":"address. Nova also needs to tell Neutron to update the port binding’s info"},{"line_number":218,"context_line":"in this step."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_eb7a1e86","line":215,"range":{"start_line":215,"start_character":59,"end_line":215,"end_character":75},"in_reply_to":"1f621f24_510af825","updated":"2020-11-03 02:37:58.000000000","message":"Yes, I will add this to this spec.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":406,"context_line":"REST API impact"},{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":"A new extension will be added in Neutron port, Neutron API will need changes."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Security impact"},{"line_number":412,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_2c2283a5","line":409,"updated":"2020-10-30 10:22:42.000000000","message":"do we need a cyborg API change due to comment at L215?","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":406,"context_line":"REST API impact"},{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":"A new extension will be added in Neutron port, Neutron API will need changes."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Security impact"},{"line_number":412,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_8b69eabf","line":409,"in_reply_to":"1f621f24_2c2283a5","updated":"2020-11-03 02:37:58.000000000","message":"Yes, we need to change current cyborg API to support to bind a neutron port with arq.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":"A new extension will be added in Neutron port, Neutron API will need changes."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Security impact"},{"line_number":412,"context_line":"---------------"},{"line_number":413,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_2c70c3a5","line":410,"updated":"2020-10-30 10:22:42.000000000","message":"Please state which lifecycle operations will be supported / rejected for nova servers having these type of neutron ports.\nE.g.:\n* interface attach / detach\n* hard reboot\n* rebuild\n* move operations (resize, migrate, live migrate, evacuate, unshelve after shelve offload)\n...\n\nAlso please state when the port_backend attribute can be changed on a neutron port.\n\nAlso please define the expected behavior for neutron port delete. Please note that neutron allows deleting a bound port.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":"A new extension will be added in Neutron port, Neutron API will need changes."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Security impact"},{"line_number":412,"context_line":"---------------"},{"line_number":413,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_4bf3520b","line":410,"in_reply_to":"1f621f24_2c70c3a5","updated":"2020-11-03 02:37:58.000000000","message":"Thanks for the reminder, I will add more details of the operation in the next commit.\n\nI would like that we don\u0027t allow the port_backend change in the first step once the port is bound with one instance. And users can change this attribute only when the port is unbound.\n\nAs for port deletion, I prefer that not allow deleting port with a physical device associated with. Any concern if we do like this? please correct me.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86b87563f1982623c15b9f2149671a530d1a324d","unresolved":false,"context_lines":[{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":"A new extension will be added in Neutron port, Neutron API will need changes."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Security impact"},{"line_number":412,"context_line":"---------------"},{"line_number":413,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_5ad8037e","line":410,"in_reply_to":"1f621f24_4bf3520b","updated":"2020-11-05 13:22:12.000000000","message":"\u003e Thanks for the reminder, I will add more details of the operation\n \u003e in the next commit.\n \u003e \n \u003e I would like that we don\u0027t allow the port_backend change in the\n \u003e first step once the port is bound with one instance. And users can\n \u003e change this attribute only when the port is unbound.\n\n+1\n\n \u003e \n \u003e As for port deletion, I prefer that not allow deleting port with a\n \u003e physical device associated with. Any concern if we do like this?\n \u003e please correct me.\n\nThat is a tricky thing. As the generic behavior of neutron is to always allow port delete. You have to talk to the neutron folks about this.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b141a4d35e383a48e2cff34ea15994e62a931c82","unresolved":false,"context_lines":[{"line_number":479,"context_line":""},{"line_number":480,"context_line":"* Need to add UT in the involved project."},{"line_number":481,"context_line":"* Functional test in Nova."},{"line_number":482,"context_line":"* Tempest test in Nova if necessary."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_ac35f3dc","line":482,"updated":"2020-10-30 10:22:42.000000000","message":"Do we have a way to test this in the gate? Maybe with a fake cyborg driver?","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86b87563f1982623c15b9f2149671a530d1a324d","unresolved":false,"context_lines":[{"line_number":479,"context_line":""},{"line_number":480,"context_line":"* Need to add UT in the involved project."},{"line_number":481,"context_line":"* Functional test in Nova."},{"line_number":482,"context_line":"* Tempest test in Nova if necessary."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_9abbbb0c","line":482,"in_reply_to":"1f621f24_5afe6c37","updated":"2020-11-05 13:22:12.000000000","message":"+1","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f3ab77e540ac2f0af544ff6fa4319314418f7bf1","unresolved":false,"context_lines":[{"line_number":479,"context_line":""},{"line_number":480,"context_line":"* Need to add UT in the involved project."},{"line_number":481,"context_line":"* Functional test in Nova."},{"line_number":482,"context_line":"* Tempest test in Nova if necessary."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_5afe6c37","line":482,"in_reply_to":"1f621f24_ac35f3dc","updated":"2020-11-03 02:37:58.000000000","message":"Cyborg now has a fake driver to run tempest test. We could add this scenario and use this fake driver to test.","commit_id":"e7d6aa11c190dc6fa2bba29634a7ae17aec13b6e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Device information report"},{"line_number":89,"context_line":":::::::::::::::::::::::::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* How to report physnet trait:"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Admin should be aware of mapping relation between the nic and"},{"line_number":94,"context_line":"physical network. So we should let the admin manage this."},{"line_number":95,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_b66610ec","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":5},"updated":"2020-11-17 11:59:54.000000000","message":"this formatting causes that the generated doc has a bullet point then a not indented paragraph. I guess for such a thing a sub-chapter heading would be better than a bullet point.\n\nI see that you have a pretty deep nesting of subchapters. I suggest to flatten a bit. I think the device discover and report subchapter level can be dropped and you can have device discover and device report in one level higher","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Device information report"},{"line_number":89,"context_line":":::::::::::::::::::::::::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* How to report physnet trait:"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Admin should be aware of mapping relation between the nic and"},{"line_number":94,"context_line":"physical network. So we should let the admin manage this."},{"line_number":95,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_e21c38c3","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":5},"in_reply_to":"1f621f24_b66610ec","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_3bd82951","line":99,"range":{"start_line":99,"start_character":61,"end_line":99,"end_character":67},"updated":"2020-11-17 11:59:54.000000000","message":"nit: Cyborg\u0027s","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_bb1ef908","line":99,"range":{"start_line":99,"start_character":31,"end_line":99,"end_character":40},"updated":"2020-11-17 11:59:54.000000000","message":"nit: is","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_5bd5251b","line":99,"range":{"start_line":99,"start_character":41,"end_line":99,"end_character":52},"updated":"2020-11-17 11:59:54.000000000","message":"nit: responsible","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_4277ec09","line":99,"range":{"start_line":99,"start_character":61,"end_line":99,"end_character":67},"in_reply_to":"1f621f24_3bd82951","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_227c70ea","line":99,"range":{"start_line":99,"start_character":41,"end_line":99,"end_character":52},"in_reply_to":"1f621f24_5bd5251b","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_828104c7","line":99,"range":{"start_line":99,"start_character":31,"end_line":99,"end_character":40},"in_reply_to":"1f621f24_bb1ef908","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* Co-existence with Neutron\u0027s Guaranteed Minimum Bandwidth [1]_ Feature."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_bbe39904","line":100,"range":{"start_line":100,"start_character":17,"end_line":100,"end_character":38},"updated":"2020-11-17 11:59:54.000000000","message":"file consistent","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":98,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":99,"context_line":"report to Placement. The admin should be respinsible to keep Cyborg and"},{"line_number":100,"context_line":"Neutron\u0027s config file being conssitent, otherwise there will be a"},{"line_number":101,"context_line":"configuration conflict."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* Co-existence with Neutron\u0027s Guaranteed Minimum Bandwidth [1]_ Feature."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_628668de","line":100,"range":{"start_line":100,"start_character":17,"end_line":100,"end_character":38},"in_reply_to":"1f621f24_bbe39904","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":294,"context_line":"Cyborg"},{"line_number":295,"context_line":"------"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* A new driver need to be added in Cyborg in order to discover, program and"},{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_3b65c9b5","line":297,"range":{"start_line":297,"start_character":15,"end_line":297,"end_character":19},"updated":"2020-11-17 11:59:54.000000000","message":"nit: needs","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":294,"context_line":"Cyborg"},{"line_number":295,"context_line":"------"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* A new driver need to be added in Cyborg in order to discover, program and"},{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_c26adc19","line":297,"range":{"start_line":297,"start_character":15,"end_line":297,"end_character":19},"in_reply_to":"1f621f24_3b65c9b5","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":295,"context_line":"------"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* A new driver need to be added in Cyborg in order to discover, program and"},{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."},{"line_number":301,"context_line":"* Cyborg need implement a device config file to configure the nic\u0027s"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_9b585dfa","line":298,"range":{"start_line":298,"start_character":31,"end_line":298,"end_character":44},"updated":"2020-11-17 11:59:54.000000000","message":"nit: is in the Cyborg","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":295,"context_line":"------"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* A new driver need to be added in Cyborg in order to discover, program and"},{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."},{"line_number":301,"context_line":"* Cyborg need implement a device config file to configure the nic\u0027s"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_a267e051","line":298,"range":{"start_line":298,"start_character":31,"end_line":298,"end_character":44},"in_reply_to":"1f621f24_9b585dfa","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* A new driver need to be added in Cyborg in order to discover, program and"},{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."},{"line_number":301,"context_line":"* Cyborg need implement a device config file to configure the nic\u0027s"},{"line_number":302,"context_line":"  name, pci address, physnet name etc, which are used for Cyborg driver to"},{"line_number":303,"context_line":"  generate resource provider, trait etc."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_7b5bc1f4","line":300,"range":{"start_line":299,"start_character":71,"end_line":300,"end_character":5},"updated":"2020-11-17 11:59:54.000000000","message":"nit: to a port id","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* A new driver need to be added in Cyborg in order to discover, program and"},{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."},{"line_number":301,"context_line":"* Cyborg need implement a device config file to configure the nic\u0027s"},{"line_number":302,"context_line":"  name, pci address, physnet name etc, which are used for Cyborg driver to"},{"line_number":303,"context_line":"  generate resource provider, trait etc."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_0275f4fa","line":300,"range":{"start_line":299,"start_character":71,"end_line":300,"end_character":5},"in_reply_to":"1f621f24_7b5bc1f4","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."},{"line_number":301,"context_line":"* Cyborg need implement a device config file to configure the nic\u0027s"},{"line_number":302,"context_line":"  name, pci address, physnet name etc, which are used for Cyborg driver to"},{"line_number":303,"context_line":"  generate resource provider, trait etc."},{"line_number":304,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_1b53ade3","line":301,"range":{"start_line":301,"start_character":9,"end_line":301,"end_character":14},"updated":"2020-11-17 11:59:54.000000000","message":"nit: needs to","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":298,"context_line":"  bind the device. More details is in Cyborg spec."},{"line_number":299,"context_line":"* Cyborg should improve current bind ARQ API to support binding an ARQ to port"},{"line_number":300,"context_line":"  id."},{"line_number":301,"context_line":"* Cyborg need implement a device config file to configure the nic\u0027s"},{"line_number":302,"context_line":"  name, pci address, physnet name etc, which are used for Cyborg driver to"},{"line_number":303,"context_line":"  generate resource provider, trait etc."},{"line_number":304,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_42608c36","line":301,"range":{"start_line":301,"start_character":9,"end_line":301,"end_character":14},"in_reply_to":"1f621f24_1b53ade3","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"  As we know, Neutron will create RP and related traits when bandwidth QoS"},{"line_number":333,"context_line":"  configured. We propose that Neutron could always report RP and physnet traits"},{"line_number":334,"context_line":"  all the time, no matter the bandwidth qos configured or not. In this way,"},{"line_number":335,"context_line":"  Cyborg will just find the RP created by Neutron by using some name"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_bb70b973","line":332,"range":{"start_line":332,"start_character":56,"end_line":332,"end_character":74},"updated":"2020-11-17 11:59:54.000000000","message":"nit: when minimum bandwidth QoS is configured.","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"  As we know, Neutron will create RP and related traits when bandwidth QoS"},{"line_number":333,"context_line":"  configured. We propose that Neutron could always report RP and physnet traits"},{"line_number":334,"context_line":"  all the time, no matter the bandwidth qos configured or not. In this way,"},{"line_number":335,"context_line":"  Cyborg will just find the RP created by Neutron by using some name"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_c2af7c29","line":332,"range":{"start_line":332,"start_character":56,"end_line":332,"end_character":74},"in_reply_to":"1f621f24_bb70b973","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e250fd24585cb23f338e705ffcf4469968a45cc","unresolved":false,"context_lines":[{"line_number":377,"context_line":"  the port is bound with one instance. Users can only change this attribute"},{"line_number":378,"context_line":"  when the port is unbound."},{"line_number":379,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":380,"context_line":"* Change Nova APIs for more operation supports if needed. We plan to support"},{"line_number":381,"context_line":"  create/delete, reboot, pause/resume, shelve/unshelve operations for a VM"},{"line_number":382,"context_line":"  having \u0027port_backend\u0027 specified port."},{"line_number":383,"context_line":"* Modify SRIOV interface attach/detach API, Cyborg\u0027s bind/unbind API should"},{"line_number":384,"context_line":"  be invoked in this API to claim/release the acceleration resources."},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_3b3309ad","line":382,"range":{"start_line":380,"start_character":0,"end_line":382,"end_character":39},"updated":"2020-11-17 11:59:54.000000000","message":"Please state that the rest of the lifecycle operations will be rejected now with HTTP 403","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"cc092a72ad4f5e0b5cb9bc93462376310a9bf3d6","unresolved":false,"context_lines":[{"line_number":377,"context_line":"  the port is bound with one instance. Users can only change this attribute"},{"line_number":378,"context_line":"  when the port is unbound."},{"line_number":379,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":380,"context_line":"* Change Nova APIs for more operation supports if needed. We plan to support"},{"line_number":381,"context_line":"  create/delete, reboot, pause/resume, shelve/unshelve operations for a VM"},{"line_number":382,"context_line":"  having \u0027port_backend\u0027 specified port."},{"line_number":383,"context_line":"* Modify SRIOV interface attach/detach API, Cyborg\u0027s bind/unbind API should"},{"line_number":384,"context_line":"  be invoked in this API to claim/release the acceleration resources."},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_82b6248a","line":382,"range":{"start_line":380,"start_character":0,"end_line":382,"end_character":39},"in_reply_to":"1f621f24_3b3309ad","updated":"2020-11-18 07:18:20.000000000","message":"Done","commit_id":"d69a3bc88a8f50ad929a1fc0dec0e7eb104cef1d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"* Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"  sriov nic resource."},{"line_number":36,"context_line":"* Users want to dynamically load a functionality on a nic on the fly and boot"},{"line_number":37,"context_line":"  the VM associated with this nic, to accelerate the specified workload."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"e4c7eb2d_1d9b0d6f","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":21},"updated":"2020-11-24 12:37:45.000000000","message":"they can already do this.\n\nyou are making this statement to generic again.\n\nbooting a vm with a port assocated with a sriov nic can be done by create a port with vnic_type\u003ddriect.\n\n\n\" Users want to boot up a VM with a specific port which is associated with a\n  smart-nic resource.\"","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"* Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"  sriov nic resource."},{"line_number":36,"context_line":"* Users want to dynamically load a functionality on a nic on the fly and boot"},{"line_number":37,"context_line":"  the VM associated with this nic, to accelerate the specified workload."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"384eebc0_ca910efe","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":21},"in_reply_to":"e4c7eb2d_1d9b0d6f","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"* Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"  sriov nic resource."},{"line_number":36,"context_line":"* Users want to dynamically load a functionality on a nic on the fly and boot"},{"line_number":37,"context_line":"  the VM associated with this nic, to accelerate the specified workload."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"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":10,"id":"9fd8817d_547a3eff","line":37,"range":{"start_line":36,"start_character":1,"end_line":37,"end_character":1},"updated":"2020-11-24 12:37:45.000000000","message":"is dynmaic programming going to be supproted initally?\n\nfor fortvile ddp i understood the focus was going to be on staticly providioned hardware intially.\n\nthis statement is fine if you are actully going to implement this in this cycle otherwise\nit should be updated to.\n\nUsers want to boot vms that leverage pre-programmed functionality to offload there workload\nto a smart-nic.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"* Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"  sriov nic resource."},{"line_number":36,"context_line":"* Users want to dynamically load a functionality on a nic on the fly and boot"},{"line_number":37,"context_line":"  the VM associated with this nic, to accelerate the specified workload."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"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":10,"id":"ec35c45b_9f2ebc50","line":37,"range":{"start_line":36,"start_character":1,"end_line":37,"end_character":1},"in_reply_to":"9fd8817d_547a3eff","updated":"2020-11-26 09:24:47.000000000","message":"yes, at the first step, we start by supporting pre-programmed functionaliy. I will update this part.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Workflow"},{"line_number":46,"context_line":"--------"},{"line_number":47,"context_line":"This workflow describes the basic operation to boot a VM with pre-programmed"},{"line_number":48,"context_line":"nic."},{"line_number":49,"context_line":"The workflow can be divided into two parts:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"7feb9ced_d34c40ed","line":47,"range":{"start_line":47,"start_character":62,"end_line":47,"end_character":76},"updated":"2020-11-24 12:37:45.000000000","message":"this implise that you are enabling pre-programed device not programming them on the fly as the usecase suggests.\n\nthese two need to be made consistent","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Workflow"},{"line_number":46,"context_line":"--------"},{"line_number":47,"context_line":"This workflow describes the basic operation to boot a VM with pre-programmed"},{"line_number":48,"context_line":"nic."},{"line_number":49,"context_line":"The workflow can be divided into two parts:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"15010b86_a168c0d5","line":47,"range":{"start_line":47,"start_character":62,"end_line":47,"end_character":76},"in_reply_to":"7feb9ced_d34c40ed","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f2ee09a80649997de688d892903d019cf28369aa","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Workflow"},{"line_number":46,"context_line":"--------"},{"line_number":47,"context_line":"This workflow describes the basic operation to boot a VM with pre-programmed"},{"line_number":48,"context_line":"nic."},{"line_number":49,"context_line":"The workflow can be divided into two parts:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bdd7e0af_be993132","line":47,"range":{"start_line":47,"start_character":62,"end_line":47,"end_character":76},"in_reply_to":"7feb9ced_d34c40ed","updated":"2020-12-02 06:22:08.000000000","message":"Whether it is pre-programmed or dynamic programmed, I thought it will be totally hidden by cyborg? Maybe we shouldn\u0027t mention that. Just talk about the cyborg sriov support in this spec.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ba80fa4815a3c34dc472374bf23ca85c893a6df1","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Workflow"},{"line_number":46,"context_line":"--------"},{"line_number":47,"context_line":"This workflow describes the basic operation to boot a VM with pre-programmed"},{"line_number":48,"context_line":"nic."},{"line_number":49,"context_line":"The workflow can be divided into two parts:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5e66bd92_316a1225","line":47,"range":{"start_line":47,"start_character":62,"end_line":47,"end_character":76},"in_reply_to":"bdd7e0af_be993132","updated":"2020-12-02 13:26:37.000000000","message":"it wont be hidden to the admin it will change the content of the device profile.\n\nfor pre programed device the device profile will contain trait that describe the programed function \nfor dynamically programed devices the device profile will use traits to descirbe the requiremetns of the device and reference a bit stream to be programed.\n\nso from an admins point of view they are  complete different device profiles.\na tenant wont nessisarly be able to tell the difference.\n\nsince they are just selcting a flavor\n\nit also change how the deivces are modeled implacement  so its also not transparent to the admin for that reason too.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":54,"context_line":"Device discovery"},{"line_number":55,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":56,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":57,"context_line":"get the nic as a resource. We will explain this part in detail in Cyborg"},{"line_number":58,"context_line":"spec, please refer to https://review.opendev.org/#/c/759545/."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"39a61f1d_62b3b0c6","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":25},"updated":"2020-11-24 12:37:45.000000000","message":"discover the smart-nic resources.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Device discovery"},{"line_number":55,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":56,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":57,"context_line":"get the nic as a resource. We will explain this part in detail in Cyborg"},{"line_number":58,"context_line":"spec, please refer to https://review.opendev.org/#/c/759545/."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fabdeeff_bf84d01e","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":25},"in_reply_to":"39a61f1d_62b3b0c6","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":67,"context_line":"Admin should be aware of mapping relations between the nic and"},{"line_number":68,"context_line":"physical network. So we should let the admin manage this."},{"line_number":69,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":70,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":71,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":72,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":73,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d95b5268_f1670e90","line":70,"range":{"start_line":70,"start_character":61,"end_line":70,"end_character":66},"updated":"2020-11-24 12:37:45.000000000","message":"and the","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Admin should be aware of mapping relations between the nic and"},{"line_number":68,"context_line":"physical network. So we should let the admin manage this."},{"line_number":69,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":70,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":71,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":72,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":73,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"583510a4_194e74fd","line":70,"range":{"start_line":70,"start_character":61,"end_line":70,"end_character":66},"in_reply_to":"d95b5268_f1670e90","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":69,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":70,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":71,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":72,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":73,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"},{"line_number":74,"context_line":"Neutron\u0027s config file consistent, otherwise, there will be a configuration"},{"line_number":75,"context_line":"conflict."}],"source_content_type":"text/x-rst","patch_set":10,"id":"0637d6c7_a64042e6","line":72,"range":{"start_line":72,"start_character":24,"end_line":72,"end_character":29},"updated":"2020-11-24 12:37:45.000000000","message":"i would suggest using the provide.yaml file format.\n\nwith a slight tweak to encode the owner of resouces (nova or cyborg) both service could eventually use the same file but initally i would suggest considering using provide.yaml as the file format.\n\nas a short term solutoin which si also valid a simple driver level config option would be fine in the existign cyborg config but evenutally i think we shoudl be moving nova, neutron cyborg and any other compute node service to sharing the same provide.yaml file as the long term solution.\n\nfor the initall enabliment fully implemening supprot for provider.yaml may be more then you want/need so i wont block on this point this is just something to think about.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":69,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":70,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":71,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":72,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":73,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"},{"line_number":74,"context_line":"Neutron\u0027s config file consistent, otherwise, there will be a configuration"},{"line_number":75,"context_line":"conflict."}],"source_content_type":"text/x-rst","patch_set":10,"id":"395f269a_d6e4bc92","line":72,"range":{"start_line":72,"start_character":24,"end_line":72,"end_character":29},"in_reply_to":"0637d6c7_a64042e6","updated":"2020-11-26 09:24:47.000000000","message":"\u003e as a short term solutoin which si also valid a simple driver level config option would be fine in the existign cyborg config but evenutally i think we shoudl be moving nova, neutron cyborg and any other compute node service to sharing the same provide.yaml file as the long term solution.\n\u003e \n\n+1, for long term perspective, we\u0027d better keep these config file in the same format. Currently, we just let cyborg maintain its proper config with device level config, afaik, this config is also used by vgpu support in cyborg.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":81,"context_line":"in the community, we propose to not support co-existence with Neutron\u0027s"},{"line_number":82,"context_line":"Guaranteed Minimum Bandwidth Feature for the same physical device at the"},{"line_number":83,"context_line":"first step, which means that one physical device can only be configured by"},{"line_number":84,"context_line":"Cyborg or by Neutron\u0027s QoS feature if it is enabled."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The following flowchart illustrates the workflow during device discovery and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"866b2fe1_892e8816","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":50},"updated":"2020-11-24 12:37:45.000000000","message":"the medium term solution here is to have cyborg report the bandwith inventories for devices it manages but have the sriov nic agent still configre qos on the vfs. other workflows are also possibel where the cyborg driver that manages the nice would also apply qos but both aproches are out of scope of this initial support for smartnics.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":81,"context_line":"in the community, we propose to not support co-existence with Neutron\u0027s"},{"line_number":82,"context_line":"Guaranteed Minimum Bandwidth Feature for the same physical device at the"},{"line_number":83,"context_line":"first step, which means that one physical device can only be configured by"},{"line_number":84,"context_line":"Cyborg or by Neutron\u0027s QoS feature if it is enabled."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The following flowchart illustrates the workflow during device discovery and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"51a2afe8_18dc8510","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":50},"in_reply_to":"866b2fe1_892e8816","updated":"2020-11-26 09:24:47.000000000","message":"the rp reported by neutron and cyborg is in different structure, the one reported by neutron is under neutron agent rp as the parent rp, the one reported by cyborg is directly under compute node rp as the parent. To solve this co-existence, we also need to figure out how to keep this structure consistent. please refer to the alternative \u0027Let Neutron create RP and physnet trait\u0027. As the first phase, we could just not support this co-existence and add this to the next step.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                           |             |               |                 |"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"1. Firstly, Neutron needs to add a new port extension \u0027port_backend’ to"},{"line_number":168,"context_line":"store the device profile created by admin. Related API needs to be added"},{"line_number":169,"context_line":"as well to operate this. And also, Neutron need to add a new vnic-type"},{"line_number":170,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5b584433_e603e67e","line":167,"range":{"start_line":167,"start_character":55,"end_line":167,"end_character":67},"updated":"2020-11-24 12:37:45.000000000","message":"device-profile \n\nport backend is to generic and its confusing in a neutron context where port backends normally are things like ovs or linux bridge and a qemu context where tis vfio, vdpa or vhost-user so we should not use that term","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                           |             |               |                 |"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"1. Firstly, Neutron needs to add a new port extension \u0027port_backend’ to"},{"line_number":168,"context_line":"store the device profile created by admin. Related API needs to be added"},{"line_number":169,"context_line":"as well to operate this. And also, Neutron need to add a new vnic-type"},{"line_number":170,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."}],"source_content_type":"text/x-rst","patch_set":10,"id":"6fc27905_b0f02d24","line":167,"range":{"start_line":167,"start_character":55,"end_line":167,"end_character":67},"in_reply_to":"5b584433_e603e67e","updated":"2020-11-26 09:24:47.000000000","message":"+1","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":169,"context_line":"as well to operate this. And also, Neutron need to add a new vnic-type"},{"line_number":170,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."},{"line_number":171,"context_line":"For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"24667117_9fbd8d33","line":172,"range":{"start_line":172,"start_character":55,"end_line":172,"end_character":67},"updated":"2020-11-24 12:37:45.000000000","message":"device-profile","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":169,"context_line":"as well to operate this. And also, Neutron need to add a new vnic-type"},{"line_number":170,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."},{"line_number":171,"context_line":"For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"56b899d2_a0c76f43","line":172,"range":{"start_line":172,"start_character":55,"end_line":172,"end_character":67},"in_reply_to":"24667117_9fbd8d33","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":171,"context_line":"For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d5bdea45_289703ea","line":174,"range":{"start_line":174,"start_character":14,"end_line":174,"end_character":42},"updated":"2020-11-24 12:37:45.000000000","message":"i think its imporant to highlight that nova will not validate that the device profile is a network device.\n\nit could be a gpu request.\n\nthe only thing blocking that form working is the resource group requests in placement.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312ac2dbb4e7109fbbde0d31e0dec7fbfd4adda0","unresolved":true,"context_lines":[{"line_number":171,"context_line":"For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"c9fa8978_305acf31","line":174,"range":{"start_line":174,"start_character":14,"end_line":174,"end_character":42},"in_reply_to":"76536db2_7ffcaa0e","updated":"2020-11-26 14:17:44.000000000","message":"documentation would be enough i think.\nif we were to do validation at port creation time then neutron would have to retrive the device profile form cyborg and at least for now i think we want to avoid neutron having to talk to cyborg directly.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":171,"context_line":"For example, we can create a port by: `openstack"},{"line_number":172,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":173,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":174,"context_line":"indicate to a networking device’s resource."},{"line_number":175,"context_line":"The request body is the following:"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"76536db2_7ffcaa0e","line":174,"range":{"start_line":174,"start_character":14,"end_line":174,"end_character":42},"in_reply_to":"d5bdea45_289703ea","updated":"2020-11-26 09:24:47.000000000","message":"Do you think we need to do some validation. If so, I prefer doing that during port creation.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"15f35b91435776c585e0247e96af642aa8cdaf57","unresolved":true,"context_lines":[{"line_number":181,"context_line":"            \"name\": \"sriov-port\","},{"line_number":182,"context_line":"            \"network_id\": \"a87cc70a-3e15-4acf-8205-9b711a3531b7\","},{"line_number":183,"context_line":"            \"vnic_type\":\"cyborg\","},{"line_number":184,"context_line":"            \"port_backend\": \"sriov_dp\" # new extension contains device profile"},{"line_number":185,"context_line":"        }"},{"line_number":186,"context_line":"    }"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"53400e42_8a73b61a","line":184,"updated":"2020-11-24 11:01:44.000000000","message":"We already have a \"profile\" blob (up to 4096 chars) in the port binding profile. But you are expecting to have this in the port definition, before binding the port. If that correct?\n\nAnother question is why is this \"port_backend\" parameter for? Is it a string, a dict?","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":181,"context_line":"            \"name\": \"sriov-port\","},{"line_number":182,"context_line":"            \"network_id\": \"a87cc70a-3e15-4acf-8205-9b711a3531b7\","},{"line_number":183,"context_line":"            \"vnic_type\":\"cyborg\","},{"line_number":184,"context_line":"            \"port_backend\": \"sriov_dp\" # new extension contains device profile"},{"line_number":185,"context_line":"        }"},{"line_number":186,"context_line":"    }"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"7445b243_cd94c056","line":184,"in_reply_to":"53400e42_8a73b61a","updated":"2020-11-24 12:37:45.000000000","message":"the profile blob is owned by nova  to provide 1 way infrom from nova to the network backen.\nso we should not use the binding:profile for cyborg or to provide any info form neutron to nova/cybrog.\n\nthe new neutron extension should be a separate filed on the port as we need this info independent on binding. if we were to reuse a dict form the port binding extion we would use the binding:details.\n\nwe also should move the trusted_vf stuff out of the binding:profile at some point into its own extention that has been a long standign todo but never been important enough to do.\nthat said i dont want to add more tech debth here so lets add a new top level atitbue.\n\nport_backend however is not a good name its two ambiguious i would assume that was somehting like ovs or linuxbridge.\n\nlets just call it device-profile as it is in the flavor.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":191,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"3. Nova interacts with Neutron to get port’s details, including the network"},{"line_number":194,"context_line":"this port is associated to, as well as the physical network this network"},{"line_number":195,"context_line":"belongs to."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"4. If the “port_backend” extension of sriov_port1 is not None, Nova will"},{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"}],"source_content_type":"text/x-rst","patch_set":10,"id":"b2f85dd6_402f5ce0","line":195,"range":{"start_line":194,"start_character":28,"end_line":195,"end_character":11},"updated":"2020-11-24 12:37:45.000000000","message":"it shoudl be noted that if the network is a vxlan network or other tunneled networks that it wont have a physnet. so we will have to support that.\n\nthe point i wanted to make is the physnet will be optional in some and may at some point be a list\nwhen nova eventually support the multi-providernet extension. currently we can express \"one of\" requirements to placment so this is out of scope until that can be adressed.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"2db963575f34c883df1084952ca02894848c91e0","unresolved":true,"context_lines":[{"line_number":191,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"3. Nova interacts with Neutron to get port’s details, including the network"},{"line_number":194,"context_line":"this port is associated to, as well as the physical network this network"},{"line_number":195,"context_line":"belongs to."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"4. If the “port_backend” extension of sriov_port1 is not None, Nova will"},{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fef176e6_f3d6802d","line":195,"range":{"start_line":194,"start_character":28,"end_line":195,"end_character":11},"in_reply_to":"b2f85dd6_402f5ce0","updated":"2020-11-27 09:37:34.000000000","message":"Yes, I agree with you. As we will create a new vnic type, we can check if it has the physnet according to the vnic type.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":194,"context_line":"this port is associated to, as well as the physical network this network"},{"line_number":195,"context_line":"belongs to."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"4. If the “port_backend” extension of sriov_port1 is not None, Nova will"},{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":199,"context_line":"created in this step."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf0a9e88_4216e9a1","line":197,"range":{"start_line":197,"start_character":11,"end_line":197,"end_character":23},"updated":"2020-11-24 12:37:45.000000000","message":"device_profile","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":194,"context_line":"this port is associated to, as well as the physical network this network"},{"line_number":195,"context_line":"belongs to."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"4. If the “port_backend” extension of sriov_port1 is not None, Nova will"},{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":199,"context_line":"created in this step."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bac35961_adae4e64","line":197,"range":{"start_line":197,"start_character":11,"end_line":197,"end_character":23},"in_reply_to":"bf0a9e88_4216e9a1","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ed2e6c4deb9406844d08f3364509ffb70bdb06f3","unresolved":true,"context_lines":[{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":199,"context_line":"created in this step."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"5. Nova needs to merge physical network trait and the resource class/trait"},{"line_number":202,"context_line":"obtained from Cyborg’s device profile into a one single request group. And this"},{"line_number":203,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":204,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"f6d449f7_67b3ea66","line":202,"range":{"start_line":201,"start_character":3,"end_line":202,"end_character":37},"updated":"2020-11-24 07:55:45.000000000","message":"The Nova\u0027s PCI passthrough implement will fetch the physical network from the neutron port, then looking for PCI device which in that physical network. I thought this proposal will follow the same pattern. So if there say the physical network fetch from cyborg\u0027s device profile, that is confused. If the physical network in the cyborg\u0027s device profile, the downside is the user create the neutron port which need to match the device profile\u0027s physical network. Also, user have to create different device profile for different physical network.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1bdb4fc3474c2bf84fb1095c4599acc45e6abd28","unresolved":true,"context_lines":[{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":199,"context_line":"created in this step."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"5. Nova needs to merge physical network trait and the resource class/trait"},{"line_number":202,"context_line":"obtained from Cyborg’s device profile into a one single request group. And this"},{"line_number":203,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":204,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9600dd3b_2fb3f501","line":202,"range":{"start_line":201,"start_character":3,"end_line":202,"end_character":37},"in_reply_to":"26bc0a0d_c12ad23a","updated":"2020-11-24 11:22:46.000000000","message":"yes we agreed that the device profile would not be part of the device profile\nin the cyborg config the ports will be tagged with a physnet and the physnet is an atribute of the neutron port which will be passed to placement. cyborg will need to then use the allocation summaryies when binding the the arqs to ensure it select a pf/vf form the correct device on the approicate physnet.\n\nideally cyborg will report the physnet as a custom trait on the provide in the same format used by neutron.\neach PF will need to be its own RP with the phsynet trait applied. if that is done cyborg just need to maintain the mapping between the RP uuid and the host device.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"fc014c10b1eeeaef5a6da9a1cc6203980d65cdab","unresolved":true,"context_lines":[{"line_number":198,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":199,"context_line":"created in this step."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"5. Nova needs to merge physical network trait and the resource class/trait"},{"line_number":202,"context_line":"obtained from Cyborg’s device profile into a one single request group. And this"},{"line_number":203,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":204,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"26bc0a0d_c12ad23a","line":202,"range":{"start_line":201,"start_character":3,"end_line":202,"end_character":37},"in_reply_to":"f6d449f7_67b3ea66","updated":"2020-11-24 10:45:07.000000000","message":"Agree, nova need to get physnet from neutron instead of getting it from device profile. I will update this part.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":234,"context_line":"            \"network_id\": \"a87cc70a-3e15-4acf-8205-9b711a3531b7\","},{"line_number":235,"context_line":"            \"qos_network_policy_id\": \"174dd0c1-a4eb-49d4-a807-ae80246d82f4\","},{"line_number":236,"context_line":"            \"qos_policy_id\": \"29d5e02e-d5ab-4929-bee4-4a9fc12e22ae\","},{"line_number":237,"context_line":"            \"port_backend\":\"sriov-dp1\" # new extension"},{"line_number":238,"context_line":"            ..."},{"line_number":239,"context_line":"        }"},{"line_number":240,"context_line":"       }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5b5814c9_5c84c4a2","line":237,"range":{"start_line":237,"start_character":13,"end_line":237,"end_character":25},"updated":"2020-11-24 12:37:45.000000000","message":"device_profile\n\nby the way it should be an error on the neutron api to update the device_profile while the port is associated with a vm or at least while its bound to a host.\n\nit should be ok to update it while a vm is shelved technically so we might want to tie that check to the binding:host-id\ninstead of device_id/device_owner fields but its not a valid operation to modify the device-profile once the port is attached to the vm on a specific host.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":234,"context_line":"            \"network_id\": \"a87cc70a-3e15-4acf-8205-9b711a3531b7\","},{"line_number":235,"context_line":"            \"qos_network_policy_id\": \"174dd0c1-a4eb-49d4-a807-ae80246d82f4\","},{"line_number":236,"context_line":"            \"qos_policy_id\": \"29d5e02e-d5ab-4929-bee4-4a9fc12e22ae\","},{"line_number":237,"context_line":"            \"port_backend\":\"sriov-dp1\" # new extension"},{"line_number":238,"context_line":"            ..."},{"line_number":239,"context_line":"        }"},{"line_number":240,"context_line":"       }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ec8ca1c3_23d05269","line":237,"range":{"start_line":237,"start_character":13,"end_line":237,"end_character":25},"in_reply_to":"5b5814c9_5c84c4a2","updated":"2020-11-26 09:24:47.000000000","message":"yes, please see L388 where I mentioned this. I will add more detals such as binding:host-id checking.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":254,"context_line":"In Neutron side, a new port extension need to be added. The proposed change"},{"line_number":255,"context_line":"includes."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* Implement port_backend extension for neutron port resource. This requires"},{"line_number":258,"context_line":"  ML2 plugins changes."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"* From DB side, we need to add a new table to store the mapping relation"}],"source_content_type":"text/x-rst","patch_set":10,"id":"c55e23fa_9c6091b8","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":24},"updated":"2020-11-24 12:37:45.000000000","message":"device_profile","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":254,"context_line":"In Neutron side, a new port extension need to be added. The proposed change"},{"line_number":255,"context_line":"includes."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* Implement port_backend extension for neutron port resource. This requires"},{"line_number":258,"context_line":"  ML2 plugins changes."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"* From DB side, we need to add a new table to store the mapping relation"}],"source_content_type":"text/x-rst","patch_set":10,"id":"a3b4b946_0dc3bcac","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":24},"in_reply_to":"c55e23fa_9c6091b8","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":261,"context_line":"  between port and port_backend::"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":264,"context_line":"    | port_uuid                             | port_bakend            |"},{"line_number":265,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":266,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":267,"context_line":"    +---------------------------------------+------------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7ed0a829_15f5305e","line":264,"range":{"start_line":264,"start_character":46,"end_line":264,"end_character":57},"updated":"2020-11-24 12:37:45.000000000","message":"device_profile","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":261,"context_line":"  between port and port_backend::"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":264,"context_line":"    | port_uuid                             | port_bakend            |"},{"line_number":265,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":266,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":267,"context_line":"    +---------------------------------------+------------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"faa3e5cc_750c58db","line":264,"range":{"start_line":264,"start_character":46,"end_line":264,"end_character":57},"in_reply_to":"7ed0a829_15f5305e","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":278,"context_line":"Nova"},{"line_number":279,"context_line":"----"},{"line_number":280,"context_line":"* Nova API: Nova calls Neutron API to get port details, the new extension"},{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"}],"source_content_type":"text/x-rst","patch_set":10,"id":"caf862b1_7887ce0e","line":281,"range":{"start_line":281,"start_character":3,"end_line":281,"end_character":15},"updated":"2020-11-24 12:37:45.000000000","message":"device_profile","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":278,"context_line":"Nova"},{"line_number":279,"context_line":"----"},{"line_number":280,"context_line":"* Nova API: Nova calls Neutron API to get port details, the new extension"},{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"}],"source_content_type":"text/x-rst","patch_set":10,"id":"4b9ad3b9_00866a12","line":281,"range":{"start_line":281,"start_character":3,"end_line":281,"end_character":15},"in_reply_to":"caf862b1_7887ce0e","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":279,"context_line":"----"},{"line_number":280,"context_line":"* Nova API: Nova calls Neutron API to get port details, the new extension"},{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":285,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"}],"source_content_type":"text/x-rst","patch_set":10,"id":"c427f594_c5149ef4","line":282,"range":{"start_line":282,"start_character":15,"end_line":282,"end_character":27},"updated":"2020-11-24 12:37:45.000000000","message":"device_profile","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":279,"context_line":"----"},{"line_number":280,"context_line":"* Nova API: Nova calls Neutron API to get port details, the new extension"},{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":285,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"}],"source_content_type":"text/x-rst","patch_set":10,"id":"4184bcbd_28caad11","line":282,"range":{"start_line":282,"start_character":35,"end_line":282,"end_character":39},"updated":"2020-11-24 12:37:45.000000000","message":"neutron could also not add the device_profile to the port if its not set\nwe dont need to set the value directly to none that just wasted bytes to send in the port show","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"2db963575f34c883df1084952ca02894848c91e0","unresolved":true,"context_lines":[{"line_number":279,"context_line":"----"},{"line_number":280,"context_line":"* Nova API: Nova calls Neutron API to get port details, the new extension"},{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":285,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"}],"source_content_type":"text/x-rst","patch_set":10,"id":"74c1be43_39df19fc","line":282,"range":{"start_line":282,"start_character":35,"end_line":282,"end_character":39},"in_reply_to":"4184bcbd_28caad11","updated":"2020-11-27 09:37:34.000000000","message":"Because of the new vnic type, we will check the vnic type and get device profile name from port and then call Cyborg API. This check will be updated.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":285,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"},{"line_number":286,"context_line":"  resource and traits to this request group, if not, we should generate a"},{"line_number":287,"context_line":"  new resource group. Nova should have one single request_group to schedule"}],"source_content_type":"text/x-rst","patch_set":10,"id":"a49203e4_dfe1385e","line":284,"range":{"start_line":284,"start_character":12,"end_line":284,"end_character":20},"updated":"2020-11-24 12:37:45.000000000","message":"Once nova gets","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":281,"context_line":"  \"port_backend\" should be returned as the return value."},{"line_number":282,"context_line":"* Nova API: If port_backend is not None, Nova should call Cyborg API to get"},{"line_number":283,"context_line":"  the details of device profile indicated by this port_backend."},{"line_number":284,"context_line":"* Nova API: Once get the device profile\u0027s details, Nova should check if a"},{"line_number":285,"context_line":"  RequestGroup is created with port_resource_request, if so, we should add"},{"line_number":286,"context_line":"  resource and traits to this request group, if not, we should generate a"},{"line_number":287,"context_line":"  new resource group. Nova should have one single request_group to schedule"}],"source_content_type":"text/x-rst","patch_set":10,"id":"febe5efd_d76ec546","line":284,"range":{"start_line":284,"start_character":12,"end_line":284,"end_character":20},"in_reply_to":"a49203e4_dfe1385e","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":292,"context_line":"* Nova Compute: Nova should update port binding profile with sriov nic\u0027s info"},{"line_number":293,"context_line":"  (such as pci adderess etc), so that libvirt driver can generete related xml"},{"line_number":294,"context_line":"  section."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Cyborg"},{"line_number":297,"context_line":"------"},{"line_number":298,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"f767c2ac_9e389019","line":295,"updated":"2020-11-24 12:37:45.000000000","message":"yes although just so you know we have some bugs in that code.\n\nnot the xml generate but mainting the state in the binding profile.\nits not updated at the correct time in some move operations such as cold migrate and unshelve.\n\nthose are existing nova bugs just wanted to let you know.\nwe should fix those at some point.\n\nspeaking of which we will need to know from the device profile or otherwise if the selected device is a physical funciton or a virtual function.\n\nnova/libvirt cannot set the mac adress for phyical functions and we need to instead set the mac of the neutron port to match the phsyical mac.\n\nif we can restict this feature to only virtual functions then we can skip this requirement for now and adress if/when we add support for PFs\n\nlibvirt needs to generate different xml in each case.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"2db963575f34c883df1084952ca02894848c91e0","unresolved":true,"context_lines":[{"line_number":292,"context_line":"* Nova Compute: Nova should update port binding profile with sriov nic\u0027s info"},{"line_number":293,"context_line":"  (such as pci adderess etc), so that libvirt driver can generete related xml"},{"line_number":294,"context_line":"  section."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Cyborg"},{"line_number":297,"context_line":"------"},{"line_number":298,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"42383700_d340c525","line":295,"in_reply_to":"f767c2ac_9e389019","updated":"2020-11-27 09:37:34.000000000","message":"\u003e yes although just so you know we have some bugs in that code.\n\u003e \n\u003e not the xml generate but mainting the state in the binding profile.\n\u003e its not updated at the correct time in some move operations such as cold migrate and unshelve.\n\u003e \n\u003e those are existing nova bugs just wanted to let you know.\n\u003e we should fix those at some point.\n\ngot it, thanks for your information.\n\n\u003e speaking of which we will need to know from the device profile or otherwise if the selected device is a physical funciton or a virtual function.\n\u003e \n\u003e nova/libvirt cannot set the mac adress for phyical functions and we need to instead set the mac of the neutron port to match the phsyical mac.\n\u003e \n\u003e if we can restict this feature to only virtual functions then we can skip this requirement for now and adress if/when we add support for PFs\n\u003e \n\u003e libvirt needs to generate different xml in each case.\n\nAt the first step, we only support vf attachment. the pf attachment will the enhancement in the future.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"  .. code-block:: RST"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    [dev-name]"},{"line_number":310,"context_line":"    pci_address\u003d0000:18:00.0"},{"line_number":311,"context_line":"    function_name\u003dGTPv1"},{"line_number":312,"context_line":"    physnet\u003dphysnet1"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3924b9bc_942eb0d3","line":312,"range":{"start_line":309,"start_character":3,"end_line":312,"end_character":20},"updated":"2020-11-24 12:37:45.000000000","message":"ya this will work\n\ni guess function_name is just converted to a trait?","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"  .. code-block:: RST"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    [dev-name]"},{"line_number":310,"context_line":"    pci_address\u003d0000:18:00.0"},{"line_number":311,"context_line":"    function_name\u003dGTPv1"},{"line_number":312,"context_line":"    physnet\u003dphysnet1"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":10,"id":"92f096d1_a196df2c","line":312,"range":{"start_line":309,"start_character":3,"end_line":312,"end_character":20},"in_reply_to":"3924b9bc_942eb0d3","updated":"2020-11-26 09:24:47.000000000","message":"yes, as well as the physnet traits.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"15f35b91435776c585e0247e96af642aa8cdaf57","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  by Placement API, and Neutron also need to find the right physnet tratis"},{"line_number":330,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  As we know, Neutron will create RP and related traits when minimum bandwidth"},{"line_number":335,"context_line":"  QoS is configured. We propose that Neutron could always report RP and physnet"}],"source_content_type":"text/x-rst","patch_set":10,"id":"de23c389_9599ba69","line":332,"range":{"start_line":332,"start_character":2,"end_line":332,"end_character":42},"updated":"2020-11-24 11:01:44.000000000","message":"Sorry to be so insistent with the \"port_backend\" topic. Should this parameter (if this parameter is a string) be a trait to define the RP?","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"312ac2dbb4e7109fbbde0d31e0dec7fbfd4adda0","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  by Placement API, and Neutron also need to find the right physnet tratis"},{"line_number":330,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  As we know, Neutron will create RP and related traits when minimum bandwidth"},{"line_number":335,"context_line":"  QoS is configured. We propose that Neutron could always report RP and physnet"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d11662bb_1ec1932b","line":332,"range":{"start_line":332,"start_character":2,"end_line":332,"end_character":42},"in_reply_to":"00676650_d1143918","updated":"2020-11-26 14:17:44.000000000","message":"that si what the device profile is but that is not what will be set on the neutron port.\nthe neutron port will only have the name of the device profile and nova will lookup the contentc of the profile form cyborg.\n\nso in the neutron extention its jsut a string.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  by Placement API, and Neutron also need to find the right physnet tratis"},{"line_number":330,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  As we know, Neutron will create RP and related traits when minimum bandwidth"},{"line_number":335,"context_line":"  QoS is configured. We propose that Neutron could always report RP and physnet"}],"source_content_type":"text/x-rst","patch_set":10,"id":"00676650_d1143918","line":332,"range":{"start_line":332,"start_character":2,"end_line":332,"end_character":42},"in_reply_to":"78901908_54059865","updated":"2020-11-26 09:24:47.000000000","message":"it is a dict that contains a description of smartnic, including resource class and traits needed for scheduling. please see an example here: https://specs.openstack.org/openstack/cyborg-specs/specs/train/implemented/device-profiles.html#overview","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"2db963575f34c883df1084952ca02894848c91e0","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  by Placement API, and Neutron also need to find the right physnet tratis"},{"line_number":330,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  As we know, Neutron will create RP and related traits when minimum bandwidth"},{"line_number":335,"context_line":"  QoS is configured. We propose that Neutron could always report RP and physnet"}],"source_content_type":"text/x-rst","patch_set":10,"id":"863593d4_13dbcb7a","line":332,"range":{"start_line":332,"start_character":2,"end_line":332,"end_character":42},"in_reply_to":"d11662bb_1ec1932b","updated":"2020-11-27 09:37:34.000000000","message":"yes, the port extension is a string -\u003e device profile\u0027s name","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  by Placement API, and Neutron also need to find the right physnet tratis"},{"line_number":330,"context_line":"  according to nic\u0027s resource, which requires more changes in Neutron."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"* Let Neutron create RP and physnet trait."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  As we know, Neutron will create RP and related traits when minimum bandwidth"},{"line_number":335,"context_line":"  QoS is configured. We propose that Neutron could always report RP and physnet"}],"source_content_type":"text/x-rst","patch_set":10,"id":"78901908_54059865","line":332,"range":{"start_line":332,"start_character":2,"end_line":332,"end_character":42},"in_reply_to":"de23c389_9599ba69","updated":"2020-11-24 12:37:45.000000000","message":"its a string filed like the sriov numa affinity extention.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"15f35b91435776c585e0247e96af642aa8cdaf57","unresolved":true,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Data model impact"},{"line_number":371,"context_line":"-----------------"},{"line_number":372,"context_line":"New table `port_backend` needs to be added in Neutron DB."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5e1b0951_30bd11cf","line":372,"range":{"start_line":372,"start_character":0,"end_line":372,"end_character":57},"updated":"2020-11-24 11:01:44.000000000","message":"What is \"port_backend\" exactly?","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Data model impact"},{"line_number":371,"context_line":"-----------------"},{"line_number":372,"context_line":"New table `port_backend` needs to be added in Neutron DB."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"8e2269f7_5794e3ba","line":372,"range":{"start_line":372,"start_character":0,"end_line":372,"end_character":57},"in_reply_to":"5e1b0951_30bd11cf","updated":"2020-11-24 12:37:45.000000000","message":"it is the name of a cyborg device profile which nova will look up to find the resouce requests and traits.\n\nand just to reinforce the point it should just be called device-profile not port_backend.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Data model impact"},{"line_number":371,"context_line":"-----------------"},{"line_number":372,"context_line":"New table `port_backend` needs to be added in Neutron DB."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"197482cd_cf462d58","line":372,"range":{"start_line":372,"start_character":0,"end_line":372,"end_character":57},"in_reply_to":"8e2269f7_5794e3ba","updated":"2020-11-26 09:24:47.000000000","message":"I will update the spec to use device-profile as the name.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0d804e8c47b9f2aa0265878d7547ee8eb003d2b8","unresolved":true,"context_lines":[{"line_number":380,"context_line":"  when the port is unbound."},{"line_number":381,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":382,"context_line":"* Change Nova APIs for more operation supports if needed. We plan to support"},{"line_number":383,"context_line":"  create/delete, reboot, pause/resume, shelve/unshelve operations for a VM"},{"line_number":384,"context_line":"  having \u0027port_backend\u0027 specified port. The rest of the lifecycle operations"},{"line_number":385,"context_line":"  will be rejected now with HTTP 403 Error code."},{"line_number":386,"context_line":"* Modify SRIOV interface attach/detach API, Cyborg\u0027s bind/unbind API should"}],"source_content_type":"text/x-rst","patch_set":10,"id":"4da0304e_d6165ba6","line":383,"updated":"2020-11-24 06:53:08.000000000","message":"start/stop, rebuild can be supported naturally?","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"2db963575f34c883df1084952ca02894848c91e0","unresolved":true,"context_lines":[{"line_number":380,"context_line":"  when the port is unbound."},{"line_number":381,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":382,"context_line":"* Change Nova APIs for more operation supports if needed. We plan to support"},{"line_number":383,"context_line":"  create/delete, reboot, pause/resume, shelve/unshelve operations for a VM"},{"line_number":384,"context_line":"  having \u0027port_backend\u0027 specified port. The rest of the lifecycle operations"},{"line_number":385,"context_line":"  will be rejected now with HTTP 403 Error code."},{"line_number":386,"context_line":"* Modify SRIOV interface attach/detach API, Cyborg\u0027s bind/unbind API should"}],"source_content_type":"text/x-rst","patch_set":10,"id":"a6ce2c01_9a8a2fdc","line":383,"in_reply_to":"381626d8_b293499b","updated":"2020-11-27 09:37:34.000000000","message":"We have the futher plan to support migration operation. But as for the initial version, this is out of scope. I will point this out in next commit.","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"fc014c10b1eeeaef5a6da9a1cc6203980d65cdab","unresolved":true,"context_lines":[{"line_number":380,"context_line":"  when the port is unbound."},{"line_number":381,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":382,"context_line":"* Change Nova APIs for more operation supports if needed. We plan to support"},{"line_number":383,"context_line":"  create/delete, reboot, pause/resume, shelve/unshelve operations for a VM"},{"line_number":384,"context_line":"  having \u0027port_backend\u0027 specified port. The rest of the lifecycle operations"},{"line_number":385,"context_line":"  will be rejected now with HTTP 403 Error code."},{"line_number":386,"context_line":"* Modify SRIOV interface attach/detach API, Cyborg\u0027s bind/unbind API should"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ab972a47_49c232c0","line":383,"in_reply_to":"4da0304e_d6165ba6","updated":"2020-11-24 10:45:07.000000000","message":"+1","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ff19c1af22064b6108be5b05bd55a378526290d","unresolved":true,"context_lines":[{"line_number":380,"context_line":"  when the port is unbound."},{"line_number":381,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":382,"context_line":"* Change Nova APIs for more operation supports if needed. We plan to support"},{"line_number":383,"context_line":"  create/delete, reboot, pause/resume, shelve/unshelve operations for a VM"},{"line_number":384,"context_line":"  having \u0027port_backend\u0027 specified port. The rest of the lifecycle operations"},{"line_number":385,"context_line":"  will be rejected now with HTTP 403 Error code."},{"line_number":386,"context_line":"* Modify SRIOV interface attach/detach API, Cyborg\u0027s bind/unbind API should"}],"source_content_type":"text/x-rst","patch_set":10,"id":"381626d8_b293499b","line":383,"in_reply_to":"ab972a47_49c232c0","updated":"2020-11-24 12:37:45.000000000","message":"nit: its pause/unpause not pause resume  resume is the counterpart to suspend not pause.\n\nstart/stop and rebuild/evacuate should be supproted in the inital version\n\ni see that you do not plan to support cold migrate/resize or live migration?\nwe will need to block those operation in the api if not supported.\ni dont see why they could not be supported so i guess this is just cutting scope.\n\nyou also dont have suspend resume listed","commit_id":"1d18eb907bef22f099a03c6352e63ed784b6cb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b6e6b6b527f395c520cef3b4a60a91a55a5610f3","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"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"},{"line_number":8,"context_line":"Smart-Nic Management Overall Design"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/sriov-smartnic-support"}],"source_content_type":"text/x-rst","patch_set":11,"id":"c88bfbef_8e73db0f","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":35},"updated":"2020-11-25 14:36:31.000000000","message":"note im maingaining my -1 since my comments on the previous version have still not been adressed are are still valid for this version","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":"* Users want to boot up a VM with a specific port which is associated with a"},{"line_number":35,"context_line":"  sriov nic resource."},{"line_number":36,"context_line":"* Users want to dynamically load a functionality on a nic on the fly and boot"},{"line_number":37,"context_line":"  the VM associated with this nic, to accelerate the specified workload."}],"source_content_type":"text/x-rst","patch_set":11,"id":"64326db4_d48b4b25","line":34,"range":{"start_line":34,"start_character":75,"end_line":34,"end_character":76},"updated":"2020-11-24 17:37:55.000000000","message":"nit: a -\u003e an","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":35,"context_line":"  sriov nic resource."},{"line_number":36,"context_line":"* Users want to dynamically load a functionality on a nic on the fly and boot"},{"line_number":37,"context_line":"  the VM associated with this nic, to accelerate the specified workload."},{"line_number":38,"context_line":"* Users want to attach/detach a SRIOV nic maneged by Cyborg to a runing VM.(out"},{"line_number":39,"context_line":"  of scope)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7c467386_b8a0b7c1","line":38,"range":{"start_line":38,"start_character":30,"end_line":38,"end_character":31},"updated":"2020-11-24 17:37:55.000000000","message":"ditto","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":70,"context_line":"Admin should be aware of mapping relations between the nic and"},{"line_number":71,"context_line":"physical network. So we should let the admin manage this."},{"line_number":72,"context_line":"Cyborg should maintain a configuration file (Please refer to 1 in the"},{"line_number":73,"context_line":"flowchart) that contains the device name aligned with Neutron, the"},{"line_number":74,"context_line":"physical network name device associate to. In this way, Cyborg driver can"},{"line_number":75,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":76,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"},{"line_number":77,"context_line":"Neutron\u0027s config file consistent, otherwise, there will be a configuration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5028bf70_87d77407","line":74,"range":{"start_line":73,"start_character":41,"end_line":74,"end_character":41},"updated":"2020-11-24 17:37:55.000000000","message":"Could you please add some details how do you think?\nif I understand well something like this:\n\"the device name aligned with Neutron, in the form of physical_device_mappings.\"\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/conf/plugins/ml2/drivers/mech_sriov/agent_common.py#L25\nOr some other form you refer here?","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":75,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":76,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"},{"line_number":77,"context_line":"Neutron\u0027s config file consistent, otherwise, there will be a configuration"},{"line_number":78,"context_line":"conflict."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Co-existence with Neutron\u0027s Guaranteed Minimum Bandwidth [1]_ Feature"},{"line_number":81,"context_line":":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ac6eae7a_fdcf184d","line":78,"updated":"2020-11-24 17:37:55.000000000","message":"Who will detect this? Cyborg agent? Or the conflict will result in a later error visible to the operator?","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":75,"context_line":"directly read from this file and add a physical network as a trait when"},{"line_number":76,"context_line":"reporting to Placement. The admin is responsible to keep Cyborg\u0027s and"},{"line_number":77,"context_line":"Neutron\u0027s config file consistent, otherwise, there will be a configuration"},{"line_number":78,"context_line":"conflict."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Co-existence with Neutron\u0027s Guaranteed Minimum Bandwidth [1]_ Feature"},{"line_number":81,"context_line":":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"b2a6c26d_035f59f4","line":78,"in_reply_to":"ac6eae7a_fdcf184d","updated":"2020-11-26 09:24:47.000000000","message":"For now, we don\u0027t check this kind of conflict, it is admin\u0027s responsibility to make them consistent. Otherwise, there will be an error when user boot up a VM.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":120,"context_line":"Currently, Nova can interact with Cyborg to boot up a VM with an accelerator"},{"line_number":121,"context_line":"like FPGA, GPU. And other operations such as hard/soft reboot, pause/unpause"},{"line_number":122,"context_line":"are also supported. But there is no mechanism to let Nova boot up a VM with a"},{"line_number":123,"context_line":"nic associated with a specific network. To implement this, it requires"},{"line_number":124,"context_line":"Nova, Cyborg, and Neutron change. And this spec also covers the scenario about"},{"line_number":125,"context_line":"reboot/pause/stop/start and other operations."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"95914dc7_e2ea3b46","line":123,"range":{"start_line":123,"start_character":31,"end_line":123,"end_character":38},"updated":"2020-11-24 17:37:55.000000000","message":"here you refer Neutron network, or?","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":120,"context_line":"Currently, Nova can interact with Cyborg to boot up a VM with an accelerator"},{"line_number":121,"context_line":"like FPGA, GPU. And other operations such as hard/soft reboot, pause/unpause"},{"line_number":122,"context_line":"are also supported. But there is no mechanism to let Nova boot up a VM with a"},{"line_number":123,"context_line":"nic associated with a specific network. To implement this, it requires"},{"line_number":124,"context_line":"Nova, Cyborg, and Neutron change. And this spec also covers the scenario about"},{"line_number":125,"context_line":"reboot/pause/stop/start and other operations."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5307497a_eef13e18","line":123,"range":{"start_line":123,"start_character":31,"end_line":123,"end_character":38},"in_reply_to":"95914dc7_e2ea3b46","updated":"2020-11-26 09:24:47.000000000","message":"yes, neutron network. the network is passed as a param during port creation","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a45f56a1d4558fd80235adc43c52699cdcff73a3","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        |    1.create device profile     |               |                 |"},{"line_number":136,"context_line":"        |-----------------------------------------------------------------\u003e|"},{"line_number":137,"context_line":"        |   create port    |             |               |                 |"},{"line_number":138,"context_line":"        |-----------------\u003e|             |               |                 |"},{"line_number":139,"context_line":"        |                  |             |               |                 |"},{"line_number":140,"context_line":"                           |             |               |                 |"},{"line_number":141,"context_line":" +-----------+             |             |               |                 |"}],"source_content_type":"text/x-rst","patch_set":11,"id":"e563c8dd_921ab50a","line":138,"range":{"start_line":138,"start_character":9,"end_line":138,"end_character":27},"updated":"2020-11-26 05:03:28.000000000","message":"This step doesn\u0027t need to be admin user. It should be able done by the end user.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        |    1.create device profile     |               |                 |"},{"line_number":136,"context_line":"        |-----------------------------------------------------------------\u003e|"},{"line_number":137,"context_line":"        |   create port    |             |               |                 |"},{"line_number":138,"context_line":"        |-----------------\u003e|             |               |                 |"},{"line_number":139,"context_line":"        |                  |             |               |                 |"},{"line_number":140,"context_line":"                           |             |               |                 |"},{"line_number":141,"context_line":" +-----------+             |             |               |                 |"}],"source_content_type":"text/x-rst","patch_set":11,"id":"2216d877_d18d5b15","line":138,"range":{"start_line":138,"start_character":9,"end_line":138,"end_character":27},"in_reply_to":"e563c8dd_921ab50a","updated":"2020-11-26 09:24:47.000000000","message":"Yes, good catch. The device profile is created by admin, but port can be created by end user. Will update the flowchart.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":173,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."},{"line_number":174,"context_line":"For example, we can create a port by: `openstack"},{"line_number":175,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":176,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":177,"context_line":"indicate to a networking device’s resource."},{"line_number":178,"context_line":"The request body is the following:"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"40cf1d77_653ffc76","line":176,"range":{"start_line":176,"start_character":33,"end_line":176,"end_character":42},"updated":"2020-11-24 17:37:55.000000000","message":"nit: in the rest snippet below You have sriov-dp","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":173,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."},{"line_number":174,"context_line":"For example, we can create a port by: `openstack"},{"line_number":175,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":176,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":177,"context_line":"indicate to a networking device’s resource."},{"line_number":178,"context_line":"The request body is the following:"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"0cce20b4_14ab7902","line":176,"range":{"start_line":176,"start_character":33,"end_line":176,"end_character":42},"in_reply_to":"40cf1d77_653ffc76","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":173,"context_line":"for the nic managed by Cyborg, we can name it as \"cyborg\" here."},{"line_number":174,"context_line":"For example, we can create a port by: `openstack"},{"line_number":175,"context_line":"port create --network providernet --vnic-type cyborg --port-backend"},{"line_number":176,"context_line":"sriov-dp1 sriov_port1` in which `sriov-dp1` is a device profile name"},{"line_number":177,"context_line":"indicate to a networking device’s resource."},{"line_number":178,"context_line":"The request body is the following:"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bd8f7525_d73e971c","line":177,"range":{"start_line":176,"start_character":23,"end_line":177,"end_character":42},"updated":"2020-11-24 17:37:55.000000000","message":"this device profile name can be fetched from cyborg?\nOh never mind I found it in cyborg api-ref","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"2. Secondly, user can boot up a VM by:"},{"line_number":193,"context_line":"`openstack server create --image image-uuid -flavor flavor-name  --nic"},{"line_number":194,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"3. Nova interacts with Neutron to get port’s details, including the network"},{"line_number":197,"context_line":"this port is associated to, as well as the physical network this network"}],"source_content_type":"text/x-rst","patch_set":11,"id":"513f3fa4_e88c695a","line":194,"range":{"start_line":194,"start_character":8,"end_line":194,"end_character":19},"updated":"2020-11-24 17:37:55.000000000","message":"nit: in the above snippet you have sriov-port","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"2. Secondly, user can boot up a VM by:"},{"line_number":193,"context_line":"`openstack server create --image image-uuid -flavor flavor-name  --nic"},{"line_number":194,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"3. Nova interacts with Neutron to get port’s details, including the network"},{"line_number":197,"context_line":"this port is associated to, as well as the physical network this network"}],"source_content_type":"text/x-rst","patch_set":11,"id":"2b6e5a3f_dbc59d87","line":194,"range":{"start_line":194,"start_character":8,"end_line":194,"end_character":19},"in_reply_to":"513f3fa4_e88c695a","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a45f56a1d4558fd80235adc43c52699cdcff73a3","unresolved":true,"context_lines":[{"line_number":201,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":202,"context_line":"created in this step."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"5. Nova needs to fetch the physical network from Neutorn port, convert it"},{"line_number":205,"context_line":"into Placement\u0027s trait format and save it in port\u0027s resource request field."},{"line_number":206,"context_line":"Then Nova need to merge the resource class/trait obtained from Cyborg’s device"},{"line_number":207,"context_line":"profile and the port resource request nto a one single request group. And this"},{"line_number":208,"context_line":"request group will be merged into request_spec which will be used in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5868fb4c_57f7cca9","line":205,"range":{"start_line":204,"start_character":63,"end_line":205,"end_character":29},"updated":"2020-11-26 05:03:28.000000000","message":"So without Qos enabled, we need fetch the physnet from the port info, can convert it to trait as some kind of format(Could you show the format in this spec). But if we have port with qos, then  port will return a physnet trait from the port info, then you needn\u0027t convert it manually. It will be great the neutron port always return physnet trait, instead of convert it manually.\n\nProbably neutron will return physnet trait when the vnic type is cyborg or with qos.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":201,"context_line":"call Cyborg API to get details of this device_profile [4]_, related ARQ are"},{"line_number":202,"context_line":"created in this step."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"5. Nova needs to fetch the physical network from Neutorn port, convert it"},{"line_number":205,"context_line":"into Placement\u0027s trait format and save it in port\u0027s resource request field."},{"line_number":206,"context_line":"Then Nova need to merge the resource class/trait obtained from Cyborg’s device"},{"line_number":207,"context_line":"profile and the port resource request nto a one single request group. And this"},{"line_number":208,"context_line":"request group will be merged into request_spec which will be used in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"48e45db0_5455eea7","line":205,"range":{"start_line":204,"start_character":63,"end_line":205,"end_character":29},"in_reply_to":"5868fb4c_57f7cca9","updated":"2020-11-26 09:24:47.000000000","message":"According to https://docs.openstack.org/neutron/latest/admin/config-qos-min-bw.html#debugging, if qos is configured, the physnet traits looks like CUSTOM_PHYSNET_PHYSNET0, so I prefer that nova converts the physnet name to this format as well. Besides, cyborg should report physnet traits with the same format. \n\nAs for the translator, in terms of qos, it is neutron who read from its config file and translate the resource needs into the standard format of resource classes or traits. I suggest we can simply let nova do this translation, because nova need not only the physnet trait, but also need to know the physnet for other usage, for example, https://github.com/openstack/nova/blob/master/nova/network/neutron.py#L2151.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":204,"context_line":"5. Nova needs to fetch the physical network from Neutorn port, convert it"},{"line_number":205,"context_line":"into Placement\u0027s trait format and save it in port\u0027s resource request field."},{"line_number":206,"context_line":"Then Nova need to merge the resource class/trait obtained from Cyborg’s device"},{"line_number":207,"context_line":"profile and the port resource request nto a one single request group. And this"},{"line_number":208,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":209,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"694dc842_3b42f6a6","line":207,"range":{"start_line":207,"start_character":15,"end_line":207,"end_character":37},"updated":"2020-11-24 17:37:55.000000000","message":"So am I understand correctly:\nport_resource_request will be filled by some other mechanism than services/qos/qos_plugin.py (https://opendev.org/openstack/neutron/src/branch/master/neutron/services/qos/qos_plugin.py#L107 )\n\nport_resource_request is now works only with QoS","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":204,"context_line":"5. Nova needs to fetch the physical network from Neutorn port, convert it"},{"line_number":205,"context_line":"into Placement\u0027s trait format and save it in port\u0027s resource request field."},{"line_number":206,"context_line":"Then Nova need to merge the resource class/trait obtained from Cyborg’s device"},{"line_number":207,"context_line":"profile and the port resource request nto a one single request group. And this"},{"line_number":208,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":209,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"02e3aa1d_d30f195e","line":207,"range":{"start_line":207,"start_character":38,"end_line":207,"end_character":55},"updated":"2020-11-24 17:37:55.000000000","message":"nit: into a single","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":204,"context_line":"5. Nova needs to fetch the physical network from Neutorn port, convert it"},{"line_number":205,"context_line":"into Placement\u0027s trait format and save it in port\u0027s resource request field."},{"line_number":206,"context_line":"Then Nova need to merge the resource class/trait obtained from Cyborg’s device"},{"line_number":207,"context_line":"profile and the port resource request nto a one single request group. And this"},{"line_number":208,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":209,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"909190de_e8dadf9c","line":207,"range":{"start_line":207,"start_character":38,"end_line":207,"end_character":55},"in_reply_to":"02e3aa1d_d30f195e","updated":"2020-11-26 09:24:47.000000000","message":"Done","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":204,"context_line":"5. Nova needs to fetch the physical network from Neutorn port, convert it"},{"line_number":205,"context_line":"into Placement\u0027s trait format and save it in port\u0027s resource request field."},{"line_number":206,"context_line":"Then Nova need to merge the resource class/trait obtained from Cyborg’s device"},{"line_number":207,"context_line":"profile and the port resource request nto a one single request group. And this"},{"line_number":208,"context_line":"request group will be merged into request_spec which will be used in"},{"line_number":209,"context_line":"reboot/pause/start/stop and other supported operations."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"cdc451ca_9b4f153c","line":207,"range":{"start_line":207,"start_character":15,"end_line":207,"end_character":37},"in_reply_to":"694dc842_3b42f6a6","updated":"2020-11-26 09:24:47.000000000","message":"It is an open question, as my reply to alex. I prefer that nova get the physnet name from port, and generate a physnet trait by itself, then nova should fill port resource request with this trait. \n\nAnother option is that, let neutron generation physnet trait and fill it in port resource request. And nova only need to get this trait from neutron. \n\nI personally prefer the first option, because we still need get physnet name string from neutorn anyway, for other usages. \n\nHow we decide finally, it need nova and neutron folks to get an agreement.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eda4c4eabc1861c6f9db9ccab62f8e334e248ff0","unresolved":true,"context_lines":[{"line_number":271,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":272,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"* To keep API consistent with neutron lib, neutron lib should define the"},{"line_number":275,"context_line":"  Cyborg port extension as well."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Please refer to:"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"df32c34a_edbf7cb9","line":275,"range":{"start_line":274,"start_character":0,"end_line":275,"end_character":32},"updated":"2020-11-24 17:37:55.000000000","message":"nit: current workflow is to have the extension merged and released in neutron-lib first.\nAs neutron-lib releases appen quite often this is not a problem usually, but can ask for exemption.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":272,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"* To keep API consistent with neutron lib, neutron lib should define the"},{"line_number":275,"context_line":"  Cyborg port extension as well."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Please refer to:"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1e553b6f_ba2fbb3e","line":275,"range":{"start_line":274,"start_character":0,"end_line":275,"end_character":32},"in_reply_to":"df32c34a_edbf7cb9","updated":"2020-11-26 09:24:47.000000000","message":"Ack, thanks for the information.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a45f56a1d4558fd80235adc43c52699cdcff73a3","unresolved":true,"context_lines":[{"line_number":314,"context_line":"    [dev-name]"},{"line_number":315,"context_line":"    pci_address\u003d0000:18:00.0"},{"line_number":316,"context_line":"    function_name\u003dGTPv1"},{"line_number":317,"context_line":"    physnet\u003dphysnet1"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ee518fd2_af239f58","line":317,"range":{"start_line":317,"start_character":12,"end_line":317,"end_character":20},"updated":"2020-11-26 05:03:28.000000000","message":"so this isn\u0027t the trait, you need to convert it as trait with neutorn\u0027s format?","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"53914df7c111fcf8b8f0a0668c3639fadfe07493","unresolved":true,"context_lines":[{"line_number":314,"context_line":"    [dev-name]"},{"line_number":315,"context_line":"    pci_address\u003d0000:18:00.0"},{"line_number":316,"context_line":"    function_name\u003dGTPv1"},{"line_number":317,"context_line":"    physnet\u003dphysnet1"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"16668ecb_9414dda9","line":317,"range":{"start_line":317,"start_character":12,"end_line":317,"end_character":20},"in_reply_to":"ee518fd2_af239f58","updated":"2020-11-26 09:24:47.000000000","message":"yes, we need to convert it to CUSTOM_PHYSNET_PHYSNET1. It should be done in cyborg driver side.","commit_id":"28b1c5c4a79026fd9be6a7573f716c2876bddadc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/sriov-smartnic-support"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes an overall design for sriov enabled nic management which"},{"line_number":14,"context_line":"will involve Nova, Neutron, Cyborg changes. In this spec, we will introduce"},{"line_number":15,"context_line":"basically how to manage an sriov enabled nic(including smart-nic) and how to"},{"line_number":16,"context_line":"use the sriov enabled nic resources for a VM. (The PF attachement is out of"},{"line_number":17,"context_line":"scope)"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":12,"id":"8f906877_e85a94fd","line":17,"range":{"start_line":13,"start_character":0,"end_line":17,"end_character":6},"updated":"2020-12-01 13:54:02.000000000","message":"nit: i still dont like this description as it imples that nova and neutron did not have sriov support before. this spec is really just adding the capablity to manage smartnics.","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/sriov-smartnic-support"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes an overall design for sriov enabled nic management which"},{"line_number":14,"context_line":"will involve Nova, Neutron, Cyborg changes. In this spec, we will introduce"},{"line_number":15,"context_line":"basically how to manage an sriov enabled nic(including smart-nic) and how to"},{"line_number":16,"context_line":"use the sriov enabled nic resources for a VM. (The PF attachement is out of"},{"line_number":17,"context_line":"scope)"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5de2d5aa_d62cd595","line":17,"range":{"start_line":13,"start_character":0,"end_line":17,"end_character":6},"in_reply_to":"8f906877_e85a94fd","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Nowadays, various devices are made to run specific workloads which will free up"},{"line_number":24,"context_line":"CPU resources. Smart-Nic is a network device that can be used to offload the"},{"line_number":25,"context_line":"network-related workload. It goes beyond simple connectivity and implements"},{"line_number":26,"context_line":"network traffic processing on the NIC that would necessarily be performed by"},{"line_number":27,"context_line":"the CPU in the case of a foundational NIC."}],"source_content_type":"text/x-rst","patch_set":12,"id":"0317084a_9e18ed00","line":24,"range":{"start_line":24,"start_character":15,"end_line":24,"end_character":24},"updated":"2020-12-01 13:54:02.000000000","message":"nit: \"A Smart-Nic\"  althogh i dont think this should be capatlised like this and you should use smart-nic instead.","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":24,"context_line":"CPU resources. Smart-Nic is a network device that can be used to offload the"},{"line_number":25,"context_line":"network-related workload. It goes beyond simple connectivity and implements"},{"line_number":26,"context_line":"network traffic processing on the NIC that would necessarily be performed by"},{"line_number":27,"context_line":"the CPU in the case of a foundational NIC."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In the current design, OpenStack can not manage and schedule a smart-nic in"},{"line_number":30,"context_line":"terms of supported features and readable traits automatically."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5c7eaf06_752c077f","line":27,"range":{"start_line":27,"start_character":25,"end_line":27,"end_character":37},"updated":"2020-12-01 13:54:02.000000000","message":"nit: that this is really a internal marketing term used at Intel to differentiate there smart-nics form there generic nics without accelerators. its not really used broadly so it may be better to just say \u0027conventional\u0027 or \u0027traditional\u0027 instead of \u0027foundational\u0027","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":24,"context_line":"CPU resources. Smart-Nic is a network device that can be used to offload the"},{"line_number":25,"context_line":"network-related workload. It goes beyond simple connectivity and implements"},{"line_number":26,"context_line":"network traffic processing on the NIC that would necessarily be performed by"},{"line_number":27,"context_line":"the CPU in the case of a foundational NIC."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In the current design, OpenStack can not manage and schedule a smart-nic in"},{"line_number":30,"context_line":"terms of supported features and readable traits automatically."}],"source_content_type":"text/x-rst","patch_set":12,"id":"de20ba20_a605afba","line":27,"range":{"start_line":27,"start_character":25,"end_line":27,"end_character":37},"in_reply_to":"5c7eaf06_752c077f","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":27,"context_line":"the CPU in the case of a foundational NIC."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In the current design, OpenStack can not manage and schedule a smart-nic in"},{"line_number":30,"context_line":"terms of supported features and readable traits automatically."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":12,"id":"2379be84_868bad22","line":30,"range":{"start_line":30,"start_character":48,"end_line":30,"end_character":61},"updated":"2020-12-01 13:54:02.000000000","message":"this is the important point. it could be done with an external filter but not in tree automatically.\n+1","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Device discovery"},{"line_number":57,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":58,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":59,"context_line":"discover the smartnic resources. We will explain this part in detail in Cyborg"},{"line_number":60,"context_line":"spec, please refer to https://review.opendev.org/#/c/759545/."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"c0e34a62_54aac844","line":58,"range":{"start_line":58,"start_character":33,"end_line":58,"end_character":37},"updated":"2020-12-01 13:54:02.000000000","message":"nit: that the","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Device discovery"},{"line_number":57,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":58,"context_line":"Cyborg should implement a driver that cyborg-agent can invoke periodically to"},{"line_number":59,"context_line":"discover the smartnic resources. We will explain this part in detail in Cyborg"},{"line_number":60,"context_line":"spec, please refer to https://review.opendev.org/#/c/759545/."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a60d59b_cd467f07","line":58,"range":{"start_line":58,"start_character":33,"end_line":58,"end_character":37},"in_reply_to":"c0e34a62_54aac844","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":71,"context_line":"maintain another configuration file (Please refer to 1 in the flowchart) that"},{"line_number":72,"context_line":"contains the device\u0027s name and the physical network name this device associate"},{"line_number":73,"context_line":"to."},{"line_number":74,"context_line":"In this way, Cyborg driver can directly read from this file and add a physical"},{"line_number":75,"context_line":"network as a trait when reporting to Placement. The admin is responsible to"},{"line_number":76,"context_line":"keep Cyborg\u0027s and Neutron\u0027s config file consistent, otherwise, there will be a"},{"line_number":77,"context_line":"configuration conflict."}],"source_content_type":"text/x-rst","patch_set":12,"id":"da845716_8906bb49","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":20},"updated":"2020-12-01 13:54:02.000000000","message":"nit way, the Cyborg ...","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":71,"context_line":"maintain another configuration file (Please refer to 1 in the flowchart) that"},{"line_number":72,"context_line":"contains the device\u0027s name and the physical network name this device associate"},{"line_number":73,"context_line":"to."},{"line_number":74,"context_line":"In this way, Cyborg driver can directly read from this file and add a physical"},{"line_number":75,"context_line":"network as a trait when reporting to Placement. The admin is responsible to"},{"line_number":76,"context_line":"keep Cyborg\u0027s and Neutron\u0027s config file consistent, otherwise, there will be a"},{"line_number":77,"context_line":"configuration conflict."}],"source_content_type":"text/x-rst","patch_set":12,"id":"8272a39e_533b94ae","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":20},"in_reply_to":"da845716_8906bb49","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f2ee09a80649997de688d892903d019cf28369aa","unresolved":true,"context_lines":[{"line_number":172,"context_line":"as the following:"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"`GRP\u003d\"[{\"resources:CUSTOM_NIC\": \"1\",\"trait:CUSTOM_GTV1\":\"required\","},{"line_number":175,"context_line":"\"trait:CUSTOM_PHYSNET1\":\"required\"}]\""},{"line_number":176,"context_line":"openstack accelerator device profile create sriov_dp1 $GRP`"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"2. Secondly, user needs to create a port by passing device profile as a"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fe9296b1_4298197f","line":175,"range":{"start_line":175,"start_character":0,"end_line":175,"end_character":22},"updated":"2020-12-02 06:22:08.000000000","message":"As previous patchset we said physnet trait isn\u0027t the part of device profile","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":172,"context_line":"as the following:"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"`GRP\u003d\"[{\"resources:CUSTOM_NIC\": \"1\",\"trait:CUSTOM_GTV1\":\"required\","},{"line_number":175,"context_line":"\"trait:CUSTOM_PHYSNET1\":\"required\"}]\""},{"line_number":176,"context_line":"openstack accelerator device profile create sriov_dp1 $GRP`"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"2. Secondly, user needs to create a port by passing device profile as a"}],"source_content_type":"text/x-rst","patch_set":12,"id":"c1d94ee7_9b010fd7","line":175,"range":{"start_line":175,"start_character":0,"end_line":175,"end_character":22},"in_reply_to":"88c7ec9e_ca328d4c","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fcbe32fe1e1e5c7b6572e4a0d23fbc217eb6d7c6","unresolved":true,"context_lines":[{"line_number":172,"context_line":"as the following:"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"`GRP\u003d\"[{\"resources:CUSTOM_NIC\": \"1\",\"trait:CUSTOM_GTV1\":\"required\","},{"line_number":175,"context_line":"\"trait:CUSTOM_PHYSNET1\":\"required\"}]\""},{"line_number":176,"context_line":"openstack accelerator device profile create sriov_dp1 $GRP`"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"2. Secondly, user needs to create a port by passing device profile as a"}],"source_content_type":"text/x-rst","patch_set":12,"id":"88c7ec9e_ca328d4c","line":175,"range":{"start_line":175,"start_character":0,"end_line":175,"end_character":22},"in_reply_to":"fe9296b1_4298197f","updated":"2020-12-02 13:33:35.000000000","message":"ah good catch that is correct 😊","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f2ee09a80649997de688d892903d019cf28369aa","unresolved":true,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    {"},{"line_number":190,"context_line":"       \"port\": {"},{"line_number":191,"context_line":"            \"name\": \"sriov-port\","},{"line_number":192,"context_line":"            \"network_id\": \"a87cc70a-3e15-4acf-8205-9b711a3531b7\","},{"line_number":193,"context_line":"            \"vnic_type\":\"cyborg\","},{"line_number":194,"context_line":"            \"device_profile\": \"sriov_dp1\" # new extension contains device profile"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fe0c78ad_8692de5a","line":191,"range":{"start_line":191,"start_character":21,"end_line":191,"end_character":31},"updated":"2020-12-02 06:22:08.000000000","message":"nit, s/sriov-port/sriov-port1/ ?","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    {"},{"line_number":190,"context_line":"       \"port\": {"},{"line_number":191,"context_line":"            \"name\": \"sriov-port\","},{"line_number":192,"context_line":"            \"network_id\": \"a87cc70a-3e15-4acf-8205-9b711a3531b7\","},{"line_number":193,"context_line":"            \"vnic_type\":\"cyborg\","},{"line_number":194,"context_line":"            \"device_profile\": \"sriov_dp1\" # new extension contains device profile"}],"source_content_type":"text/x-rst","patch_set":12,"id":"f48f8554_2a5963d4","line":191,"range":{"start_line":191,"start_character":21,"end_line":191,"end_character":31},"in_reply_to":"fe0c78ad_8692de5a","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dafe18a67c85e8cd614d4eb3be7290baf365b066","unresolved":true,"context_lines":[{"line_number":278,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":279,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"* To keep API consistent with neutron lib, neutron lib should define the"},{"line_number":282,"context_line":"  Cyborg port extension after the extension merged in Neutron."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Please refer to:"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"4ffdd9ff_4be2e203","line":282,"range":{"start_line":281,"start_character":2,"end_line":282,"end_character":62},"updated":"2020-12-01 13:54:02.000000000","message":"actully i think this is wrong.\nyou should really define it in neutron-lib first the when/if you define it in neutron it should reference the defintion in neutron-lib.\n\nthe in tree copy in neutron was originally ment to be removed when neutron-lib was created\nobvioulsy neuton same to have changed it mind if defining new extention in neutron not neutron-lib is still allowed but the correct order here really should be to update neutron-lib first followed by neutron using Depends-On to pull in the dependency in the ci.","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4da5d2ea275a9291c9f4e7bf5340cf01ea52d50","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":279,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"* To keep API consistent with neutron lib, neutron lib should define the"},{"line_number":282,"context_line":"  Cyborg port extension after the extension merged in Neutron."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Please refer to:"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1d3c5a49_6bf7da5a","line":282,"range":{"start_line":281,"start_character":2,"end_line":282,"end_character":62},"in_reply_to":"4ffdd9ff_4be2e203","updated":"2020-12-02 13:36:55.000000000","message":"Done","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"29b04175cb0cba5b0a40f462f7a5cc833dbd349b","unresolved":true,"context_lines":[{"line_number":278,"context_line":"    | 20f78856-0f73-4cf4-bcd0-1389086eb038  | sriov_dev_profile      |"},{"line_number":279,"context_line":"    +---------------------------------------+------------------------+"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"* To keep API consistent with neutron lib, neutron lib should define the"},{"line_number":282,"context_line":"  Cyborg port extension after the extension merged in Neutron."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Please refer to:"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"9ca6c37c_54040710","line":282,"range":{"start_line":281,"start_character":2,"end_line":282,"end_character":62},"in_reply_to":"4ffdd9ff_4be2e203","updated":"2020-12-03 06:56:47.000000000","message":"thanks for the correction.\n+1","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f2ee09a80649997de688d892903d019cf28369aa","unresolved":true,"context_lines":[{"line_number":395,"context_line":"  need changes. \u0027device_profile\u0027 field can not be modified by users once"},{"line_number":396,"context_line":"  the port is bound with one instance(Neutorn need to check to the"},{"line_number":397,"context_line":"  binding:host-id before update \u0027device profile\u0027 field.). Users can only change"},{"line_number":398,"context_line":"  this attribute when the port is unbound."},{"line_number":399,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":400,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":401,"context_line":"  create/delete, start/stop, pause/unpause, suspend/resume, shelve/unshelve,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"d598ee5a_fff1dd6d","line":398,"updated":"2020-12-02 06:22:08.000000000","message":"so neutron will reject to create a port with cyborg vnic type and device profile if cyborg isn\u0027t configured? Although I think nova will raise error when query the device profile.","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fcbe32fe1e1e5c7b6572e4a0d23fbc217eb6d7c6","unresolved":true,"context_lines":[{"line_number":395,"context_line":"  need changes. \u0027device_profile\u0027 field can not be modified by users once"},{"line_number":396,"context_line":"  the port is bound with one instance(Neutorn need to check to the"},{"line_number":397,"context_line":"  binding:host-id before update \u0027device profile\u0027 field.). Users can only change"},{"line_number":398,"context_line":"  this attribute when the port is unbound."},{"line_number":399,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":400,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":401,"context_line":"  create/delete, start/stop, pause/unpause, suspend/resume, shelve/unshelve,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dc726f8b_90329c3c","line":398,"in_reply_to":"d598ee5a_fff1dd6d","updated":"2020-12-02 13:33:35.000000000","message":"netron will not chack with cyborg at all.\n\nwehn we say the port is  unbound we are refering the the neutron port bindings not an ARQ\n\nneutron shoudl reject any attempt to modify the device-profile atribute on the port\nif the binding:host-id is populated.\n\n\nnova will be the only thing to interact with cyborg in this workflow so the user wont know if the device profile exists and cyborg is avaiable until they boot the vm\n\n\nthat said listing device profiles on the cyborg api should not require admin privileges \nso teants can check what profiles are avaiable but neutron as it stands willl not do any validation.\n\nthat could be added but we did that then i would push to not have nova retrive the info form cyborg\nand instead just have neutron compose the resouce requests and pass those to nova as it does with nic bandwidth.","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1026b550731d2b1cd0681e310bd6c23b0c6ea490","unresolved":true,"context_lines":[{"line_number":395,"context_line":"  need changes. \u0027device_profile\u0027 field can not be modified by users once"},{"line_number":396,"context_line":"  the port is bound with one instance(Neutorn need to check to the"},{"line_number":397,"context_line":"  binding:host-id before update \u0027device profile\u0027 field.). Users can only change"},{"line_number":398,"context_line":"  this attribute when the port is unbound."},{"line_number":399,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":400,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":401,"context_line":"  create/delete, start/stop, pause/unpause, suspend/resume, shelve/unshelve,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fb06b921_efa94a11","line":398,"in_reply_to":"dc726f8b_90329c3c","updated":"2020-12-03 00:50:17.000000000","message":"\u003e nova will be the only thing to interact with cyborg in this workflow so the user wont know if the device profile exists and cyborg is avaiable until they boot the vm\n\nThe user created the port with a device profile, so they should know?\n\nIf nova will do some validation check, I guess the case which the port\u0027s vnic type isn\u0027t cyborg but with a device profile won\u0027t be checked. Since the nova code should only do cyborg things when the vnic type is cyborg.\n\nSo if we do the check in the neutron side, probably can tell the user there are some strange parameters in your port.\n\n\u003e \n\u003e that said listing device profiles on the cyborg api should not require admin privileges \n\u003e so teants can check what profiles are avaiable but neutron as it stands willl not do any validation.\n\u003e \nCurrently the normal user can\u0027t read the device profile?","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"29b04175cb0cba5b0a40f462f7a5cc833dbd349b","unresolved":true,"context_lines":[{"line_number":395,"context_line":"  need changes. \u0027device_profile\u0027 field can not be modified by users once"},{"line_number":396,"context_line":"  the port is bound with one instance(Neutorn need to check to the"},{"line_number":397,"context_line":"  binding:host-id before update \u0027device profile\u0027 field.). Users can only change"},{"line_number":398,"context_line":"  this attribute when the port is unbound."},{"line_number":399,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":400,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":401,"context_line":"  create/delete, start/stop, pause/unpause, suspend/resume, shelve/unshelve,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"4edde4a2_6d60ec2b","line":398,"in_reply_to":"fb06b921_efa94a11","updated":"2020-12-03 06:56:47.000000000","message":"\u003e \u003e nova will be the only thing to interact with cyborg in this workflow so the user wont know if the device profile exists and cyborg is avaiable until they boot the vm\n\u003e \n\u003e The user created the port with a device profile, so they should know?\n\u003e \nUser can create the port with a device profile name filled in device profile extension. But neutron won\u0027t check with Cyborg if the device profile exists. When user boot up a VM, Nova will check it with Cyborg.\n\n\u003e If nova will do some validation check, I guess the case which the port\u0027s vnic type isn\u0027t cyborg but with a device profile won\u0027t be checked. Since the nova code should only do cyborg things when the vnic type is cyborg.\n\u003e \n\u003e So if we do the check in the neutron side, probably can tell the user there are some strange parameters in your port.\n\u003e \n\n+1, neutron need some validation to make sure the vnic type and device profile are correspond, for example, don\u0027t allow user to set the device profile if the vnic type is not \"cyborg\"\n\u003e \u003e \n\u003e \u003e that said listing device profiles on the cyborg api should not require admin privileges \n\u003e \u003e so teants can check what profiles are avaiable but neutron as it stands willl not do any validation.\n\u003e \u003e \n\u003e Currently the normal user can\u0027t read the device profile?\n\nUser can read the device profile. As my understanding, neutron need validation to keep vnic type and device profile filling correspond. Nova need validation to ensure the device profile exists by calling Cybrog.","commit_id":"744e0b939d34ff8d46271bc7cacf943f62a847b2"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"de983a3b8715d564e518e2170f502d58b8142081","unresolved":true,"context_lines":[{"line_number":394,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":395,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":396,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":397,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":398,"context_line":"  create/delete, start/stop, pause/unpause, suspend/resume, shelve/unshelve,"},{"line_number":399,"context_line":"  rebuild, reboot, evacuate operations for a VM having an \"cyborg\" vnic type"},{"line_number":400,"context_line":"  port."},{"line_number":401,"context_line":"  The rest of the lifecycle operations will be rejected now with HTTP 403 Error"},{"line_number":402,"context_line":"  code."},{"line_number":403,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"da91e816_34479342","line":400,"range":{"start_line":397,"start_character":47,"end_line":400,"end_character":7},"updated":"2020-12-03 07:45:46.000000000","message":"That we also need to maintain a docs page to record the supported operations, sucah as the arqs support compute api guide https://docs.openstack.org/api-guide/compute/accelerator-support.html","commit_id":"e90790d1e327002c1ae6820aaa72467e1b9817ae"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"8b0ebafa23092fc0c888ad493761e4eb10e76cfa","unresolved":false,"context_lines":[{"line_number":394,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":395,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":396,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":397,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":398,"context_line":"  create/delete, start/stop, pause/unpause, suspend/resume, shelve/unshelve,"},{"line_number":399,"context_line":"  rebuild, reboot, evacuate operations for a VM having an \"cyborg\" vnic type"},{"line_number":400,"context_line":"  port."},{"line_number":401,"context_line":"  The rest of the lifecycle operations will be rejected now with HTTP 403 Error"},{"line_number":402,"context_line":"  code."},{"line_number":403,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"b5b25286_3a24241e","line":400,"range":{"start_line":397,"start_character":47,"end_line":400,"end_character":7},"in_reply_to":"da91e816_34479342","updated":"2020-12-04 02:42:26.000000000","message":"Ack, this is included in documentation impact section.","commit_id":"e90790d1e327002c1ae6820aaa72467e1b9817ae"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"de983a3b8715d564e518e2170f502d58b8142081","unresolved":true,"context_lines":[{"line_number":507,"context_line":"   * - Wallaby"},{"line_number":508,"context_line":"     - Introduced"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"59525235_6e1fd104","line":510,"updated":"2020-12-03 07:45:46.000000000","message":"nits: Two redundant blank lines.","commit_id":"e90790d1e327002c1ae6820aaa72467e1b9817ae"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"8b0ebafa23092fc0c888ad493761e4eb10e76cfa","unresolved":false,"context_lines":[{"line_number":507,"context_line":"   * - Wallaby"},{"line_number":508,"context_line":"     - Introduced"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"4faa0884_1b232e7c","line":510,"in_reply_to":"59525235_6e1fd104","updated":"2020-12-04 02:42:26.000000000","message":"Done","commit_id":"e90790d1e327002c1ae6820aaa72467e1b9817ae"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d59dda270700d59a9bd2e5fb47694a9a9605161d","unresolved":true,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Nowadays, various devices are made to run specific workloads which will free up"},{"line_number":23,"context_line":"CPU resources. Smart-nic is a network device that can be used to offload the"},{"line_number":24,"context_line":"network-related workload. It goes beyond simple connectivity and implements"},{"line_number":25,"context_line":"network traffic processing on the NIC that would necessarily be performed by"},{"line_number":26,"context_line":"the CPU in the case of a conventional NIC."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In the current design, OpenStack can not manage and schedule a smart-nic in"},{"line_number":29,"context_line":"terms of supported features and readable traits automatically."}],"source_content_type":"text/x-rst","patch_set":15,"id":"b4d17a75_dda82d71","line":26,"range":{"start_line":23,"start_character":15,"end_line":26,"end_character":42},"updated":"2020-12-09 13:39:14.000000000","message":"Im probably missing some knowledge here, but what is the reason cyborg needs to manage smart-NICs ?\n\nare you referring to NICs that require programming in a vendor specific manner in order to implement network connectivity for a neutron port that is bound to a specific VF? can you provide examples of such hardware ?\n\nwhich differs from ovs hardware offload capable NICs offered by Mellanox(Nvidia) and Netronome\nwhere a VF has a VF representor netdev which is plugged to the OVS on the hypervisor. utilizing TC linux subsystem to offload rules to hardware","commit_id":"0eab8bab2dd29bfaa0b7d5e1906752b3d33e8169"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"d05f84ca00c23592f57e57374fc7bad30236d15e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Nowadays, various devices are made to run specific workloads which will free up"},{"line_number":23,"context_line":"CPU resources. Smart-nic is a network device that can be used to offload the"},{"line_number":24,"context_line":"network-related workload. It goes beyond simple connectivity and implements"},{"line_number":25,"context_line":"network traffic processing on the NIC that would necessarily be performed by"},{"line_number":26,"context_line":"the CPU in the case of a conventional NIC."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In the current design, OpenStack can not manage and schedule a smart-nic in"},{"line_number":29,"context_line":"terms of supported features and readable traits automatically."}],"source_content_type":"text/x-rst","patch_set":15,"id":"493c8bb5_6e9391f8","line":26,"range":{"start_line":23,"start_character":15,"end_line":26,"end_character":42},"in_reply_to":"b4d17a75_dda82d71","updated":"2020-12-10 08:00:51.000000000","message":"There are NICs need be program or config/change firmware, that\u0027s not the scope of\nNova concerns and it\u0027s not like NICs from Mellanox. For an explicit NIC example, the X710(Intel) series featured with DDP(Dynamic Device Personalization). And any semantics\nequipped with FPGA.","commit_id":"0eab8bab2dd29bfaa0b7d5e1906752b3d33e8169"}]}
