)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"441802716209d67e2f544e3e2fdc02afde4ac3aa","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Xinran Wang \u003cxin-ran.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-04-15 03:32:57 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Repropose smartnic support spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I79c4f201d97ea7ba7d5f8026d2655df8b5934be6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7b7078fb_3e4cd7d8","line":7,"updated":"2021-04-27 07:54:29.000000000","message":"It will be great if you can write down what have changed compare to previous approved version.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6a12f90cca52c7e191a1d23eff8b192ae7542a55","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Xinran Wang \u003cxin-ran.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-04-15 03:32:57 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Repropose smartnic support spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I79c4f201d97ea7ba7d5f8026d2655df8b5934be6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"4fb36fbd_16029d6e","line":7,"in_reply_to":"7b7078fb_3e4cd7d8","updated":"2021-04-27 10:03:29.000000000","message":"agree, will update the commit message","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"}],"specs/xena/approved/support-sriov-smartnic.rst":[{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0df3b14d45c90a706998d42da450d497b23a2772","unresolved":true,"context_lines":[{"line_number":212,"context_line":"to convert it into Placement\u0027s trait format and save it in port\u0027s resource"},{"line_number":213,"context_line":"request field if vnic type is \"accelerator-direct\". Then Nova need to merge the"},{"line_number":214,"context_line":"resource class/trait obtained from Cyborg’s device profile and the port resource"},{"line_number":215,"context_line":"request into a one single request group. And this request group will be merged into"},{"line_number":216,"context_line":"request_spec which will be used in reboot/pause/start/stop and other supported"},{"line_number":217,"context_line":"operations. After that, Nova schedules the VM to an available compute node"},{"line_number":218,"context_line":"who matches all requested resources."}],"source_content_type":"text/x-rst","patch_set":1,"id":"e1c64472_a94a2d89","line":215,"updated":"2021-03-30 01:18:45.000000000","message":"pep8: too long","commit_id":"5cf0b619eb3cb0f98ada3b108fe56e3ca544d4fc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"40ee395a2c4e901915c72efb33d0771bafc1bdc1","unresolved":false,"context_lines":[{"line_number":212,"context_line":"to convert it into Placement\u0027s trait format and save it in port\u0027s resource"},{"line_number":213,"context_line":"request field if vnic type is \"accelerator-direct\". Then Nova need to merge the"},{"line_number":214,"context_line":"resource class/trait obtained from Cyborg’s device profile and the port resource"},{"line_number":215,"context_line":"request into a one single request group. And this request group will be merged into"},{"line_number":216,"context_line":"request_spec which will be used in reboot/pause/start/stop and other supported"},{"line_number":217,"context_line":"operations. After that, Nova schedules the VM to an available compute node"},{"line_number":218,"context_line":"who matches all requested resources."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3809ce35_84a920ca","line":215,"in_reply_to":"e1c64472_a94a2d89","updated":"2021-03-30 05:46:43.000000000","message":"Done","commit_id":"5cf0b619eb3cb0f98ada3b108fe56e3ca544d4fc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0df3b14d45c90a706998d42da450d497b23a2772","unresolved":true,"context_lines":[{"line_number":512,"context_line":".. list-table:: Revisions"},{"line_number":513,"context_line":"   :header-rows: 1"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"   * - Release Name"},{"line_number":516,"context_line":"     - Description"},{"line_number":517,"context_line":"   * - Wallaby"},{"line_number":518,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":1,"id":"389ed75b_a1e5a3ec","line":515,"updated":"2021-03-30 01:18:45.000000000","message":"we may not have this(?), this seems just a template.","commit_id":"5cf0b619eb3cb0f98ada3b108fe56e3ca544d4fc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"40ee395a2c4e901915c72efb33d0771bafc1bdc1","unresolved":false,"context_lines":[{"line_number":512,"context_line":".. list-table:: Revisions"},{"line_number":513,"context_line":"   :header-rows: 1"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"   * - Release Name"},{"line_number":516,"context_line":"     - Description"},{"line_number":517,"context_line":"   * - Wallaby"},{"line_number":518,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd31609_e6307361","line":515,"in_reply_to":"389ed75b_a1e5a3ec","updated":"2021-03-30 05:46:43.000000000","message":"We need this as the title of the table.","commit_id":"5cf0b619eb3cb0f98ada3b108fe56e3ca544d4fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9de052589837afcf00e0a01db08005b2c07a2b19","unresolved":true,"context_lines":[{"line_number":402,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":403,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":404,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":405,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":406,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":407,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":408,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6725867c_c7d34941","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":70},"updated":"2021-04-13 15:54:51.000000000","message":"Does it mean a new cyborg API microversion? If yes the nova needs to use that new microversion","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"41287da7d6f06cd4720a865e9309d05ccbc8b9af","unresolved":true,"context_lines":[{"line_number":402,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":403,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":404,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":405,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":406,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":407,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":408,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3833a7f9_1779a54b","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":70},"in_reply_to":"0f2669cc_48e0a3fb","updated":"2021-04-14 08:23:09.000000000","message":"As clarified , line #387, while nova received the cyborg\u0027s ARQ binding update, nova assume this  consumer id must be instance_uuid. for this reason, use port bind the ARQ is alternative.\n\nThis impact item should removed, this is only true while we take that alternative.","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1f1d25fc8005b88201e644c15297b5018d1686c3","unresolved":true,"context_lines":[{"line_number":402,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":403,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":404,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":405,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":406,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":407,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":408,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e106ad06_f9eda2e8","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":70},"in_reply_to":"3833a7f9_1779a54b","updated":"2021-04-14 10:35:12.000000000","message":"OK so does it mean no Cyborg API change is expected?","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"32103c2140049c34978b85d87b6a674af1b2047c","unresolved":true,"context_lines":[{"line_number":402,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":403,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":404,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":405,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":406,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":407,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":408,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0f2669cc_48e0a3fb","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":70},"in_reply_to":"6725867c_c7d34941","updated":"2021-04-14 06:34:27.000000000","message":"IMO, we just need to reuse the current PATCH API of ARQ[1], it requires to update the field name \"instance_uuid\" to \"consumer_uuid\", I will update a patch soon. And we can fill the consumer_uuid by instance_uuid or by port uuid. \n\n[1]https://docs.openstack.org/api-ref/accelerator/v2/index.html?expanded\u003dupdate-accelerator-requests-detail#update-accelerator-requests","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"02a928e014ba96aa55b00a4833f0714acaeef1d5","unresolved":true,"context_lines":[{"line_number":402,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":403,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":404,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":405,"context_line":"* Bind ARQ API should be improved to support binding an ARQ with port."},{"line_number":406,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":407,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":408,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"4f657867_a04198af","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":70},"in_reply_to":"e106ad06_f9eda2e8","updated":"2021-04-15 02:59:58.000000000","message":"yes, according to previous comment, we do not need cyborg API changes, and no microversion changes either.","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9de052589837afcf00e0a01db08005b2c07a2b19","unresolved":true,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"Upgrade impact"},{"line_number":446,"context_line":"--------------"},{"line_number":447,"context_line":"None"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0673ace5_7516c908","line":447,"updated":"2021-04-13 15:54:51.000000000","message":"There are two things:\n* Nova needs to adapt to the new Neutron API extension introducing the device_profile in the port\n\n* nova compute service version needs to be bumped and server lifecycle operations on server with ports with device_profile needs to be rejected if there are computes with old service versions are still exist in the cluster.","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"32103c2140049c34978b85d87b6a674af1b2047c","unresolved":true,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"Upgrade impact"},{"line_number":446,"context_line":"--------------"},{"line_number":447,"context_line":"None"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e6eb0e25_bce31f8f","line":447,"in_reply_to":"0673ace5_7516c908","updated":"2021-04-14 06:34:27.000000000","message":"agree with you, I will add this in next PS.","commit_id":"02d0b48a74e9a48d70ec76c049683566807400e5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"441802716209d67e2f544e3e2fdc02afde4ac3aa","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"aced1f09_4718cf4f","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"updated":"2021-04-27 07:54:29.000000000","message":"Please add this to `REST API Impact` also. I think it should be return HTTP 400?","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"356a6b91994dc78f062eb031e7fb702cf34616d7","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"b70b5701_37245cac","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"087b3f2f_c11ed171","updated":"2021-04-28 06:25:34.000000000","message":"To checking how many device this profile request, need exposing many cyborg internal detail  structure. \n\nwe need know it\u0027s a \"groups\" list and there is a dictionary, had a key \"resources:\u003c\u003e\": \"1\", and \"1\" means there gonna to have one arq. if groups len \u003e1, also means more than one devices. \n\ndo we prefer this than checking the length of arq later? b.t,w I\u0027m ok with both of it.\n\nopenstack accelerator device profile show d30efbf9-bdf5-45d1-9d34-74d720121971 -f json\n{\n\"created_at\": \"2021-01-14T08:11:32+00:00\",\n\"updated_at\": null,\n\"uuid\": \"d30efbf9-bdf5-45d1-9d34-74d720121971\",\n\"name\": \"new-sriovdp\",\n\"groups\": [\n{\n\"resources:CUSTOM_NIC\": \"1\",\n\"trait:CUSTOM_GTPV1\": \"required\",\n\"trait:CUSTOM_VF\": \"required\"\n}\n]\n}","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"087b3f2f_c11ed171","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"20c0e862_267c58ca","updated":"2021-04-27 11:27:37.000000000","message":"this has not been adress in v6","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"596bd389777bf12e3456e89254a235f31b66fa94","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"26ac9cd7_bd5cd46a","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"25ec221d_c3df962b","updated":"2021-04-29 03:54:36.000000000","message":"accroding to the return value, a group with 1 element could require multiple device by \"resources:xxx\": \"3\", so we should also check the value of \"resources:xxx\" here.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e20acb6f8d664405561d9bf83949bc688d400a6","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3090020a_f900801e","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"26ac9cd7_bd5cd46a","updated":"2021-04-29 11:27:07.000000000","message":"i think we can proably leave the exact details of the check to code reivew as long as we agree to do it in the nova-api prior to schduling so we can make the inital server create fail without resulting in an instance in error.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a4d9ccb6f71095962584adfc4697fe132e85626c","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a94ca1e8_ec1cffa8","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"3090020a_f900801e","updated":"2021-04-30 03:22:04.000000000","message":"yes, agree with you.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6a12f90cca52c7e191a1d23eff8b192ae7542a55","unresolved":false,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"d48b261a_aecc496a","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"aced1f09_4718cf4f","updated":"2021-04-27 10:03:29.000000000","message":"Done","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c2d94aa4ca21dfcb50b91c5e5aadbbda994a6abd","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"20c0e862_267c58ca","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"aced1f09_4718cf4f","updated":"2021-04-27 11:20:01.000000000","message":"to return a 400 at the api we would have to retive the device-profile either when its added to the neutron port or in the nova api before we attempt to scheduler the instance.\n\npersonally i would prefer this to be enforced on the neutron side but i think in the current proposal neturon does not actully talk to cyborg so nova would have to do this.\n\nif we don\u0027t check this in the api we could check this in where we retrive the device profile today before schduling and note the failure in the server fault message when its placed in the error state but i agree doing it eairler and retruning a 400 form the api  without creating a server record would be better.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bf12b6233b985b62e9cc0b2ee6b9733b6bbad54a","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c92285b3_5c44b072","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"b70b5701_37245cac","updated":"2021-04-28 13:51:40.000000000","message":"i would prefer to just check the lenght of the groups in the profile  and assert its 1 in the the api early rather then wait untill the arq is created.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"caf5eca1a0f3cb004262ee5c5ee62eb4fc75e305","unresolved":true,"context_lines":[{"line_number":179,"context_line":"it \"accelerator-direct\" here. For example, we can create a port by: `openstack"},{"line_number":180,"context_line":"port create --network providernet --vnic-type accelerator-direct"},{"line_number":181,"context_line":"--device-profile sriov-dp1 sriov_port1` in which `sriov-dp1` is the device"},{"line_number":182,"context_line":"profile created at the first step. Please notice that the device profile used"},{"line_number":183,"context_line":"by a port should only have one device resource required, otherwise an exception"},{"line_number":184,"context_line":"will be thrown out during the VM boot up process."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"The request body is the following:"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"25ec221d_c3df962b","line":184,"range":{"start_line":182,"start_character":35,"end_line":184,"end_character":49},"in_reply_to":"c92285b3_5c44b072","updated":"2021-04-29 01:18:47.000000000","message":"seems feasible.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"441802716209d67e2f544e3e2fdc02afde4ac3aa","unresolved":true,"context_lines":[{"line_number":220,"context_line":"7. After scheduling, Nova needs to call Cyborg to bind the ARQ with instance"},{"line_number":221,"context_line":"uuid and return attach_handle which contains the device\u0027s info such as PCI"},{"line_number":222,"context_line":"address."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"8. Nova also needs to tell Neutron to update the port binding’s info"},{"line_number":225,"context_line":"in this step."},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"61efe309_ad6ef6d9","line":223,"updated":"2021-04-27 07:54:29.000000000","message":"Miss a step, nova should wait cyborg binding finish.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c2d94aa4ca21dfcb50b91c5e5aadbbda994a6abd","unresolved":true,"context_lines":[{"line_number":220,"context_line":"7. After scheduling, Nova needs to call Cyborg to bind the ARQ with instance"},{"line_number":221,"context_line":"uuid and return attach_handle which contains the device\u0027s info such as PCI"},{"line_number":222,"context_line":"address."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"8. Nova also needs to tell Neutron to update the port binding’s info"},{"line_number":225,"context_line":"in this step."},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a87b6ea5_aced88e5","line":223,"in_reply_to":"61efe309_ad6ef6d9","updated":"2021-04-27 11:20:01.000000000","message":"+1\n\nthis wait is on the compute node which we to already today yes.\nwere we wait for the external event form cyborg.\n\nthis does need to happen before we update the neutron port binding so that we can populate the pci adddres in the binding profile.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6a12f90cca52c7e191a1d23eff8b192ae7542a55","unresolved":false,"context_lines":[{"line_number":220,"context_line":"7. After scheduling, Nova needs to call Cyborg to bind the ARQ with instance"},{"line_number":221,"context_line":"uuid and return attach_handle which contains the device\u0027s info such as PCI"},{"line_number":222,"context_line":"address."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"8. Nova also needs to tell Neutron to update the port binding’s info"},{"line_number":225,"context_line":"in this step."},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"59e32058_66e7f9c7","line":223,"in_reply_to":"61efe309_ad6ef6d9","updated":"2021-04-27 10:03:29.000000000","message":"Done","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":false,"context_lines":[{"line_number":220,"context_line":"7. After scheduling, Nova needs to call Cyborg to bind the ARQ with instance"},{"line_number":221,"context_line":"uuid and return attach_handle which contains the device\u0027s info such as PCI"},{"line_number":222,"context_line":"address."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"8. Nova also needs to tell Neutron to update the port binding’s info"},{"line_number":225,"context_line":"in this step."},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7c7111e5_4d8cae02","line":223,"in_reply_to":"a87b6ea5_aced88e5","updated":"2021-04-27 11:27:37.000000000","message":"Done","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"441802716209d67e2f544e3e2fdc02afde4ac3aa","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* Create ARQ [6]_"},{"line_number":260,"context_line":"* Bind ARQ [7]_"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"4. Nova call Neutron to update port binding profile with interface info. [8]_"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Neutron"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a22528ed_b9edb789","line":261,"updated":"2021-04-27 07:54:29.000000000","message":"There also a step for cyborg call nova external event.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* Create ARQ [6]_"},{"line_number":260,"context_line":"* Bind ARQ [7]_"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"4. Nova call Neutron to update port binding profile with interface info. [8]_"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Neutron"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7d8ac2ef_be1712c6","line":261,"in_reply_to":"2837901a_6524c125","updated":"2021-04-27 11:27:37.000000000","message":"Done","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c2d94aa4ca21dfcb50b91c5e5aadbbda994a6abd","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* Create ARQ [6]_"},{"line_number":260,"context_line":"* Bind ARQ [7]_"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"4. Nova call Neutron to update port binding profile with interface info. [8]_"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Neutron"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2837901a_6524c125","line":261,"in_reply_to":"a22528ed_b9edb789","updated":"2021-04-27 11:20:01.000000000","message":"+1 yep that already presnet in the existing code but its good to include it here.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6a12f90cca52c7e191a1d23eff8b192ae7542a55","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* Create ARQ [6]_"},{"line_number":260,"context_line":"* Bind ARQ [7]_"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"4. Nova call Neutron to update port binding profile with interface info. [8]_"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Neutron"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a9a8347_a86ab4cf","line":261,"in_reply_to":"a22528ed_b9edb789","updated":"2021-04-27 10:03:29.000000000","message":"This section describes the api calls between the services. \"waiting for notification\" will not invoke any API call. I will add it first, let\u0027s see.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"441802716209d67e2f544e3e2fdc02afde4ac3aa","unresolved":true,"context_lines":[{"line_number":365,"context_line":"How Nova generate request_spec with request device"},{"line_number":366,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":367,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":368,"context_line":"  trait into port_resource_reqeust, then return to Nova."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":371,"context_line":"  is a sub-component for Neutron. It\u0027s better to let Nova interact with Cyborg"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9eccd4ef_c938dc6c","line":368,"range":{"start_line":368,"start_character":27,"end_line":368,"end_character":34},"updated":"2021-04-27 07:54:29.000000000","message":"typo, s/reqeust/request/","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"caf5eca1a0f3cb004262ee5c5ee62eb4fc75e305","unresolved":true,"context_lines":[{"line_number":365,"context_line":"How Nova generate request_spec with request device"},{"line_number":366,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":367,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":368,"context_line":"  trait into port_resource_reqeust, then return to Nova."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":371,"context_line":"  is a sub-component for Neutron. It\u0027s better to let Nova interact with Cyborg"}],"source_content_type":"text/x-rst","patch_set":5,"id":"38998c01_0f52caf1","line":368,"range":{"start_line":368,"start_character":27,"end_line":368,"end_character":34},"in_reply_to":"781dadd1_aff73597","updated":"2021-04-29 01:18:47.000000000","message":"agree add this to neutron later.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6a12f90cca52c7e191a1d23eff8b192ae7542a55","unresolved":false,"context_lines":[{"line_number":365,"context_line":"How Nova generate request_spec with request device"},{"line_number":366,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":367,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":368,"context_line":"  trait into port_resource_reqeust, then return to Nova."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":371,"context_line":"  is a sub-component for Neutron. It\u0027s better to let Nova interact with Cyborg"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a8a3c25_d385893f","line":368,"range":{"start_line":368,"start_character":27,"end_line":368,"end_character":34},"in_reply_to":"9eccd4ef_c938dc6c","updated":"2021-04-27 10:03:29.000000000","message":"Done","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c2d94aa4ca21dfcb50b91c5e5aadbbda994a6abd","unresolved":true,"context_lines":[{"line_number":365,"context_line":"How Nova generate request_spec with request device"},{"line_number":366,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":367,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":368,"context_line":"  trait into port_resource_reqeust, then return to Nova."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":371,"context_line":"  is a sub-component for Neutron. It\u0027s better to let Nova interact with Cyborg"}],"source_content_type":"text/x-rst","patch_set":5,"id":"781dadd1_aff73597","line":368,"range":{"start_line":368,"start_character":27,"end_line":368,"end_character":34},"in_reply_to":"9eccd4ef_c938dc6c","updated":"2021-04-27 11:20:01.000000000","message":"yep also if neutron did this it could check the device profile only contained 1 device but in the current proposal that will be be done by neutron.\n\nchecking in neutron would be a better user experience but it could be added in the future can you add a paragrap to descirbe this. something along the lines of \n\n\"By retriving the device profile in neutron from cyborg this allows neutron to validate the device profile\ncontains only 1 device request. This check will instead be enforced by nova.\"","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"441802716209d67e2f544e3e2fdc02afde4ac3aa","unresolved":true,"context_lines":[{"line_number":406,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"},{"line_number":407,"context_line":"  operations for a VM having an \"accelerator-direct\" vnic type port."},{"line_number":408,"context_line":"  The unsupported operations will be rejected now with HTTP 403 Error"},{"line_number":409,"context_line":"  code."},{"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":5,"id":"fa9f10a7_8406e408","line":409,"updated":"2021-04-27 07:54:29.000000000","message":"One more point, when nova didn\u0027t upgrade all the compute node to new version, the instance with cyborg device should be reject, and return 403 I guess?","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6a12f90cca52c7e191a1d23eff8b192ae7542a55","unresolved":false,"context_lines":[{"line_number":406,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"},{"line_number":407,"context_line":"  operations for a VM having an \"accelerator-direct\" vnic type port."},{"line_number":408,"context_line":"  The unsupported operations will be rejected now with HTTP 403 Error"},{"line_number":409,"context_line":"  code."},{"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":5,"id":"20dc48aa_52802b8d","line":409,"in_reply_to":"fa9f10a7_8406e408","updated":"2021-04-27 10:03:29.000000000","message":"good point, I will add this.","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c2d94aa4ca21dfcb50b91c5e5aadbbda994a6abd","unresolved":true,"context_lines":[{"line_number":406,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"},{"line_number":407,"context_line":"  operations for a VM having an \"accelerator-direct\" vnic type port."},{"line_number":408,"context_line":"  The unsupported operations will be rejected now with HTTP 403 Error"},{"line_number":409,"context_line":"  code."},{"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":5,"id":"3f0557f9_3ae992f0","line":409,"in_reply_to":"fa9f10a7_8406e408","updated":"2021-04-27 11:20:01.000000000","message":"we spoke about this at the ptg and decied that we should normalise all responce codes for unsupported operations to be a 400 going forward and we are going to retroactivly backport the chagne to existing apis.\n\n\n(gmann): Consistent return code for \"Feature not implemented\u0027\n\n    There is in consistency on what return code we should return for  \"Feature not implemented\u0027. Currently we return 400, 409, and 403.\n\n    400 case: Example: Multiattach Swap Volume Not Supported:\n\n    https://github.com/openstack/nova/blob/0c64f4c3eae8e2654ec11f60682c0fa5eda30c1a/nova/exception.py#L295\n\n    https://github.com/openstack/nova/blob/788035add9b32fa841389d906a0e307c231456ba/nova/api/openstack/compute/volumes.py#L429\n\n    403 case: Cyborg integration.\n\n    https://github.com/openstack/nova/blob/0c64f4c3eae8e2654ec11f60682c0fa5eda30c1a/nova/exception.py#L158\n\n    https://github.com/openstack/nova/blob/0e7cd9d1a95a30455e3c91916ece590454235e0e/nova/api/openstack/compute/suspend_server.py#L47\n\n    409 case: Example: Operation Not Supported For SEV , Operation Not Supported For VTPM\n\n    https://github.com/openstack/nova/blob/0c64f4c3eae8e2654ec11f60682c0fa5eda30c1a/nova/exception.py#L528-L537\n\n    Discussion started in https://review.opendev.org/c/openstack/nova/+/780333/5//COMMIT_MSG#11\n\n    API SIG guidlines suggest to use 400 : https://specs.openstack.org/openstack/api-wg/guidelines/http/response-codes.html#use-of-501-not-implemented\n\n    If we modify the existing return code of  \"Feature not implemented\u0027 to 400 then we do not need microversion bump as 400 is existing return code for any API. \n\n    https://docs.openstack.org/nova/latest/contributor/microversions.html#id3\n\n    (sean-k-mooney)i was ok with 403 as a client is not allowed to automaticaly retry the same request unmodified if they recive a 403. the same would be true of a 400, a 409 allows the request to be retired.\n\n    for that an other reasons since the user cant \"fix\" the request to make it succeed i don\u0027t like useing 409 for this but i would be ok with a 400 in all existing cases\n\n    HTTP 501? https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501\n\n    https://specs.openstack.org/openstack/api-wg/guidelines/http/response-codes.html#use-of-501-not-implemented\n\n    Ah, it\u0027s the HTTP *method* that\u0027s not implemented\n\n    400 \u003d \"your bad request\", 500 \u003d \"my bad, server has screwed up\"+1\n\n    some operators have sla where 5XX errors are considerd a breakage of the sla and is billable\n\n    damn, ninja\u0027d it\u0027s the literally obvious choice :P\n\n    its explictly against the recommend useage of 501\n\n    they are not  server failure and that refers to http methods not logical operation \n\n    AGREED:\n\n    use 400, no need microversion to update the APIs to it\n\n    backport it","commit_id":"781449ea3aac5070fdc7962f5782e29a5e8d889c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":true,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"3. Thirdly, user can boot up a VM by:"},{"line_number":201,"context_line":"`openstack server create --image image-uuid -flavor flavor-name  --nic"},{"line_number":202,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"4. Nova interacts with Neutron to get port’s details, including vnic type,"},{"line_number":205,"context_line":"neutwork_id, physical network, etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5d3f59ac_226e9d6f","line":202,"updated":"2021-04-27 11:27:37.000000000","message":"so here you need to add a note that if the device profile used in the port contians multipel devices\nthat this api requewst will fail with a 400.","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"14a9583f564e4852d71e239418b3f1bccbd7dbb9","unresolved":true,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"3. Thirdly, user can boot up a VM by:"},{"line_number":201,"context_line":"`openstack server create --image image-uuid -flavor flavor-name  --nic"},{"line_number":202,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"4. Nova interacts with Neutron to get port’s details, including vnic type,"},{"line_number":205,"context_line":"neutwork_id, physical network, etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"be2a83d7_f45f9fc5","line":202,"in_reply_to":"5d3f59ac_226e9d6f","updated":"2021-04-28 08:42:02.000000000","message":"we expose cyborg device profile details by doing this in API stage. I\u0027m ok with it, just raise the concern what we are going to do.  \nF.Y.I: \nopenstack accelerator device profile show d30efbf9-bdf5-45d1-9d34-74d720121971 -f json\n{\n\"created_at\": \"2021-01-14T08:11:32+00:00\",\n\"updated_at\": null,\n\"uuid\": \"d30efbf9-bdf5-45d1-9d34-74d720121971\",\n\"name\": \"new-sriovdp\",\n\"groups\": [\n{\n\"resources:CUSTOM_NIC\": \"1\",\n\"trait:CUSTOM_GTPV1\": \"required\",\n\"trait:CUSTOM_VF\": \"required\"\n}\n]\n}","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"596bd389777bf12e3456e89254a235f31b66fa94","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"3. Thirdly, user can boot up a VM by:"},{"line_number":201,"context_line":"`openstack server create --image image-uuid -flavor flavor-name  --nic"},{"line_number":202,"context_line":"port-id\u003dsriov_port1 test_vm1`"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"4. Nova interacts with Neutron to get port’s details, including vnic type,"},{"line_number":205,"context_line":"neutwork_id, physical network, etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"a04fa755_f13424ae","line":202,"in_reply_to":"be2a83d7_f45f9fc5","updated":"2021-04-29 03:54:36.000000000","message":"Done","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":true,"context_lines":[{"line_number":370,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":371,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":372,"context_line":"  trait into port_resource_request, then return to Nova."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":375,"context_line":"  is a sub-component for Neutron. It\u0027s better to let Nova interact with Cyborg"},{"line_number":376,"context_line":"  and Neutron equally."}],"source_content_type":"text/x-rst","patch_set":6,"id":"fc237648_bbcf575f","line":373,"updated":"2021-04-27 11:27:37.000000000","message":"can you add \"\n\"By retriving the device profile in neutron from cyborg this allows neutron to validate the device profile\ncontains only 1 device request. This check will instead be enforced by nova.\"","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"596bd389777bf12e3456e89254a235f31b66fa94","unresolved":false,"context_lines":[{"line_number":370,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":371,"context_line":"* Neutron calls Cyborg API to get device profile details and merge all RC and"},{"line_number":372,"context_line":"  trait into port_resource_request, then return to Nova."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"  It requires Neutron changes to interact with Cyborg, which seems that Cyborg"},{"line_number":375,"context_line":"  is a sub-component for Neutron. It\u0027s better to let Nova interact with Cyborg"},{"line_number":376,"context_line":"  and Neutron equally."}],"source_content_type":"text/x-rst","patch_set":6,"id":"396bb111_feee9c1b","line":373,"in_reply_to":"fc237648_bbcf575f","updated":"2021-04-29 03:54:36.000000000","message":"Done","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":true,"context_lines":[{"line_number":413,"context_line":"  code."},{"line_number":414,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":415,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"},{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."}],"source_content_type":"text/x-rst","patch_set":6,"id":"165b9ec7_8008a95d","line":416,"range":{"start_line":416,"start_character":27,"end_line":416,"end_character":36},"updated":"2021-04-27 11:27:37.000000000","message":"this should also be a 400 error not a 500.\nand we need to do this api check before we create the instance record.","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"14a9583f564e4852d71e239418b3f1bccbd7dbb9","unresolved":true,"context_lines":[{"line_number":413,"context_line":"  code."},{"line_number":414,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":415,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"},{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3cfc356a_ff46e87f","line":416,"range":{"start_line":416,"start_character":27,"end_line":416,"end_character":36},"in_reply_to":"165b9ec7_8008a95d","updated":"2021-04-28 08:42:02.000000000","message":"by checking in API stage we return 400. if choose later stage, a exception will return 500.\nrefer to L202 comments.","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f5170b1847a9e43e138337cb0ff0d4c6e631cd9d","unresolved":true,"context_lines":[{"line_number":413,"context_line":"  code."},{"line_number":414,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":415,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"},{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."}],"source_content_type":"text/x-rst","patch_set":6,"id":"cdf85a1f_d62c6881","line":416,"range":{"start_line":416,"start_character":27,"end_line":416,"end_character":36},"in_reply_to":"3cfc356a_ff46e87f","updated":"2021-04-28 13:54:10.000000000","message":"a 500 is never ok to intentionally return form the api.\n\nwe shoudl always check our constratisn and return a 4XX error.\nif the api returns a 500 at any point its a bug and may lagre operatrs have SLA guarentees built around this.\ne.g. if a customer gets a 500 its considered an outage not a user error and it cost operators money so we shoudl never return a 500 by design.","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"596bd389777bf12e3456e89254a235f31b66fa94","unresolved":false,"context_lines":[{"line_number":413,"context_line":"  code."},{"line_number":414,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":415,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"},{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bbce0b93_8de90ec7","line":416,"range":{"start_line":416,"start_character":27,"end_line":416,"end_character":36},"in_reply_to":"42055f1b_0bd4c767","updated":"2021-04-29 03:54:36.000000000","message":"Done","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"caf5eca1a0f3cb004262ee5c5ee62eb4fc75e305","unresolved":true,"context_lines":[{"line_number":413,"context_line":"  code."},{"line_number":414,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":415,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"},{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."}],"source_content_type":"text/x-rst","patch_set":6,"id":"42055f1b_0bd4c767","line":416,"range":{"start_line":416,"start_character":27,"end_line":416,"end_character":36},"in_reply_to":"cdf85a1f_d62c6881","updated":"2021-04-29 01:18:47.000000000","message":"thanks explain, good point.","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d7ebe3d35458cdc6c3fe53f7d3cb1e455184dd1","unresolved":true,"context_lines":[{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Security impact"},{"line_number":422,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a4ed74f_1b0b2fa8","line":419,"range":{"start_line":419,"start_character":32,"end_line":419,"end_character":41},"updated":"2021-04-27 11:27:37.000000000","message":"this should be a 400 error not a 403","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"596bd389777bf12e3456e89254a235f31b66fa94","unresolved":false,"context_lines":[{"line_number":416,"context_line":"  will be raised with HTTP 500 Error."},{"line_number":417,"context_line":"* If there are compute nodes with old service versions not support this"},{"line_number":418,"context_line":"  feature, the lifecycle operations of server with ports with device_profile"},{"line_number":419,"context_line":"  need to be rejected with HTTP 403 Error."},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Security impact"},{"line_number":422,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"87337bb9_1590c8e2","line":419,"range":{"start_line":419,"start_character":32,"end_line":419,"end_character":41},"in_reply_to":"9a4ed74f_1b0b2fa8","updated":"2021-04-29 03:54:36.000000000","message":"Done","commit_id":"fea83c494b63c754b73e73993c8ac2ad1d568448"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e20acb6f8d664405561d9bf83949bc688d400a6","unresolved":true,"context_lines":[{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  .. code-block:: RST"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    [dev-type]"},{"line_number":337,"context_line":"    physical_device_mappings \u003d physnet1:eth2|eth3"},{"line_number":338,"context_line":"    function_device_mappings \u003d GTPv1:eth3|eth2"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"41a95bfc_46692df7","line":338,"range":{"start_line":336,"start_character":4,"end_line":338,"end_character":46},"updated":"2021-04-29 11:27:07.000000000","message":"nit: this is a detial of the cyborg spec but i woudl advise against using the nic name ins any of your configs. you shoudl use the pci address instead but that is not relevent to nova so you can ignore this comment just wanted to express that the nic names are not the best choice of identifier.","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a4d9ccb6f71095962584adfc4697fe132e85626c","unresolved":true,"context_lines":[{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  .. code-block:: RST"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    [dev-type]"},{"line_number":337,"context_line":"    physical_device_mappings \u003d physnet1:eth2|eth3"},{"line_number":338,"context_line":"    function_device_mappings \u003d GTPv1:eth3|eth2"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"30e6dbc3_00a13eec","line":338,"range":{"start_line":336,"start_character":4,"end_line":338,"end_character":46},"in_reply_to":"41a95bfc_46692df7","updated":"2021-04-30 03:22:04.000000000","message":"thanks for your suggestion,we used to use pci address before, and change this to nic name for easier configuration, please refer to: https://review.opendev.org/c/openstack/cyborg-specs/+/774058.\nIf you have any comment, we can continue discuss in cyborg side.","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8d47d282d09c3e5acfdb931cad33946e99c8eb79","unresolved":true,"context_lines":[{"line_number":409,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":410,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":411,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":412,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":413,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":414,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"},{"line_number":415,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ee98415f_9774d102","line":412,"updated":"2021-04-29 13:38:24.000000000","message":"I think we also don\u0027t support attach/detach nic, right?","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a4d9ccb6f71095962584adfc4697fe132e85626c","unresolved":true,"context_lines":[{"line_number":409,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":410,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":411,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":412,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":413,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":414,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"},{"line_number":415,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4b6390fb_ea639b39","line":412,"in_reply_to":"4caac250_fae3d79b","updated":"2021-04-30 03:22:04.000000000","message":"good catch, we plan to support attach/detach in the future. Currently, this is not support, I will add this to unsupported operation.","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5978b00f7375bbf7a885a2fc1bd8b0e71e0d1b6a","unresolved":true,"context_lines":[{"line_number":409,"context_line":"  field once the port is bound with one instance(Neutorn API need to check the"},{"line_number":410,"context_line":"  binding:host-id before updating the \u0027device profile\u0027 field.). This"},{"line_number":411,"context_line":"  modification is only allowed when the port is unbound."},{"line_number":412,"context_line":"* Change Nova APIs for more operation supports. We plan to support"},{"line_number":413,"context_line":"  create/delete, start/stop, pause/unpause, rebuild, reboot, lock/unlock,"},{"line_number":414,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"},{"line_number":415,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4caac250_fae3d79b","line":412,"in_reply_to":"ee98415f_9774d102","updated":"2021-04-29 15:09:38.000000000","message":"we now supprot that for sriov inteface and ports with bandwith requests\nso it shoudl be possible to do with cyborg if we want to support it.","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e20acb6f8d664405561d9bf83949bc688d400a6","unresolved":true,"context_lines":[{"line_number":414,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"},{"line_number":415,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"},{"line_number":416,"context_line":"  operations for a VM having an \"accelerator-direct\" vnic type port."},{"line_number":417,"context_line":"  The unsupported operations will be rejected now with HTTP 403 Error"},{"line_number":418,"context_line":"  code."},{"line_number":419,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":420,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"}],"source_content_type":"text/x-rst","patch_set":7,"id":"485c4438_cc782946","line":417,"range":{"start_line":417,"start_character":60,"end_line":417,"end_character":64},"updated":"2021-04-29 11:27:07.000000000","message":"sorry missed this before this should also be a 400. as with line 424 below\nmaybe we coudl jsut remove this line or lines 422-424\n\nthey are more or less saying the same thing.\n\nif the version of nova is too old to support an lifecycle operation(either because of old nova or we have not implemetned it yet) we will return a 400 error with a message saying the oepration is unsupproted.\n\n\nif you change this to 400 or delete this or the last bullet point i think im +2 on the spec otherwise so ill leave it to you to chose which of those 3 options works best for you.","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a4d9ccb6f71095962584adfc4697fe132e85626c","unresolved":true,"context_lines":[{"line_number":414,"context_line":"  rescue/unrescue for a VM having an \"accelerator-direct\" vnic type port,"},{"line_number":415,"context_line":"  however we don\u0027t support evacuate, resize, migration, shelve/unshelve"},{"line_number":416,"context_line":"  operations for a VM having an \"accelerator-direct\" vnic type port."},{"line_number":417,"context_line":"  The unsupported operations will be rejected now with HTTP 403 Error"},{"line_number":418,"context_line":"  code."},{"line_number":419,"context_line":"* Since neutron port can not be associated to multiple NICs, only the device"},{"line_number":420,"context_line":"  profile with one device group is accepted to a port. Otherwise an exception"}],"source_content_type":"text/x-rst","patch_set":7,"id":"54b25cd2_d673ddaa","line":417,"range":{"start_line":417,"start_character":60,"end_line":417,"end_character":64},"in_reply_to":"485c4438_cc782946","updated":"2021-04-30 03:22:04.000000000","message":"thanks for the explanation, I will try to re-phrase this to make it more clear.","commit_id":"9d48835997735a268fc6bece2b128b82ca7b5f6e"}]}
