)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":11,"context_line":"1) create device profile:"},{"line_number":12,"context_line":"2) create port with Cyborg backend device and set vnic type:"},{"line_number":13,"context_line":"   neutron port-create public --name test\\"},{"line_number":14,"context_line":"                     --device-profile\u003dSMART_NIC --vnic-type\u003daccelorator-direct"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3) boot instance with specified port with backend device:"},{"line_number":17,"context_line":"   nova boot test --flavor \u003cflavor name\u003e --image \u003cimage name\u003e\\"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"eeeaeacb_aad25807","line":14,"range":{"start_line":14,"start_character":60,"end_line":14,"end_character":71},"updated":"2021-02-24 11:46:17.000000000","message":"accelerator","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"2f03aedaf0b38188a73a662c572331eab6a67046","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1) create device profile:"},{"line_number":12,"context_line":"2) create port with Cyborg backend device and set vnic type:"},{"line_number":13,"context_line":"   neutron port-create public --name test\\"},{"line_number":14,"context_line":"                     --device-profile\u003dSMART_NIC --vnic-type\u003daccelorator-direct"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3) boot instance with specified port with backend device:"},{"line_number":17,"context_line":"   nova boot test --flavor \u003cflavor name\u003e --image \u003cimage name\u003e\\"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"18fa1923_041d2dad","line":14,"range":{"start_line":14,"start_character":60,"end_line":14,"end_character":71},"in_reply_to":"eeeaeacb_aad25807","updated":"2021-03-02 08:04:40.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"727c4a3e19e6473939e727ac546d2f6004430dd8","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Code flow summary:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"1) On API stage, device profile \"SMART_NIC\" is used to create an ARQ."},{"line_number":23,"context_line":"   And saved the ARQ UUID to NetworkRequest."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"2) After schedule instance come to a host, Nova updates the ARQ binding info"},{"line_number":26,"context_line":"   to Cyborg."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"f98cef40_57f2d085","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":0},"updated":"2021-03-02 07:28:57.000000000","message":"you should update the commit message, since you move the ARQ creation to conductor.","commit_id":"2dd7a01030fa61a48fa4f89f6af2f9acea2550d9"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fa5d937d6c695d4c6ab2e437007cd590219eeb2c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Code flow summary:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"1) On API stage, device profile \"SMART_NIC\" is used to create an ARQ."},{"line_number":23,"context_line":"   And saved the ARQ UUID to NetworkRequest."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"2) After schedule instance come to a host, Nova updates the ARQ binding info"},{"line_number":26,"context_line":"   to Cyborg."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"b634a8be_97bcc7c4","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":0},"in_reply_to":"f98cef40_57f2d085","updated":"2021-03-02 07:41:43.000000000","message":"Done","commit_id":"2dd7a01030fa61a48fa4f89f6af2f9acea2550d9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2089e55e29592b630d2b497e39c8a27ceb88d752","unresolved":true,"context_lines":[{"line_number":24,"context_line":"2) After schedule instance come to a host, Conductor create ARQ and updates"},{"line_number":25,"context_line":"   the ARQ binding info to Cyborg."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"3) Compute also updating the port binding info by the device info retrieved"},{"line_number":28,"context_line":"   from Cyborg."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"4) The virt drive passthrough the PCI devices to VM."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"b2440fdb_54d66ac7","line":27,"updated":"2021-03-08 15:58:50.000000000","message":"Have you tested that such port binding succeeds in neutron? I think it will fail as none of the mechanism driver states that is it supports the new accelerator-direct vnic_type. Please propose a fix in neutron and add a Depends-On to this commit message pointing to the neutron support.","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"f21b3d0eafa9688ecab12dbc42f494663cd8a608","unresolved":false,"context_lines":[{"line_number":24,"context_line":"2) After schedule instance come to a host, Conductor create ARQ and updates"},{"line_number":25,"context_line":"   the ARQ binding info to Cyborg."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"3) Compute also updating the port binding info by the device info retrieved"},{"line_number":28,"context_line":"   from Cyborg."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"4) The virt drive passthrough the PCI devices to VM."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"df7ea800_0d2b124f","line":27,"in_reply_to":"15d40445_85942c7f","updated":"2021-03-09 10:38:43.000000000","message":"It\u0027s been fixed: https://review.opendev.org/c/openstack/neutron/+/779292","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0670e3a61d269fe79dc48b5e0fe36b3fc7683921","unresolved":false,"context_lines":[{"line_number":24,"context_line":"2) After schedule instance come to a host, Conductor create ARQ and updates"},{"line_number":25,"context_line":"   the ARQ binding info to Cyborg."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"3) Compute also updating the port binding info by the device info retrieved"},{"line_number":28,"context_line":"   from Cyborg."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"4) The virt drive passthrough the PCI devices to VM."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"23351acb_268bf472","line":27,"in_reply_to":"b184a873_863ad076","updated":"2021-03-12 07:53:13.000000000","message":"It\u0027s merged.","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0f8f774f823237b09f4adf6e166cef9b6751c576","unresolved":false,"context_lines":[{"line_number":24,"context_line":"2) After schedule instance come to a host, Conductor create ARQ and updates"},{"line_number":25,"context_line":"   the ARQ binding info to Cyborg."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"3) Compute also updating the port binding info by the device info retrieved"},{"line_number":28,"context_line":"   from Cyborg."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"4) The virt drive passthrough the PCI devices to VM."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"15d40445_85942c7f","line":27,"in_reply_to":"b2440fdb_54d66ac7","updated":"2021-03-09 00:05:45.000000000","message":"I do. I merged the support patch to my local repo long time ago. refer to:https://review.opendev.org/c/openstack/neutron/+/779292/1/neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py\n\nI do need trying to poke that patch also.\n\ntesting report:\nhttps://wiki.openstack.org/wiki/Cyborg/TestReport/IntelNic","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":false,"context_lines":[{"line_number":24,"context_line":"2) After schedule instance come to a host, Conductor create ARQ and updates"},{"line_number":25,"context_line":"   the ARQ binding info to Cyborg."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"3) Compute also updating the port binding info by the device info retrieved"},{"line_number":28,"context_line":"   from Cyborg."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"4) The virt drive passthrough the PCI devices to VM."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"b184a873_863ad076","line":27,"in_reply_to":"df7ea800_0d2b124f","updated":"2021-03-11 14:16:10.000000000","message":"yes right now this would fail at port binidng stage until \nhttps://review.opendev.org/c/openstack/neutron/+/779292 is merged.","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Implements: blueprint sriov-smartnic-support"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron-lib/+/768324"},{"line_number":35,"context_line":"Depends-On: https://review.opendev.org/q/topic:%22bug%252F1906602%22+"},{"line_number":36,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/758942"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"4f474f79_33fc5444","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":71},"updated":"2021-03-11 14:16:10.000000000","message":"this is now merged but you need to add https://review.opendev.org/c/openstack/neutron/+/779292 for the sriov-nic-agent","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0670e3a61d269fe79dc48b5e0fe36b3fc7683921","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Implements: blueprint sriov-smartnic-support"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron-lib/+/768324"},{"line_number":35,"context_line":"Depends-On: https://review.opendev.org/q/topic:%22bug%252F1906602%22+"},{"line_number":36,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/758942"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"48438af5_e69a8e2b","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":71},"in_reply_to":"4f474f79_33fc5444","updated":"2021-03-12 07:53:13.000000000","message":"we use a unchanged sriov-agent to do testing, so experimentally i prove that not necessarily modified the sriov-agent.(code review showed that direct-physical(PF) needed be treat differently, but direct-physical is not supported, and this is document in release notes.)","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"}],"nova/accelerator/cyborg.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":"    req_id \u003d \"device_profile_\" + str(dp_group_id)"},{"line_number":71,"context_line":"    if owner:"},{"line_number":72,"context_line":"        req_id \u003d req_id + str(owner)"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"a316a5f8_b02a9c5b","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":36},"updated":"2021-02-24 11:46:17.000000000","message":"this feels hackish to encode two pieces of information into the same field","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":"    req_id \u003d \"device_profile_\" + str(dp_group_id)"},{"line_number":71,"context_line":"    if owner:"},{"line_number":72,"context_line":"        req_id \u003d req_id + str(owner)"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1926631e_3fe4464b","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":36},"in_reply_to":"a316a5f8_b02a9c5b","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0da7442fd71eb51ecebb57b5ed158cd6e8ec8dc9","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":"    req_id \u003d \"device_profile_\" + str(dp_group_id)"},{"line_number":71,"context_line":"    if owner:"},{"line_number":72,"context_line":"        req_id \u003d req_id + str(owner)"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"0f4a6778_a526e061","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":36},"in_reply_to":"a316a5f8_b02a9c5b","updated":"2021-02-25 07:29:14.000000000","message":"before we have only one type of device profile which passed with flavor.extra_spec, now we have another type of device profile passed with port\u0027s device profile. To avoid the conflict the requester_id, we use the \"owner\" to distinguish these 2 types. \nFor example:\nthe one passed with flavor has \"device_profile_0\" as the requester_id.\nthe one passed with port has \"device_profile_0_[port_id]\" as the requester_id.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    \"\"\"Return the value to use in objects.RequestGroup.requester_id."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The requester_id is used to match device profile groups from"},{"line_number":66,"context_line":"    Cyborg to the request groups in request spec. The request group should"},{"line_number":67,"context_line":"    be unique for each port\u0027s device provider."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"c3b60daf_d9facd0c","line":67,"range":{"start_line":66,"start_character":50,"end_line":67,"end_character":46},"updated":"2021-02-26 03:24:24.000000000","message":"This method isn\u0027t specific for port, also for acccelerator from extra spec. So the owner shouldn\u0027t only be used by port.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6684d7fc5ac9a61c169e0e9da59c6d49d20ac83e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"\"\"Return the value to use in objects.RequestGroup.requester_id."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The requester_id is used to match device profile groups from"},{"line_number":66,"context_line":"    Cyborg to the request groups in request spec. The request group should"},{"line_number":67,"context_line":"    be unique for each port\u0027s device provider."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"6dbdeee3_a501374f","line":67,"range":{"start_line":66,"start_character":50,"end_line":67,"end_character":46},"in_reply_to":"84a3364f_40162823","updated":"2021-02-26 09:32:34.000000000","message":"dp_group_id is different if dp contain multiple groups, currently we only support one single dp in extra_specs. We can change this to \"the requester id should be unique for each request group\", is it what you wanna say @alex?","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"d95efa80b81de1abfe2a0a92f349ab14d2096ec5","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    \"\"\"Return the value to use in objects.RequestGroup.requester_id."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The requester_id is used to match device profile groups from"},{"line_number":66,"context_line":"    Cyborg to the request groups in request spec. The request group should"},{"line_number":67,"context_line":"    be unique for each port\u0027s device provider."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"191e19ce_4ca50ed1","line":67,"range":{"start_line":66,"start_character":50,"end_line":67,"end_character":46},"in_reply_to":"c3b60daf_d9facd0c","updated":"2021-02-26 06:03:41.000000000","message":"+1","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"\"\"Return the value to use in objects.RequestGroup.requester_id."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The requester_id is used to match device profile groups from"},{"line_number":66,"context_line":"    Cyborg to the request groups in request spec. The request group should"},{"line_number":67,"context_line":"    be unique for each port\u0027s device provider."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"84a3364f_40162823","line":67,"range":{"start_line":66,"start_character":50,"end_line":67,"end_character":46},"in_reply_to":"c3b60daf_d9facd0c","updated":"2021-02-26 07:59:31.000000000","message":"dp_group_id is different if spec contain multiple dp, fix me Xin-ran.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":66,"context_line":"    Cyborg to the request groups in request spec. The request group should"},{"line_number":67,"context_line":"    be unique for each port\u0027s device provider."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"}],"source_content_type":"text/x-python","patch_set":11,"id":"17f40969_fb90f6b6","line":69,"updated":"2021-02-26 03:24:24.000000000","message":"add comment for `owner`","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    Cyborg to the request groups in request spec. The request group should"},{"line_number":67,"context_line":"    be unique for each port\u0027s device provider."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a5e3db2_2fb49ab9","line":69,"in_reply_to":"17f40969_fb90f6b6","updated":"2021-02-26 07:59:31.000000000","message":"Done","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"847285bb_220eb175","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":50},"updated":"2021-02-26 03:24:24.000000000","message":"@Xinran, one question, it isn\u0027t related to this patch. If you want to attach more than two accelerators by extra spec, then this still doesn\u0027t work. is it the initial goal for cyborg-nova integration is only support one accelerator per VM?","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"2f03aedaf0b38188a73a662c572331eab6a67046","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"171439bc_78c22d45","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":50},"in_reply_to":"38a1f273_958a76d9","updated":"2021-03-02 08:04:40.000000000","message":"Done","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fb36c8b2_ec406280","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":50},"in_reply_to":"847285bb_220eb175","updated":"2021-02-26 07:59:31.000000000","message":"p_group_id is different, guess.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"d95efa80b81de1abfe2a0a92f349ab14d2096ec5","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ccdc4aa7_dfe59cdd","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":50},"in_reply_to":"847285bb_220eb175","updated":"2021-02-26 06:03:41.000000000","message":"we can only filled one device profile in extra spec. if users wanna attach more than one, he/she should use one device profile with multiple groups.\nfor example:\n{\n  \"name\": \"dp01\",\n  \"groups\": [\n    {\n      \"resources:CUSTOM_NIC\": \"1\",\n      \"trait:CUSTOM_GTPV1\": \"required\",\n      \"trait:CUSTOM_VF\": \"required\"\n    },\n    {\n      \"resources:FPGA\": \"1\",\n    }\n  ]\n}","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"90f82e3fb61cd2d7b599b8e446d21af9669d081d","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"369008ef_3f73961c","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":50},"in_reply_to":"ccdc4aa7_dfe59cdd","updated":"2021-02-26 06:46:31.000000000","message":"thanks, hope we have explicitly reject for multiple dp. But that isn\u0027t the scope of this patch","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6684d7fc5ac9a61c169e0e9da59c6d49d20ac83e","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"38a1f273_958a76d9","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":50},"in_reply_to":"fb36c8b2_ec406280","updated":"2021-02-26 09:32:34.000000000","message":"@alex, currently the dp field in extra_spec is a string, we can get an error when nova tries to get dp by name. \n\n@yonglihe, yes, if we use the dp as the above, the group id is diffirent","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9d0bacbd_b18c2f59","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":46},"updated":"2021-02-26 03:24:24.000000000","message":"you can just simple as \"(str(owner) if owner else \u0027\u0027)\"","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    :param dp_group_id: The index of the request group in the device profile."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":72,"context_line":"        (\u0027\u0027 if owner is None else str(owner)))"},{"line_number":73,"context_line":"    return req_id"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"381514d0_d4d1d6c3","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":46},"in_reply_to":"9d0bacbd_b18c2f59","updated":"2021-02-26 07:59:31.000000000","message":"Done","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        return arqs"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def create_arqs_and_match_resource_providers("},{"line_number":184,"context_line":"            self, dp_name, rg_rp_map\u003dNone, owner\u003dNone):"},{"line_number":185,"context_line":"        \"\"\"Create ARQs and match them with request groups and thereby"},{"line_number":186,"context_line":"          determine their corresponding RPs."},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9c406d56_b90350eb","line":184,"range":{"start_line":184,"start_character":43,"end_line":184,"end_character":53},"updated":"2021-02-26 03:24:24.000000000","message":"I didn\u0027t see you are using the \u0027owner\u0027 parameter.\n\nBut based on guessing, I guess you want to leave this for the future to support mutiliple device profile in extra specs per VM?","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0b324a086c774c8dd9af3d8f95247b84b6e1f19e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        return arqs"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def create_arqs_and_match_resource_providers("},{"line_number":184,"context_line":"            self, dp_name, rg_rp_map\u003dNone, owner\u003dNone):"},{"line_number":185,"context_line":"        \"\"\"Create ARQs and match them with request groups and thereby"},{"line_number":186,"context_line":"          determine their corresponding RPs."},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"51f2a0d2_bbaeed4b","line":184,"range":{"start_line":184,"start_character":43,"end_line":184,"end_character":53},"in_reply_to":"24325c92_9aabc444","updated":"2021-02-26 08:03:29.000000000","message":"I mean the calling side....","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"d95efa80b81de1abfe2a0a92f349ab14d2096ec5","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        return arqs"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def create_arqs_and_match_resource_providers("},{"line_number":184,"context_line":"            self, dp_name, rg_rp_map\u003dNone, owner\u003dNone):"},{"line_number":185,"context_line":"        \"\"\"Create ARQs and match them with request groups and thereby"},{"line_number":186,"context_line":"          determine their corresponding RPs."},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"d675f280_b3f9b79f","line":184,"range":{"start_line":184,"start_character":43,"end_line":184,"end_character":53},"in_reply_to":"9c406d56_b90350eb","updated":"2021-02-26 06:03:41.000000000","message":"+1","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        return arqs"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def create_arqs_and_match_resource_providers("},{"line_number":184,"context_line":"            self, dp_name, rg_rp_map\u003dNone, owner\u003dNone):"},{"line_number":185,"context_line":"        \"\"\"Create ARQs and match them with request groups and thereby"},{"line_number":186,"context_line":"          determine their corresponding RPs."},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"24325c92_9aabc444","line":184,"range":{"start_line":184,"start_character":43,"end_line":184,"end_character":53},"in_reply_to":"9c406d56_b90350eb","updated":"2021-02-26 07:59:31.000000000","message":"It used in line 201. -:)","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"           :param dp_name: string: device profile name"},{"line_number":135,"context_line":"               Expected to be valid, not None or \u0027\u0027."},{"line_number":136,"context_line":"           :returns: [objects.RequestGroup]"},{"line_number":137,"context_line":"           :raises: DeviceProfileError"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        dp_list \u003d self._get_device_profile_list(dp_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9c7094f1_ccbb33de","line":136,"updated":"2021-03-11 14:16:10.000000000","message":"missing owner","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"89fe8b1f97ad85c7b823d9a25a97166ceca2d653","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"           :param dp_name: string: device profile name"},{"line_number":135,"context_line":"               Expected to be valid, not None or \u0027\u0027."},{"line_number":136,"context_line":"           :returns: [objects.RequestGroup]"},{"line_number":137,"context_line":"           :raises: DeviceProfileError"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        dp_list \u003d self._get_device_profile_list(dp_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"59bda946_99844252","line":136,"in_reply_to":"9c7094f1_ccbb33de","updated":"2021-06-25 07:29:28.000000000","message":"Done","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        :param dp_name: Device profile name"},{"line_number":190,"context_line":"        :param rg_rp_map: Request group - Resource Provider map"},{"line_number":191,"context_line":"            {requester_id: [resource_provider_uuid]}"},{"line_number":192,"context_line":"        :returns:"},{"line_number":193,"context_line":"            [arq], with each ARQ associated with an RP"},{"line_number":194,"context_line":"        :raises: DeviceProfileError, AcceleratorRequestOpFailed"}],"source_content_type":"text/x-python","patch_set":18,"id":"31fe9d1c_23e02fcf","line":191,"updated":"2021-03-11 14:16:10.000000000","message":"your missing the owner param","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"89fe8b1f97ad85c7b823d9a25a97166ceca2d653","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        :param dp_name: Device profile name"},{"line_number":190,"context_line":"        :param rg_rp_map: Request group - Resource Provider map"},{"line_number":191,"context_line":"            {requester_id: [resource_provider_uuid]}"},{"line_number":192,"context_line":"        :returns:"},{"line_number":193,"context_line":"            [arq], with each ARQ associated with an RP"},{"line_number":194,"context_line":"        :raises: DeviceProfileError, AcceleratorRequestOpFailed"}],"source_content_type":"text/x-python","patch_set":18,"id":"35c915b2_fe7e23f2","line":191,"in_reply_to":"31fe9d1c_23e02fcf","updated":"2021-06-25 07:29:28.000000000","message":"Done","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    :owner: The port UUID if the dp request by port."},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":73,"context_line":"        (str(owner) if owner else \u0027\u0027))"},{"line_number":74,"context_line":"    return req_id"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dc638963_c07367e0","line":73,"updated":"2021-03-11 13:59:15.000000000","message":"it feels hackish that we encode information into stings. As far as I see we never parse the parts back from it so it is just to generate something unique from other unique ids. So I can accept this.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    :owner: The port UUID if the dp request by port."},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    req_id \u003d (\"device_profile_\" + str(dp_group_id) +"},{"line_number":73,"context_line":"        (str(owner) if owner else \u0027\u0027))"},{"line_number":74,"context_line":"    return req_id"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7f7dec02_90e3dc50","line":73,"in_reply_to":"dc638963_c07367e0","updated":"2021-03-31 08:27:30.000000000","message":"yeah, we only use it as a unique id and never parse it back.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"}],"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2697,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":2698,"context_line":"        else:"},{"line_number":2699,"context_line":"            arqs \u003d resolved_arqs"},{"line_number":2700,"context_line":"        # only arqs from flavor is matter"},{"line_number":2701,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2702,"context_line":""},{"line_number":2703,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":9,"id":"755b289a_02303f85","line":2700,"updated":"2021-02-24 11:46:17.000000000","message":"why do we bind and wait for all the arqs but only return falvory ones?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":false,"context_lines":[{"line_number":2697,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":2698,"context_line":"        else:"},{"line_number":2699,"context_line":"            arqs \u003d resolved_arqs"},{"line_number":2700,"context_line":"        # only arqs from flavor is matter"},{"line_number":2701,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2702,"context_line":""},{"line_number":2703,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":9,"id":"0a5fa710_4a268907","line":2700,"in_reply_to":"705799ea_8d9f221d","updated":"2021-02-26 07:59:31.000000000","message":"Flavor arq\u0027s device should passthrough as hostdev, and port arq device should passthrough as interface. \n\nAny arq return from here will be passthrough as hosdev: the arq_uuids keeping a list, any device in this list is come from flavor and should be hostdev.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2697,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":2698,"context_line":"        else:"},{"line_number":2699,"context_line":"            arqs \u003d resolved_arqs"},{"line_number":2700,"context_line":"        # only arqs from flavor is matter"},{"line_number":2701,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2702,"context_line":""},{"line_number":2703,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":9,"id":"705799ea_8d9f221d","line":2700,"in_reply_to":"755b289a_02303f85","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":2698,"context_line":"        # exclude the arqs belong to ports"},{"line_number":2699,"context_line":"        # arq_uuids contains all arqs uuid for passthrough devices."},{"line_number":2700,"context_line":"        # arq_uuids guide virt driver inserted hostdev to server."},{"line_number":2701,"context_line":"        # ports devices attach to server by port binding."},{"line_number":2702,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9dab4048_a464f613","line":2701,"range":{"start_line":2701,"start_character":8,"end_line":2701,"end_character":57},"updated":"2021-03-11 14:16:10.000000000","message":"this is not entirely coorect.\n\nwe dont set teh owner filed on a port until we bind the port to a host but\nthat is slightly different then attachment.","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"89fe8b1f97ad85c7b823d9a25a97166ceca2d653","unresolved":false,"context_lines":[{"line_number":2698,"context_line":"        # exclude the arqs belong to ports"},{"line_number":2699,"context_line":"        # arq_uuids contains all arqs uuid for passthrough devices."},{"line_number":2700,"context_line":"        # arq_uuids guide virt driver inserted hostdev to server."},{"line_number":2701,"context_line":"        # ports devices attach to server by port binding."},{"line_number":2702,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fad15eeb_5169b6e5","line":2701,"range":{"start_line":2701,"start_character":8,"end_line":2701,"end_character":57},"in_reply_to":"9dab4048_a464f613","updated":"2021-06-25 07:29:28.000000000","message":"Refactored base on everyone\u0027s comments.","commit_id":"49ff31cce5940d810e507d90189ed924de720f9c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2698,"context_line":"        # exclude the arqs belong to ports"},{"line_number":2699,"context_line":"        # arq_uuids contains all arqs uuid for passthrough devices."},{"line_number":2700,"context_line":"        # arq_uuids guide virt driver inserted hostdev to server."},{"line_number":2701,"context_line":"        # ports devices attach to server by port binding."},{"line_number":2702,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5afc5d62_517999c0","line":2701,"updated":"2021-03-11 13:59:15.000000000","message":"While this is true it makes an awful lot of unwanted coupling between this function and the virt driver implementation.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2ea5f485a987201ff11c8c04b3e73f1ed62a3d17","unresolved":true,"context_lines":[{"line_number":2698,"context_line":"        # exclude the arqs belong to ports"},{"line_number":2699,"context_line":"        # arq_uuids contains all arqs uuid for passthrough devices."},{"line_number":2700,"context_line":"        # arq_uuids guide virt driver inserted hostdev to server."},{"line_number":2701,"context_line":"        # ports devices attach to server by port binding."},{"line_number":2702,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":20,"id":"fb800dfb_1f3db37f","line":2701,"in_reply_to":"5afc5d62_517999c0","updated":"2021-03-18 07:12:51.000000000","message":"Discuss with Yongli offline about this. In the end, I think the definition of function is waiting all the arqs and return all the arqs. And we should wait for all the arqs binding finished before calling the neutron to update the port binding-profile, otherwise we may have race issue. So we should call this method before line 2546. And then we should filter out the port related arqs, then pass those arqs to the \u0027_build_networks_for_instance\u0027 method. And other arqs pass to driver.spawn\u0027s accel_info parameter.\n\nThen we decouple this method with virt driver.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2698,"context_line":"        # exclude the arqs belong to ports"},{"line_number":2699,"context_line":"        # arq_uuids contains all arqs uuid for passthrough devices."},{"line_number":2700,"context_line":"        # arq_uuids guide virt driver inserted hostdev to server."},{"line_number":2701,"context_line":"        # ports devices attach to server by port binding."},{"line_number":2702,"context_line":"        return [arq for arq in arqs if arq[\u0027uuid\u0027] in arq_uuids]"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def _cleanup_allocated_networks(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":20,"id":"932d434a_8fedafc1","line":2701,"in_reply_to":"fb800dfb_1f3db37f","updated":"2021-03-31 08:27:30.000000000","message":"done, thanks Gibi and alex\u0027s good idea.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4f647eed4c26491a521da01e3906d73a94c2160c","unresolved":true,"context_lines":[{"line_number":2539,"context_line":"            # ARQs created for instance or ports."},{"line_number":2540,"context_line":"            # Now port do not bound to port yet."},{"line_number":2541,"context_line":"            # unbind port won\u0027t clean port ARQs."},{"line_number":2542,"context_line":"            compute_utils.delete_arqs_if_needed("},{"line_number":2543,"context_line":"                context, instance, force\u003dTrue)"},{"line_number":2544,"context_line":"            msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"},{"line_number":2545,"context_line":"            raise exception.BuildAbortException("}],"source_content_type":"text/x-python","patch_set":24,"id":"cb83d536_5fad4f75","line":2542,"updated":"2021-05-28 08:42:22.000000000","message":"there also has the case the arq bind failed. so we can\u0027t cleanup them just with instance uuid. we should pass the arq uuids into it.","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"802a2aff950e024b66e26c3a583f1ed5611de044","unresolved":false,"context_lines":[{"line_number":2539,"context_line":"            # ARQs created for instance or ports."},{"line_number":2540,"context_line":"            # Now port do not bound to port yet."},{"line_number":2541,"context_line":"            # unbind port won\u0027t clean port ARQs."},{"line_number":2542,"context_line":"            compute_utils.delete_arqs_if_needed("},{"line_number":2543,"context_line":"                context, instance, force\u003dTrue)"},{"line_number":2544,"context_line":"            msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"},{"line_number":2545,"context_line":"            raise exception.BuildAbortException("}],"source_content_type":"text/x-python","patch_set":24,"id":"fa3a4c3d_481eb151","line":2542,"in_reply_to":"cb83d536_5fad4f75","updated":"2021-06-02 07:01:47.000000000","message":"Done","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"802a2aff950e024b66e26c3a583f1ed5611de044","unresolved":false,"context_lines":[{"line_number":2644,"context_line":"                        # Port bind may not successful."},{"line_number":2645,"context_line":"                        # unbind port won\u0027t clean port ARQs."},{"line_number":2646,"context_line":"                        compute_utils.delete_arqs_if_needed("},{"line_number":2647,"context_line":"                            context, instance, force\u003dTrue)"},{"line_number":2648,"context_line":""},{"line_number":2649,"context_line":"    def _get_bound_arq_resources(self, context, instance, arq_uuids):"},{"line_number":2650,"context_line":"        \"\"\"Get bound accelerator requests."}],"source_content_type":"text/x-python","patch_set":24,"id":"04111b9d_e3d1ddd0","line":2647,"updated":"2021-06-02 07:01:47.000000000","message":"fixed it too.","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"81c1cb5b50c5045dc821b9c306c0f14cb9d3fec9","unresolved":true,"context_lines":[{"line_number":2734,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":2735,"context_line":"        else:"},{"line_number":2736,"context_line":"            arqs \u003d resolved_arqs"},{"line_number":2737,"context_line":""},{"line_number":2738,"context_line":"        return arqs"},{"line_number":2739,"context_line":""},{"line_number":2740,"context_line":"    def _split_network_arqs(self, arqs, requested_networks):"}],"source_content_type":"text/x-python","patch_set":29,"id":"930fc9f4_f581f0e3","line":2737,"updated":"2021-06-16 10:15:26.000000000","message":"unrelated change","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1e845f77b633641135002d2d76aae72a280096af","unresolved":false,"context_lines":[{"line_number":2734,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":2735,"context_line":"        else:"},{"line_number":2736,"context_line":"            arqs \u003d resolved_arqs"},{"line_number":2737,"context_line":""},{"line_number":2738,"context_line":"        return arqs"},{"line_number":2739,"context_line":""},{"line_number":2740,"context_line":"    def _split_network_arqs(self, arqs, requested_networks):"}],"source_content_type":"text/x-python","patch_set":29,"id":"ef176042_82821d2f","line":2737,"in_reply_to":"930fc9f4_f581f0e3","updated":"2021-06-17 07:33:12.000000000","message":"Done","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"}],"nova/compute/utils.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bcf2f0891ebd092d5a0915cba0e339a1e329c768","unresolved":true,"context_lines":[{"line_number":1553,"context_line":"    LOG.debug(\u0027Calling Cyborg to delete ARQs for instance %(instance)s\u0027,"},{"line_number":1554,"context_line":"              {\u0027instance\u0027: instance.uuid})"},{"line_number":1555,"context_line":"    try:"},{"line_number":1556,"context_line":"        cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":1557,"context_line":"    except exception.AcceleratorRequestOpFailed as e:"},{"line_number":1558,"context_line":"        LOG.exception(\u0027Failed to delete accelerator requests for \u0027"},{"line_number":1559,"context_line":"                      \u0027instance %s. Exception: %s\u0027, instance.uuid, e)"}],"source_content_type":"text/x-python","patch_set":24,"id":"01aa6022_d646cb86","line":1556,"updated":"2021-05-28 06:45:54.000000000","message":"if there a case you create arq sucessful, but you fail at binding arq, in that case, you can\u0027t cleanup arq just by instance uuid","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"802a2aff950e024b66e26c3a583f1ed5611de044","unresolved":false,"context_lines":[{"line_number":1553,"context_line":"    LOG.debug(\u0027Calling Cyborg to delete ARQs for instance %(instance)s\u0027,"},{"line_number":1554,"context_line":"              {\u0027instance\u0027: instance.uuid})"},{"line_number":1555,"context_line":"    try:"},{"line_number":1556,"context_line":"        cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":1557,"context_line":"    except exception.AcceleratorRequestOpFailed as e:"},{"line_number":1558,"context_line":"        LOG.exception(\u0027Failed to delete accelerator requests for \u0027"},{"line_number":1559,"context_line":"                      \u0027instance %s. Exception: %s\u0027, instance.uuid, e)"}],"source_content_type":"text/x-python","patch_set":24,"id":"d86ef04b_a1a8129a","line":1556,"in_reply_to":"01aa6022_d646cb86","updated":"2021-06-02 07:01:47.000000000","message":"Done","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"81c1cb5b50c5045dc821b9c306c0f14cb9d3fec9","unresolved":true,"context_lines":[{"line_number":1557,"context_line":"                      \u0027instance %s. Exception: %s\u0027, instance.uuid, e)"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    if arq_uuids:"},{"line_number":1560,"context_line":"        LOG.debug(\u0027Calling Cyborg to delete ARQs by uuids for\u0027"},{"line_number":1561,"context_line":"              \u0027 instance %(instance)s\u0027,"},{"line_number":1562,"context_line":"              {\u0027instance\u0027: instance.uuid})"},{"line_number":1563,"context_line":"        try:"},{"line_number":1564,"context_line":"            cyclient.delete_arqs_by_uuid(arq_uuids)"},{"line_number":1565,"context_line":"        except exception.AcceleratorRequestOpFailed as e:"}],"source_content_type":"text/x-python","patch_set":29,"id":"22293061_da00045b","line":1562,"range":{"start_line":1560,"start_character":8,"end_line":1562,"end_character":41},"updated":"2021-06-16 10:15:26.000000000","message":"we should log the arq uuid","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1e845f77b633641135002d2d76aae72a280096af","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"                      \u0027instance %s. Exception: %s\u0027, instance.uuid, e)"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    if arq_uuids:"},{"line_number":1560,"context_line":"        LOG.debug(\u0027Calling Cyborg to delete ARQs by uuids for\u0027"},{"line_number":1561,"context_line":"              \u0027 instance %(instance)s\u0027,"},{"line_number":1562,"context_line":"              {\u0027instance\u0027: instance.uuid})"},{"line_number":1563,"context_line":"        try:"},{"line_number":1564,"context_line":"            cyclient.delete_arqs_by_uuid(arq_uuids)"},{"line_number":1565,"context_line":"        except exception.AcceleratorRequestOpFailed as e:"}],"source_content_type":"text/x-python","patch_set":29,"id":"38503416_aa1741b9","line":1562,"range":{"start_line":1560,"start_character":8,"end_line":1562,"end_character":41},"in_reply_to":"22293061_da00045b","updated":"2021-06-17 07:33:12.000000000","message":"Done","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"81c1cb5b50c5045dc821b9c306c0f14cb9d3fec9","unresolved":true,"context_lines":[{"line_number":1564,"context_line":"            cyclient.delete_arqs_by_uuid(arq_uuids)"},{"line_number":1565,"context_line":"        except exception.AcceleratorRequestOpFailed as e:"},{"line_number":1566,"context_line":"            LOG.exception(\u0027ARQ does not exist while deleted for \u0027"},{"line_number":1567,"context_line":"                      \u0027instance %s. Exception: %s\u0027, instance.uuid, e)"}],"source_content_type":"text/x-python","patch_set":29,"id":"aa33f2ec_c95e44fe","line":1567,"updated":"2021-06-16 10:15:26.000000000","message":"You should log the arq uuid at here also","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1e845f77b633641135002d2d76aae72a280096af","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            cyclient.delete_arqs_by_uuid(arq_uuids)"},{"line_number":1565,"context_line":"        except exception.AcceleratorRequestOpFailed as e:"},{"line_number":1566,"context_line":"            LOG.exception(\u0027ARQ does not exist while deleted for \u0027"},{"line_number":1567,"context_line":"                      \u0027instance %s. Exception: %s\u0027, instance.uuid, e)"}],"source_content_type":"text/x-python","patch_set":29,"id":"4e3cb8b5_de653773","line":1567,"in_reply_to":"aa33f2ec_c95e44fe","updated":"2021-06-17 07:33:12.000000000","message":"Done","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"65fc509a1da08e4ec462f5750dcd0adacbbdcfcc","unresolved":false,"context_lines":[{"line_number":1537,"context_line":"                spec[\u0027parent_ifname\u0027] \u003d rp_name_pieces[2]"},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":""},{"line_number":1540,"context_line":"def delete_arqs_if_needed(context, instance, arq_uuids\u003dNone):"},{"line_number":1541,"context_line":"    \"\"\"Delete Cyborg ARQs for the instance.\"\"\""},{"line_number":1542,"context_line":"    dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1543,"context_line":"    if dp_name is None:"}],"source_content_type":"text/x-python","patch_set":35,"id":"6d852f4d_a487f6af","line":1540,"range":{"start_line":1540,"start_character":45,"end_line":1540,"end_character":60},"updated":"2021-06-25 08:06:11.000000000","message":"irrelevant change.","commit_id":"298ffa998e68ecf7a6abcf20c76f9ca6cd3d3380"}],"nova/conductor/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":859,"context_line":"                    limits\u003dhost.limits, host_list\u003dhost_list,"},{"line_number":860,"context_line":"                    accel_uuids\u003daccel_uuids)"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":"    def _create_and_bind_arq_for_instance(self, context, instance, hostname,"},{"line_number":863,"context_line":"                                    request_spec, requested_networks\u003dNone):"},{"line_number":864,"context_line":"        try:"},{"line_number":865,"context_line":"            resource_provider_mapping \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"dd18d090_e7cc049e","line":862,"range":{"start_line":862,"start_character":41,"end_line":862,"end_character":43},"updated":"2021-02-24 11:46:17.000000000","message":"wrap the line here instead","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"2f03aedaf0b38188a73a662c572331eab6a67046","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                    limits\u003dhost.limits, host_list\u003dhost_list,"},{"line_number":860,"context_line":"                    accel_uuids\u003daccel_uuids)"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":"    def _create_and_bind_arq_for_instance(self, context, instance, hostname,"},{"line_number":863,"context_line":"                                    request_spec, requested_networks\u003dNone):"},{"line_number":864,"context_line":"        try:"},{"line_number":865,"context_line":"            resource_provider_mapping \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"b4d85ae6_ea342d35","line":862,"range":{"start_line":862,"start_character":41,"end_line":862,"end_character":43},"in_reply_to":"dd18d090_e7cc049e","updated":"2021-03-02 08:04:40.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":1714,"context_line":"           The binding is asynchronous; Cyborg will notify on completion."},{"line_number":1715,"context_line":"           The notification will be handled in the compute manager."},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":"           There are two sources of ARQ, one from exra spec and others come"},{"line_number":1718,"context_line":"           from Neutron port backend defice profile with ARQ created for port."},{"line_number":1719,"context_line":"        \"\"\""},{"line_number":1720,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"4320154a_8158b66b","line":1717,"range":{"start_line":1717,"start_character":50,"end_line":1717,"end_character":55},"updated":"2021-02-08 07:52:52.000000000","message":"extra","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":1714,"context_line":"           The binding is asynchronous; Cyborg will notify on completion."},{"line_number":1715,"context_line":"           The notification will be handled in the compute manager."},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":"           There are two sources of ARQ, one from exra spec and others come"},{"line_number":1718,"context_line":"           from Neutron port backend defice profile with ARQ created for port."},{"line_number":1719,"context_line":"        \"\"\""},{"line_number":1720,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ffda0c7_ef41dc70","line":1717,"range":{"start_line":1717,"start_character":59,"end_line":1717,"end_character":70},"updated":"2021-02-08 07:52:52.000000000","message":"the other comes from","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":1714,"context_line":"           The binding is asynchronous; Cyborg will notify on completion."},{"line_number":1715,"context_line":"           The notification will be handled in the compute manager."},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":"           There are two sources of ARQ, one from exra spec and others come"},{"line_number":1718,"context_line":"           from Neutron port backend defice profile with ARQ created for port."},{"line_number":1719,"context_line":"        \"\"\""},{"line_number":1720,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"e2817af4_1ab283fb","line":1717,"range":{"start_line":1717,"start_character":59,"end_line":1717,"end_character":70},"in_reply_to":"3ffda0c7_ef41dc70","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":1714,"context_line":"           The binding is asynchronous; Cyborg will notify on completion."},{"line_number":1715,"context_line":"           The notification will be handled in the compute manager."},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":"           There are two sources of ARQ, one from exra spec and others come"},{"line_number":1718,"context_line":"           from Neutron port backend defice profile with ARQ created for port."},{"line_number":1719,"context_line":"        \"\"\""},{"line_number":1720,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"eb0a3140_7552b619","line":1717,"range":{"start_line":1717,"start_character":50,"end_line":1717,"end_character":55},"in_reply_to":"4320154a_8158b66b","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":1715,"context_line":"           The notification will be handled in the compute manager."},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":"           There are two sources of ARQ, one from exra spec and others come"},{"line_number":1718,"context_line":"           from Neutron port backend defice profile with ARQ created for port."},{"line_number":1719,"context_line":"        \"\"\""},{"line_number":1720,"context_line":"        arqs \u003d []"},{"line_number":1721,"context_line":"        bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"1249b870_1845c0df","line":1718,"range":{"start_line":1718,"start_character":37,"end_line":1718,"end_character":43},"updated":"2021-02-08 07:52:52.000000000","message":"device","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"           The notification will be handled in the compute manager."},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":"           There are two sources of ARQ, one from exra spec and others come"},{"line_number":1718,"context_line":"           from Neutron port backend defice profile with ARQ created for port."},{"line_number":1719,"context_line":"        \"\"\""},{"line_number":1720,"context_line":"        arqs \u003d []"},{"line_number":1721,"context_line":"        bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"2cca250c_7d04b375","line":1718,"range":{"start_line":1718,"start_character":37,"end_line":1718,"end_character":43},"in_reply_to":"1249b870_1845c0df","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":1723,"context_line":"        dp_name \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1724,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"        # profiles from reqeust spec: Create ARQ and binding"},{"line_number":1727,"context_line":"        if dp_name:"},{"line_number":1728,"context_line":"            LOG.debug(\u0027Calling Cyborg to get ARQs. dp_name\u003d%s instance\u003d%s\u0027,"},{"line_number":1729,"context_line":"                      dp_name, instance_uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a484cea_35697b50","line":1726,"range":{"start_line":1726,"start_character":24,"end_line":1726,"end_character":31},"updated":"2021-02-09 10:49:22.000000000","message":"nit, s/reqeust/request/","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fed1312235f90c2ceee72b27e89fc5370e18e6b6","unresolved":false,"context_lines":[{"line_number":1723,"context_line":"        dp_name \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1724,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"        # profiles from reqeust spec: Create ARQ and binding"},{"line_number":1727,"context_line":"        if dp_name:"},{"line_number":1728,"context_line":"            LOG.debug(\u0027Calling Cyborg to get ARQs. dp_name\u003d%s instance\u003d%s\u0027,"},{"line_number":1729,"context_line":"                      dp_name, instance_uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"02efaece_dfb0d8b7","line":1726,"range":{"start_line":1726,"start_character":24,"end_line":1726,"end_character":31},"in_reply_to":"9a484cea_35697b50","updated":"2021-02-19 07:41:52.000000000","message":"Done","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":860,"context_line":"                    accel_uuids\u003daccel_uuids)"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":"    def _create_and_bind_arq_for_instance(self, context, instance, hostname,"},{"line_number":863,"context_line":"                                    request_spec, requested_networks\u003dNone):"},{"line_number":864,"context_line":"        try:"},{"line_number":865,"context_line":"            resource_provider_mapping \u003d ("},{"line_number":866,"context_line":"                request_spec.get_request_group_mapping())"}],"source_content_type":"text/x-python","patch_set":9,"id":"a9262f95_f52d9280","line":863,"range":{"start_line":863,"start_character":50,"end_line":863,"end_character":73},"updated":"2021-02-24 11:46:17.000000000","message":"it should not be optional if you pass it in by every caller","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":860,"context_line":"                    accel_uuids\u003daccel_uuids)"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":"    def _create_and_bind_arq_for_instance(self, context, instance, hostname,"},{"line_number":863,"context_line":"                                    request_spec, requested_networks\u003dNone):"},{"line_number":864,"context_line":"        try:"},{"line_number":865,"context_line":"            resource_provider_mapping \u003d ("},{"line_number":866,"context_line":"                request_spec.get_request_group_mapping())"}],"source_content_type":"text/x-python","patch_set":9,"id":"d38d3b91_e88ced9c","line":863,"range":{"start_line":863,"start_character":50,"end_line":863,"end_character":73},"in_reply_to":"a9262f95_f52d9280","updated":"2021-02-25 08:45:45.000000000","message":"devices from flavor\u0027s arq don\u0027t need this. removed.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1759,"context_line":"            cyclient.bind_arqs(bindings\u003dbindings)"},{"line_number":1760,"context_line":""},{"line_number":1761,"context_line":"        # flavor arqs uuids"},{"line_number":1762,"context_line":"        return [arq[\u0027uuid\u0027] for arq in arqs]"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":"    @staticmethod"},{"line_number":1765,"context_line":"    def _map_instance_to_cell(context, instance, cell):"}],"source_content_type":"text/x-python","patch_set":9,"id":"660e3571_fc462adf","line":1762,"updated":"2021-02-24 11:46:17.000000000","message":"why it is returning only the arqs from the flavor if it is actually bound arqs both from the flavor and the ports?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1759,"context_line":"            cyclient.bind_arqs(bindings\u003dbindings)"},{"line_number":1760,"context_line":""},{"line_number":1761,"context_line":"        # flavor arqs uuids"},{"line_number":1762,"context_line":"        return [arq[\u0027uuid\u0027] for arq in arqs]"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":"    @staticmethod"},{"line_number":1765,"context_line":"    def _map_instance_to_cell(context, instance, cell):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5496b38d_18f1af61","line":1762,"in_reply_to":"660e3571_fc462adf","updated":"2021-02-25 08:45:45.000000000","message":"arqs returned here for only passthrough devices, port\u0027s device bind by vif instead of hostdev. comments added for this.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"        # devices for port arqs  binding by vif."},{"line_number":1755,"context_line":"        # arq uuid returned indicate the corresponded device should use as"},{"line_number":1756,"context_line":"        # passthrough devices."},{"line_number":1757,"context_line":"        return [arq[\u0027uuid\u0027] for arq in arqs]"},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":20,"id":"b28e4fb8_abd80326","line":1756,"updated":"2021-03-11 13:59:15.000000000","message":"ditto, this feels bad that we asked to create arqs, and we did so, but we only return a subset of those arqs.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"        # devices for port arqs  binding by vif."},{"line_number":1755,"context_line":"        # arq uuid returned indicate the corresponded device should use as"},{"line_number":1756,"context_line":"        # passthrough devices."},{"line_number":1757,"context_line":"        return [arq[\u0027uuid\u0027] for arq in arqs]"},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":20,"id":"09b921be_4958996c","line":1756,"in_reply_to":"b28e4fb8_abd80326","updated":"2021-03-31 08:27:30.000000000","message":"refactor the whole idea, refer to alex\u0027s comments about this:\nhttps://review.opendev.org/c/openstack/nova/+/758944/20/nova/compute/manager.py#2697","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"802a2aff950e024b66e26c3a583f1ed5611de044","unresolved":false,"context_lines":[{"line_number":603,"context_line":"                for req in requested_networks if req.arq_uuid]"},{"line_number":604,"context_line":"            if arq_uuids:"},{"line_number":605,"context_line":"                force \u003d True"},{"line_number":606,"context_line":"        compute_utils.delete_arqs_if_needed(context, instance, force\u003dforce)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"    # NOTE(danms): This is never cell-targeted because it is only used for"},{"line_number":609,"context_line":"    # n-cpu reschedules which go to the cell conductor and thus are always"}],"source_content_type":"text/x-python","patch_set":24,"id":"9ab48b32_b5afe9b1","line":606,"updated":"2021-06-02 07:01:47.000000000","message":"fixed it too.","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bcf2f0891ebd092d5a0915cba0e339a1e329c768","unresolved":true,"context_lines":[{"line_number":1780,"context_line":"        for request_net in requested_networks:"},{"line_number":1781,"context_line":"            if request_net.port_id and request_net.device_profile:"},{"line_number":1782,"context_line":"                device_profile \u003d request_net.device_profile"},{"line_number":1783,"context_line":"                # one port device profile only create one ARQ"},{"line_number":1784,"context_line":"                arqs \u003d cyclient.create_arqs(device_profile)"},{"line_number":1785,"context_line":"                if len(arqs) \u003e 1:"},{"line_number":1786,"context_line":"                    raise exception.AcceleratorRequestOpFailed("}],"source_content_type":"text/x-python","patch_set":24,"id":"76ccb890_ac6b8411","line":1783,"updated":"2021-05-28 06:45:54.000000000","message":"maybe to say \u0027the port doesn\u0027t support multiple devices\u0027","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"802a2aff950e024b66e26c3a583f1ed5611de044","unresolved":false,"context_lines":[{"line_number":1780,"context_line":"        for request_net in requested_networks:"},{"line_number":1781,"context_line":"            if request_net.port_id and request_net.device_profile:"},{"line_number":1782,"context_line":"                device_profile \u003d request_net.device_profile"},{"line_number":1783,"context_line":"                # one port device profile only create one ARQ"},{"line_number":1784,"context_line":"                arqs \u003d cyclient.create_arqs(device_profile)"},{"line_number":1785,"context_line":"                if len(arqs) \u003e 1:"},{"line_number":1786,"context_line":"                    raise exception.AcceleratorRequestOpFailed("}],"source_content_type":"text/x-python","patch_set":24,"id":"5e2a70c1_f60711cf","line":1783,"in_reply_to":"76ccb890_ac6b8411","updated":"2021-06-02 07:01:47.000000000","message":"Done","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"802a2aff950e024b66e26c3a583f1ed5611de044","unresolved":false,"context_lines":[{"line_number":1792,"context_line":"                    arq[\"uuid\"], request_net.port_id, instance_uuid)"},{"line_number":1793,"context_line":"                request_net.arq_uuid \u003d arq[\"uuid\"]"},{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"                rp_uuid \u003d cyclient.get_arq_device_rp_uuid("},{"line_number":1796,"context_line":"                    request_net.arq_uuid,"},{"line_number":1797,"context_line":"                    resource_provider_mapping,"},{"line_number":1798,"context_line":"                    request_net.port_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"19aaadc7_468cdb1a","line":1795,"updated":"2021-06-02 07:01:47.000000000","message":"cyborg could accept arq as arq then drop one extra cyborg call.","commit_id":"3806c46eaae568ddc5bc7f15c9a94383f3cd75fc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8511624f0a617bf1c0f7f16fd9cfce820d872e6b","unresolved":true,"context_lines":[{"line_number":882,"context_line":"                cyclient, instance.uuid, instance.flavor.extra_specs,"},{"line_number":883,"context_line":"                hostname, resource_provider_mapping)"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"            if requested_networks:"},{"line_number":886,"context_line":"                # Create ARQs comes from port device profile"},{"line_number":887,"context_line":"                port_bindings \u003d self._create_arqs_for_ports("},{"line_number":888,"context_line":"                    cyclient, instance.uuid, requested_networks,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7cbeeb91_671995a5","line":885,"range":{"start_line":885,"start_character":12,"end_line":885,"end_character":34},"updated":"2021-06-17 14:27:49.000000000","message":"also can add test for the case only dp from extra spec, and only request network, and both dp from extra spec and request network","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                cyclient, instance.uuid, instance.flavor.extra_specs,"},{"line_number":883,"context_line":"                hostname, resource_provider_mapping)"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"            if requested_networks:"},{"line_number":886,"context_line":"                # Create ARQs comes from port device profile"},{"line_number":887,"context_line":"                port_bindings \u003d self._create_arqs_for_ports("},{"line_number":888,"context_line":"                    cyclient, instance.uuid, requested_networks,"}],"source_content_type":"text/x-python","patch_set":29,"id":"f4eb6f13_54379e5e","line":885,"range":{"start_line":885,"start_character":12,"end_line":885,"end_character":34},"in_reply_to":"7cbeeb91_671995a5","updated":"2021-06-18 07:04:53.000000000","message":"Done","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":true,"context_lines":[{"line_number":1780,"context_line":"                # the port doesn\u0027t support multiple devices"},{"line_number":1781,"context_line":"                arqs \u003d cyclient.create_arqs(device_profile)"},{"line_number":1782,"context_line":"                if len(arqs) \u003e 1:"},{"line_number":1783,"context_line":"                    raise exception.AcceleratorRequestOpFailed("},{"line_number":1784,"context_line":"                        op\u003d_(\u0027create\u0027),"},{"line_number":1785,"context_line":"                        msg\u003d\u0027the port does not support multiple devices.\u0027)"},{"line_number":1786,"context_line":"                arq \u003d arqs[0]"},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"                LOG.debug(\"Create ARQ %s for port %s of instance %s\","}],"source_content_type":"text/x-python","patch_set":29,"id":"d4152791_ca7d64dc","line":1785,"range":{"start_line":1783,"start_character":21,"end_line":1785,"end_character":74},"updated":"2021-06-17 14:24:49.000000000","message":"I didn\u0027t see the testcase for this","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":1780,"context_line":"                # the port doesn\u0027t support multiple devices"},{"line_number":1781,"context_line":"                arqs \u003d cyclient.create_arqs(device_profile)"},{"line_number":1782,"context_line":"                if len(arqs) \u003e 1:"},{"line_number":1783,"context_line":"                    raise exception.AcceleratorRequestOpFailed("},{"line_number":1784,"context_line":"                        op\u003d_(\u0027create\u0027),"},{"line_number":1785,"context_line":"                        msg\u003d\u0027the port does not support multiple devices.\u0027)"},{"line_number":1786,"context_line":"                arq \u003d arqs[0]"},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"                LOG.debug(\"Create ARQ %s for port %s of instance %s\","}],"source_content_type":"text/x-python","patch_set":29,"id":"687cd1b1_e26fe3f2","line":1785,"range":{"start_line":1783,"start_character":21,"end_line":1785,"end_character":74},"in_reply_to":"d4152791_ca7d64dc","updated":"2021-06-18 07:04:53.000000000","message":"Add a test cases.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":true,"context_lines":[{"line_number":1805,"context_line":""},{"line_number":1806,"context_line":"        return bindings"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"    def _cleanup_arqs_for_ports(self, context, instance_uuid,"},{"line_number":1809,"context_line":"                               requested_networks):"},{"line_number":1810,"context_line":"        arq_uuids \u003d [(req.arq_uuid, req.port_id)"},{"line_number":1811,"context_line":"            for req in requested_networks if req.arq_uuid]"}],"source_content_type":"text/x-python","patch_set":29,"id":"efd82d3b_2ab60fbb","line":1808,"updated":"2021-06-17 14:24:49.000000000","message":"I didn\u0027t see anywhere use it","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":1805,"context_line":""},{"line_number":1806,"context_line":"        return bindings"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"    def _cleanup_arqs_for_ports(self, context, instance_uuid,"},{"line_number":1809,"context_line":"                               requested_networks):"},{"line_number":1810,"context_line":"        arq_uuids \u003d [(req.arq_uuid, req.port_id)"},{"line_number":1811,"context_line":"            for req in requested_networks if req.arq_uuid]"}],"source_content_type":"text/x-python","patch_set":29,"id":"72636b57_f03b16b6","line":1808,"in_reply_to":"efd82d3b_2ab60fbb","updated":"2021-06-18 07:04:53.000000000","message":"Drop this function. new clean up did not use this interface anymore.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":true,"context_lines":[{"line_number":1816,"context_line":"                    cyclient.delete_arqs_by_uuid(arq_uuid)"},{"line_number":1817,"context_line":"                except exception.AcceleratorRequestOpFailed as e:"},{"line_number":1818,"context_line":"                    LOG.exception(\u0027Failed to delete accelerator requests for \u0027"},{"line_number":1819,"context_line":"                      \u0027instanc %s port %s Exception: %s\u0027,"},{"line_number":1820,"context_line":"                      instance_uuid, port_id, e)"},{"line_number":1821,"context_line":""},{"line_number":1822,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":29,"id":"0bcbc8a1_faa2dc02","line":1819,"range":{"start_line":1819,"start_character":23,"end_line":1819,"end_character":30},"updated":"2021-06-17 14:24:49.000000000","message":"instance","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":1816,"context_line":"                    cyclient.delete_arqs_by_uuid(arq_uuid)"},{"line_number":1817,"context_line":"                except exception.AcceleratorRequestOpFailed as e:"},{"line_number":1818,"context_line":"                    LOG.exception(\u0027Failed to delete accelerator requests for \u0027"},{"line_number":1819,"context_line":"                      \u0027instanc %s port %s Exception: %s\u0027,"},{"line_number":1820,"context_line":"                      instance_uuid, port_id, e)"},{"line_number":1821,"context_line":""},{"line_number":1822,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf4c3b0f_232b4207","line":1819,"range":{"start_line":1819,"start_character":23,"end_line":1819,"end_character":30},"in_reply_to":"0bcbc8a1_faa2dc02","updated":"2021-06-18 07:04:53.000000000","message":"Drop this function.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"03b1d2c39908220cbd5a3ee4e01fb23bf121262e","unresolved":true,"context_lines":[{"line_number":594,"context_line":"            legacy_request_spec)"},{"line_number":595,"context_line":"        self._cleanup_allocated_networks("},{"line_number":596,"context_line":"            context, instance, requested_networks)"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        compute_utils.delete_arqs_if_needed(context, instance)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    # NOTE(danms): This is never cell-targeted because it is only used for"}],"source_content_type":"text/x-python","patch_set":36,"id":"866acf4d_3387538d","line":597,"updated":"2021-06-28 02:06:21.000000000","message":"Irrelevant change.","commit_id":"b8eefae2b850710f2d426c94db52c8afbaffe1bb"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"9161fa5f2377dd495775ae47be4b82830e2b9f0d","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            legacy_request_spec)"},{"line_number":595,"context_line":"        self._cleanup_allocated_networks("},{"line_number":596,"context_line":"            context, instance, requested_networks)"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        compute_utils.delete_arqs_if_needed(context, instance)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    # NOTE(danms): This is never cell-targeted because it is only used for"}],"source_content_type":"text/x-python","patch_set":36,"id":"3cf67d5a_133efa55","line":597,"in_reply_to":"866acf4d_3387538d","updated":"2021-06-28 06:14:54.000000000","message":"Done","commit_id":"b8eefae2b850710f2d426c94db52c8afbaffe1bb"}],"nova/network/neutron.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5fcda9350fd4cbaa9579699e93410fd5be41a622","unresolved":true,"context_lines":[{"line_number":1511,"context_line":"                   \u0027arq_uuid\u0027: arq[\u0027uuid\u0027]"},{"line_number":1512,"context_line":"                }"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"    def _get_bound_arq_resources(self, context, instance, arq_uuids):"},{"line_number":1515,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1516,"context_line":"        TODO:"},{"line_number":1517,"context_line":"            This is a common function is possible share with Compute."}],"source_content_type":"text/x-python","patch_set":4,"id":"9558373e_b7eb7eb7","line":1514,"range":{"start_line":1514,"start_character":58,"end_line":1514,"end_character":67},"updated":"2021-01-29 02:53:13.000000000","message":"looks like `arg_uuids` isn\u0027t being used in this method","commit_id":"494541c2fae9b29df1f8c66a3b859b1155989ba7"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8aa3336cc14035e682cc6de4bf3e98e051aecbbe","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"                   \u0027arq_uuid\u0027: arq[\u0027uuid\u0027]"},{"line_number":1512,"context_line":"                }"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"    def _get_bound_arq_resources(self, context, instance, arq_uuids):"},{"line_number":1515,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1516,"context_line":"        TODO:"},{"line_number":1517,"context_line":"            This is a common function is possible share with Compute."}],"source_content_type":"text/x-python","patch_set":4,"id":"561dd913_54517187","line":1514,"range":{"start_line":1514,"start_character":58,"end_line":1514,"end_character":67},"in_reply_to":"9558373e_b7eb7eb7","updated":"2021-01-29 07:46:19.000000000","message":"Done","commit_id":"494541c2fae9b29df1f8c66a3b859b1155989ba7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5fcda9350fd4cbaa9579699e93410fd5be41a622","unresolved":true,"context_lines":[{"line_number":1523,"context_line":"        \"\"\""},{"line_number":1524,"context_line":""},{"line_number":1525,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1526,"context_line":"        if arq_uuids is None:"},{"line_number":1527,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":1528,"context_line":"            arq_uuids \u003d [arq[\u0027uuid\u0027] for arq in arqs]"},{"line_number":1529,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4e233e2f_22b13090","line":1526,"range":{"start_line":1526,"start_character":8,"end_line":1526,"end_character":29},"updated":"2021-01-29 02:53:13.000000000","message":"and there isn\u0027t any chance the arg_uuids is None.","commit_id":"494541c2fae9b29df1f8c66a3b859b1155989ba7"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8aa3336cc14035e682cc6de4bf3e98e051aecbbe","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"        \"\"\""},{"line_number":1524,"context_line":""},{"line_number":1525,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1526,"context_line":"        if arq_uuids is None:"},{"line_number":1527,"context_line":"            arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":1528,"context_line":"            arq_uuids \u003d [arq[\u0027uuid\u0027] for arq in arqs]"},{"line_number":1529,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"e3db7346_bf6b696c","line":1526,"range":{"start_line":1526,"start_character":8,"end_line":1526,"end_character":29},"in_reply_to":"4e233e2f_22b13090","updated":"2021-01-29 07:46:19.000000000","message":"Done","commit_id":"494541c2fae9b29df1f8c66a3b859b1155989ba7"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":663,"context_line":"                    networks[net_id] \u003d network"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"            # Unbind Port  device"},{"line_number":666,"context_line":"            arq_uuid \u003d port_profile.get(\u0027arq_uuid\u0027)"},{"line_number":667,"context_line":"            if arq_uuid:"},{"line_number":668,"context_line":"                self._delete_arq(context, arq_uuid)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"            # NOTE: We\u0027re doing this to remove the binding information"},{"line_number":671,"context_line":"            # for the physical device but don\u0027t want to overwrite the other"}],"source_content_type":"text/x-python","patch_set":6,"id":"e96c31b2_cdffdd02","line":668,"range":{"start_line":666,"start_character":0,"end_line":668,"end_character":51},"updated":"2021-02-08 07:52:52.000000000","message":"we can merge this into:\nif port_profile.get(\u0027arq_uuid\u0027):\n    self.delete_arq()","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                    networks[net_id] \u003d network"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"            # Unbind Port  device"},{"line_number":666,"context_line":"            arq_uuid \u003d port_profile.get(\u0027arq_uuid\u0027)"},{"line_number":667,"context_line":"            if arq_uuid:"},{"line_number":668,"context_line":"                self._delete_arq(context, arq_uuid)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"            # NOTE: We\u0027re doing this to remove the binding information"},{"line_number":671,"context_line":"            # for the physical device but don\u0027t want to overwrite the other"}],"source_content_type":"text/x-python","patch_set":6,"id":"ac915c14_0f995dde","line":668,"range":{"start_line":666,"start_character":0,"end_line":668,"end_character":51},"in_reply_to":"e96c31b2_cdffdd02","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":1523,"context_line":"        \"\"\""},{"line_number":1524,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1525,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":1526,"context_line":"        LOG.debug(\" FindAll ARQs from cyborg:%s\", arqs)"},{"line_number":1527,"context_line":"        for arq in arqs:"},{"line_number":1528,"context_line":"            if arq[\u0027state\u0027] !\u003d \u0027Bound\u0027:"},{"line_number":1529,"context_line":"                raise exception.PciDeviceNotFound("}],"source_content_type":"text/x-python","patch_set":6,"id":"6fe05a9b_92a814bf","line":1526,"range":{"start_line":1526,"start_character":20,"end_line":1526,"end_character":28},"updated":"2021-02-08 07:52:52.000000000","message":"Find all","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"        \"\"\""},{"line_number":1524,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1525,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":1526,"context_line":"        LOG.debug(\" FindAll ARQs from cyborg:%s\", arqs)"},{"line_number":1527,"context_line":"        for arq in arqs:"},{"line_number":1528,"context_line":"            if arq[\u0027state\u0027] !\u003d \u0027Bound\u0027:"},{"line_number":1529,"context_line":"                raise exception.PciDeviceNotFound("}],"source_content_type":"text/x-python","patch_set":6,"id":"2dcf54f4_1c03ef9d","line":1526,"range":{"start_line":1526,"start_character":20,"end_line":1526,"end_character":28},"in_reply_to":"6fe05a9b_92a814bf","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":1526,"context_line":"        LOG.debug(\" FindAll ARQs from cyborg:%s\", arqs)"},{"line_number":1527,"context_line":"        for arq in arqs:"},{"line_number":1528,"context_line":"            if arq[\u0027state\u0027] !\u003d \u0027Bound\u0027:"},{"line_number":1529,"context_line":"                raise exception.PciDeviceNotFound("},{"line_number":1530,"context_line":"                    _(\u0027Error for ARQ %s, state is: %s .\u0027) %"},{"line_number":1531,"context_line":"                    (arq[\u0027uuid\u0027], arq[\u0027state\u0027]))"},{"line_number":1532,"context_line":"        return arqs"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"d12eb2bc_3ca09aba","line":1531,"range":{"start_line":1529,"start_character":16,"end_line":1531,"end_character":48},"updated":"2021-02-08 07:52:52.000000000","message":"should we remove the arq which state is not bound here by arqs.remove(item)?","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"        LOG.debug(\" FindAll ARQs from cyborg:%s\", arqs)"},{"line_number":1527,"context_line":"        for arq in arqs:"},{"line_number":1528,"context_line":"            if arq[\u0027state\u0027] !\u003d \u0027Bound\u0027:"},{"line_number":1529,"context_line":"                raise exception.PciDeviceNotFound("},{"line_number":1530,"context_line":"                    _(\u0027Error for ARQ %s, state is: %s .\u0027) %"},{"line_number":1531,"context_line":"                    (arq[\u0027uuid\u0027], arq[\u0027state\u0027]))"},{"line_number":1532,"context_line":"        return arqs"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7040f1fc_bbc439e3","line":1531,"range":{"start_line":1529,"start_character":16,"end_line":1531,"end_character":48},"in_reply_to":"d12eb2bc_3ca09aba","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1535,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1536,"context_line":"               bonded arq needed  for populating  port binding profile."},{"line_number":1537,"context_line":"        \"\"\""},{"line_number":1538,"context_line":"        arqs \u003d []"},{"line_number":1539,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"112b355e_0ba5210b","line":1536,"range":{"start_line":1536,"start_character":15,"end_line":1536,"end_character":22},"updated":"2021-02-08 07:52:52.000000000","message":"bound","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":false,"context_lines":[{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1535,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1536,"context_line":"               bonded arq needed  for populating  port binding profile."},{"line_number":1537,"context_line":"        \"\"\""},{"line_number":1538,"context_line":"        arqs \u003d []"},{"line_number":1539,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"291fbf49_2c08c790","line":1536,"range":{"start_line":1536,"start_character":15,"end_line":1536,"end_character":22},"in_reply_to":"112b355e_0ba5210b","updated":"2021-02-09 06:39:48.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"46ff7013f79dd994a79c820745562f3d35356e72","unresolved":true,"context_lines":[{"line_number":2183,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2184,"context_line":"                    context, neutron, network_id)"},{"line_number":2185,"context_line":""},{"line_number":2186,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2187,"context_line":"                    # reqeusest groups for port :"},{"line_number":2188,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2189,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2190,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2191,"context_line":"                            context, device_profile))"}],"source_content_type":"text/x-python","patch_set":6,"id":"2638286e_db5306a5","line":2188,"range":{"start_line":2186,"start_character":15,"end_line":2188,"end_character":69},"updated":"2021-02-08 07:52:52.000000000","message":"should we add a check for null device profile here?","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"90cb37be7d708d7f76afc11270170fe80413b986","unresolved":true,"context_lines":[{"line_number":2183,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2184,"context_line":"                    context, neutron, network_id)"},{"line_number":2185,"context_line":""},{"line_number":2186,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2187,"context_line":"                    # reqeusest groups for port :"},{"line_number":2188,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2189,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2190,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2191,"context_line":"                            context, device_profile))"}],"source_content_type":"text/x-python","patch_set":6,"id":"990d366a_9d682c14","line":2188,"range":{"start_line":2186,"start_character":15,"end_line":2188,"end_character":69},"in_reply_to":"2638286e_db5306a5","updated":"2021-02-09 06:39:48.000000000","message":"We gonna failed call cyborg to retrieve the groups, that\u0027s gonna be raised a exception: DeviceProfileError. But I do not insist either way.","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"184de6f52ab9805ff3a9f8bf89c5df9a1fcdecd4","unresolved":false,"context_lines":[{"line_number":2183,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2184,"context_line":"                    context, neutron, network_id)"},{"line_number":2185,"context_line":""},{"line_number":2186,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2187,"context_line":"                    # reqeusest groups for port :"},{"line_number":2188,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2189,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2190,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2191,"context_line":"                            context, device_profile))"}],"source_content_type":"text/x-python","patch_set":6,"id":"76804ec4_3b37a259","line":2188,"range":{"start_line":2186,"start_character":15,"end_line":2188,"end_character":69},"in_reply_to":"990d366a_9d682c14","updated":"2021-03-04 07:41:32.000000000","message":"Done","commit_id":"36980908448cc7188043f14a5223050279602748"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":2179,"context_line":"                    context, neutron, network_id)"},{"line_number":2180,"context_line":""},{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("}],"source_content_type":"text/x-python","patch_set":7,"id":"3732cbb9_d5fab985","line":2182,"range":{"start_line":2182,"start_character":22,"end_line":2182,"end_character":31},"updated":"2021-02-09 10:49:22.000000000","message":"nit, s/reqeuset/request","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fed1312235f90c2ceee72b27e89fc5370e18e6b6","unresolved":false,"context_lines":[{"line_number":2179,"context_line":"                    context, neutron, network_id)"},{"line_number":2180,"context_line":""},{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("}],"source_content_type":"text/x-python","patch_set":7,"id":"ce53b38c_5d4cb7f9","line":2182,"range":{"start_line":2182,"start_character":22,"end_line":2182,"end_character":31},"in_reply_to":"3732cbb9_d5fab985","updated":"2021-02-19 07:41:52.000000000","message":"Done","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":2180,"context_line":""},{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"}],"source_content_type":"text/x-python","patch_set":7,"id":"077e2b1b_63d63a49","line":2183,"range":{"start_line":2183,"start_character":52,"end_line":2183,"end_character":59},"updated":"2021-02-09 10:49:22.000000000","message":"nit, required","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fed1312235f90c2ceee72b27e89fc5370e18e6b6","unresolved":false,"context_lines":[{"line_number":2180,"context_line":""},{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"}],"source_content_type":"text/x-python","patch_set":7,"id":"b4843383_445abc92","line":2183,"range":{"start_line":2183,"start_character":52,"end_line":2183,"end_character":59},"in_reply_to":"077e2b1b_63d63a49","updated":"2021-02-19 07:41:52.000000000","message":"Done","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"e5de704e_07be06d5","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"updated":"2021-02-09 10:49:22.000000000","message":"I\u0027m little confuse on the requester id https://github.com/openstack/nova/blob/4827a90a02ef91e777b1fcaa946c20c54dd0a29a/nova/accelerator/cyborg.py#L70, I\u0027m worry about we will generate same requester id if we specify device profile same time in port and flavor_extra_spec.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"5caaece044e900d75b6fcdaba9801bdc41745350","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b1b6cb98_4e6e581a","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"82c4a8c0_f794ce88","updated":"2021-02-22 07:22:23.000000000","message":"Ack. fix coming.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"10f13bf89a4363bf23bfbf8a5ea4868bb67db3f1","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b221f651_49ced735","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"a03aab6e_86108695","updated":"2021-02-20 01:28:19.000000000","message":"we use the requester id to find out the allocated resource provider, https://review.opendev.org/c/openstack/nova/+/758944/7/nova/conductor/manager.py#1752, which is used for figuring out the resource allocated from which resource provider.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0b2670fd7ba70be3e4460ac42b5eaf7b999832dc","unresolved":false,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"a42afbf8_c0f015ec","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"b1b6cb98_4e6e581a","updated":"2021-02-23 07:48:39.000000000","message":"Done","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fbf20af21eb1c5fdcd7eccd6988c2c8793cec625","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"d09d7704_ddf444dd","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"b221f651_49ced735","updated":"2021-02-20 01:36:56.000000000","message":"Also we will request port\u0027s resource and extra spec\u0027s resource in the same request group? I\u0027m not sure it works or not, better to have test.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3f924e99ac6e0b842d203e2b3ac236ce92dc8256","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"82c4a8c0_f794ce88","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"b7a6bcb7_5c99c888","updated":"2021-02-22 05:55:52.000000000","message":"\u003e I tried to boot VM with 2 device requests in 2 ways(one from flavor, another from port).\n\u003e If we don\u0027t differentiate the requester id, it will raise RequestGroupSuffixConflict.\n\u003e \n\nThanks for the test.\n\n\u003e It is because both of them are using device_profile_0 as the requester_id. We should fix that.\n\na question, the requester id was specified inside device profile in cyborg by the end user?","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"e50d6caaddbb1e0e2f2c2e108ddc04ab92c72819","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b7a6bcb7_5c99c888","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"d09d7704_ddf444dd","updated":"2021-02-22 05:12:18.000000000","message":"I don\u0027t think so. They are in diffirent resource groups. \n\nI tried to boot VM with 2 device requests in 2 ways(one from flavor, another from port).\nIf we don\u0027t differentiate the requester id, it will raise RequestGroupSuffixConflict.\n\nIt is because both of them are using device_profile_0 as the requester_id. We should fix that.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a4a50fb7a44648445a11abe7eae7e68e7fef3ba1","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fc61915c_4f52926f","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"e5de704e_07be06d5","updated":"2021-02-10 02:55:47.000000000","message":"If user insist use a flavor profile in a port, that obvious a wrong configuration style, I don\u0027t know what we could do for that.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"add0e4331751591fd971c67781a7660dc33276d1","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"a03aab6e_86108695","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"e7db2c5e_2cc9e018","updated":"2021-02-19 11:33:19.000000000","message":"@alex, good catch. Before we use \"device_profile_index\" by default.   https://github.com/openstack/nova/blob/f7975d640ce1e9fa06d045d35177f07451716f0c/nova/accelerator/cyborg.py#L70.\nAs we have another branch(by port\u0027s device profile) to generate resource request now, there\u0027s a risk that same req_id are used for both request from flavor and from port. In this case, I prefer that we pass a flag when the get_device_profile_request_groups() func is called. \n\nBut I am wondering if this will make the whole workflow fail, as my understanding, the request_id is a identifier, not sure if we must make this key unique.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"03b5b2de0f08fb88387d15ba4eb6a93b42f95878","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"e7db2c5e_2cc9e018","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"f9965662_efa5d116","updated":"2021-02-10 07:27:36.000000000","message":"I guess requests we got just for select available device, ARQ UUID is the key to differentiate the actual device. but invite @Xinran take a look.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"746768298604ab4fede942643a81e65495b1772b","unresolved":true,"context_lines":[{"line_number":2181,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2182,"context_line":"                    # reqeusest groups for port :"},{"line_number":2183,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027requied\u0027: \u0027MD5\u0027 }"},{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"}],"source_content_type":"text/x-python","patch_set":7,"id":"f9965662_efa5d116","line":2186,"range":{"start_line":2184,"start_character":20,"end_line":2186,"end_character":53},"in_reply_to":"fc61915c_4f52926f","updated":"2021-02-10 02:58:45.000000000","message":"Actually, I mean the user using a smartnic from neutron port, and sametime using another accelerator device in flavor extra spec","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2190,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"97521b04_3d46a64d","line":2187,"range":{"start_line":2187,"start_character":46,"end_line":2187,"end_character":53},"updated":"2021-02-09 10:49:22.000000000","message":"nit, request","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fed1312235f90c2ceee72b27e89fc5370e18e6b6","unresolved":false,"context_lines":[{"line_number":2184,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2185,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2186,"context_line":"                            context, device_profile))"},{"line_number":2187,"context_line":"                    LOG.debug(\"device_profile reqeust group(ARQ): %s\","},{"line_number":2188,"context_line":"                        dp_request_groups)"},{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2190,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"947b8545_34413989","line":2187,"range":{"start_line":2187,"start_character":46,"end_line":2187,"end_character":53},"in_reply_to":"97521b04_3d46a64d","updated":"2021-02-19 07:41:52.000000000","message":"Done","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2190,"context_line":""},{"line_number":2191,"context_line":"                    # create arq"},{"line_number":2192,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2193,"context_line":"                    LOG.debug(\"create ARQ  %s  for port %s\", acc_arq[\"uuid\"],"},{"line_number":2194,"context_line":"                                            acc_arq)"},{"line_number":2195,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"                if resource_request:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dcf59aff_69e7807e","line":2194,"range":{"start_line":2192,"start_character":20,"end_line":2194,"end_character":52},"updated":"2021-02-09 10:49:22.000000000","message":"if we create arq here, we probably need to take care of the cleanup of arq when instance creation failed","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a4a50fb7a44648445a11abe7eae7e68e7fef3ba1","unresolved":true,"context_lines":[{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2190,"context_line":""},{"line_number":2191,"context_line":"                    # create arq"},{"line_number":2192,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2193,"context_line":"                    LOG.debug(\"create ARQ  %s  for port %s\", acc_arq[\"uuid\"],"},{"line_number":2194,"context_line":"                                            acc_arq)"},{"line_number":2195,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"                if resource_request:"}],"source_content_type":"text/x-python","patch_set":7,"id":"e80d89c2_4d8b8a72","line":2194,"range":{"start_line":2192,"start_character":20,"end_line":2194,"end_character":52},"in_reply_to":"dcf59aff_69e7807e","updated":"2021-02-10 02:55:47.000000000","message":"yes, we did.\nhttps://review.opendev.org/c/openstack/nova/+/758944/7/nova/network/neutron.py#665","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fed1312235f90c2ceee72b27e89fc5370e18e6b6","unresolved":false,"context_lines":[{"line_number":2189,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2190,"context_line":""},{"line_number":2191,"context_line":"                    # create arq"},{"line_number":2192,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2193,"context_line":"                    LOG.debug(\"create ARQ  %s  for port %s\", acc_arq[\"uuid\"],"},{"line_number":2194,"context_line":"                                            acc_arq)"},{"line_number":2195,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"                if resource_request:"}],"source_content_type":"text/x-python","patch_set":7,"id":"f7d94848_11a8417f","line":2194,"range":{"start_line":2192,"start_character":20,"end_line":2194,"end_character":52},"in_reply_to":"e80d89c2_4d8b8a72","updated":"2021-02-19 07:41:52.000000000","message":"while instance been deleted, the arq related resources released(fix me):\nhttps://review.opendev.org/c/openstack/nova/+/758944/7/nova/network/neutron.py#665","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4e512f771461e96fbd623c337b203f2b16b9d950","unresolved":true,"context_lines":[{"line_number":2222,"context_line":"            if physnet:"},{"line_number":2223,"context_line":"                physnets.add(physnet)"},{"line_number":2224,"context_line":""},{"line_number":2225,"context_line":"            if (vnic_type in network_model.VNIC_TYPES_SRIOV and vnic_type"},{"line_number":2226,"context_line":"                                not in network_model.VNIC_TYPES_ACCELERATOR):"},{"line_number":2227,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":2228,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":2229,"context_line":"                # feature based scheduling in nova. This mean we will need"}],"source_content_type":"text/x-python","patch_set":7,"id":"6d901b3b_14ae0aab","line":2226,"range":{"start_line":2225,"start_character":14,"end_line":2226,"end_character":76},"updated":"2021-02-09 10:49:22.000000000","message":"I didn\u0027t see there is a overlap between network_model.VNIC_TYPES_SRIOV and network_model.VNIC_TYPES_ACCELERATOR. So why we need to ensure \u0027vnic_type not in network_model.VNIC_TYPES_ACCELERATOR\u0027?","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fed1312235f90c2ceee72b27e89fc5370e18e6b6","unresolved":false,"context_lines":[{"line_number":2222,"context_line":"            if physnet:"},{"line_number":2223,"context_line":"                physnets.add(physnet)"},{"line_number":2224,"context_line":""},{"line_number":2225,"context_line":"            if (vnic_type in network_model.VNIC_TYPES_SRIOV and vnic_type"},{"line_number":2226,"context_line":"                                not in network_model.VNIC_TYPES_ACCELERATOR):"},{"line_number":2227,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":2228,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":2229,"context_line":"                # feature based scheduling in nova. This mean we will need"}],"source_content_type":"text/x-python","patch_set":7,"id":"62304e36_32e83697","line":2226,"range":{"start_line":2225,"start_character":14,"end_line":2226,"end_character":76},"in_reply_to":"0b5e4b68_5a5d8776","updated":"2021-02-19 07:41:52.000000000","message":"Done","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a4a50fb7a44648445a11abe7eae7e68e7fef3ba1","unresolved":true,"context_lines":[{"line_number":2222,"context_line":"            if physnet:"},{"line_number":2223,"context_line":"                physnets.add(physnet)"},{"line_number":2224,"context_line":""},{"line_number":2225,"context_line":"            if (vnic_type in network_model.VNIC_TYPES_SRIOV and vnic_type"},{"line_number":2226,"context_line":"                                not in network_model.VNIC_TYPES_ACCELERATOR):"},{"line_number":2227,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":2228,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"},{"line_number":2229,"context_line":"                # feature based scheduling in nova. This mean we will need"}],"source_content_type":"text/x-python","patch_set":7,"id":"0b5e4b68_5a5d8776","line":2226,"range":{"start_line":2225,"start_character":14,"end_line":2226,"end_character":76},"in_reply_to":"6d901b3b_14ae0aab","updated":"2021-02-10 02:55:47.000000000","message":"nice catch. I define the accelerator as part of SRIOV for a while back to several revisions ago.","commit_id":"4c81420ca5b801112a009048afb6d820e35f6692"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":639,"context_line":"                port \u003d self._show_port("},{"line_number":640,"context_line":"                    context, port_id, neutron_client\u003dneutron,"},{"line_number":641,"context_line":"                    fields\u003d[constants.BINDING_PROFILE, \u0027network_id\u0027,"},{"line_number":642,"context_line":"                    \u0027device_profile\u0027])"},{"line_number":643,"context_line":"            except exception.PortNotFound:"},{"line_number":644,"context_line":"                LOG.debug(\u0027Unable to show port %s as it no longer \u0027"},{"line_number":645,"context_line":"                          \u0027exists.\u0027, port_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3b2b8cf9_95ffd670","line":642,"updated":"2021-02-24 11:46:17.000000000","message":"you request the device_profile here but below you look up the arq_uuid from the port binding profile. So why do you need device_profile here?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                port \u003d self._show_port("},{"line_number":640,"context_line":"                    context, port_id, neutron_client\u003dneutron,"},{"line_number":641,"context_line":"                    fields\u003d[constants.BINDING_PROFILE, \u0027network_id\u0027,"},{"line_number":642,"context_line":"                    \u0027device_profile\u0027])"},{"line_number":643,"context_line":"            except exception.PortNotFound:"},{"line_number":644,"context_line":"                LOG.debug(\u0027Unable to show port %s as it no longer \u0027"},{"line_number":645,"context_line":"                          \u0027exists.\u0027, port_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"4bb73275_7bb588a7","line":642,"in_reply_to":"3b2b8cf9_95ffd670","updated":"2021-02-25 08:45:45.000000000","message":"Good catch.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":662,"context_line":"                                                   ).get(\u0027network\u0027)"},{"line_number":663,"context_line":"                    networks[net_id] \u003d network"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"            # Unbind Port  device"},{"line_number":666,"context_line":"            if port_profile.get(\u0027arq_uuid\u0027):"},{"line_number":667,"context_line":"                self._delete_arq(context, port_profile[\u0027arq_uuid\u0027])"},{"line_number":668,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"44204517_094de87f","line":665,"range":{"start_line":665,"start_character":25,"end_line":665,"end_character":27},"updated":"2021-02-24 11:46:17.000000000","message":"drop one of the space","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":662,"context_line":"                                                   ).get(\u0027network\u0027)"},{"line_number":663,"context_line":"                    networks[net_id] \u003d network"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"            # Unbind Port  device"},{"line_number":666,"context_line":"            if port_profile.get(\u0027arq_uuid\u0027):"},{"line_number":667,"context_line":"                self._delete_arq(context, port_profile[\u0027arq_uuid\u0027])"},{"line_number":668,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"8db2d498_d316fa56","line":665,"range":{"start_line":665,"start_character":25,"end_line":665,"end_character":27},"in_reply_to":"44204517_094de87f","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1498,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dpci_dev.compute_node_id,"},{"line_number":1499,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"    def _get_arq_pci_device_profile(self, arq):"},{"line_number":1502,"context_line":"        \"\"\"Extracting pci device info from ARQ"},{"line_number":1503,"context_line":"        \"\"\""},{"line_number":1504,"context_line":"        pci_info \u003d arq[\u0027attach_handle_info\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7831e171_c3d4cc3d","line":1501,"updated":"2021-02-24 11:46:17.000000000","message":"this feels pretty cyborg specific so I don\u0027t like that it is in the neutron interface code.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1498,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dpci_dev.compute_node_id,"},{"line_number":1499,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"    def _get_arq_pci_device_profile(self, arq):"},{"line_number":1502,"context_line":"        \"\"\"Extracting pci device info from ARQ"},{"line_number":1503,"context_line":"        \"\"\""},{"line_number":1504,"context_line":"        pci_info \u003d arq[\u0027attach_handle_info\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1886e140_bde0a88c","line":1501,"in_reply_to":"7831e171_c3d4cc3d","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1502,"context_line":"        \"\"\"Extracting pci device info from ARQ"},{"line_number":1503,"context_line":"        \"\"\""},{"line_number":1504,"context_line":"        pci_info \u003d arq[\u0027attach_handle_info\u0027]"},{"line_number":1505,"context_line":"        return {\u0027pci_vendor_info\u0027: \"%s:%s\" % (\"\", \"\"),"},{"line_number":1506,"context_line":"                 \u0027physical_network\u0027: pci_info[\"physical_network\"],"},{"line_number":1507,"context_line":"                 \u0027pci_slot\u0027: \"%s:%s:%s.%s\" % ("},{"line_number":1508,"context_line":"                     pci_info[\"domain\"], pci_info[\"bus\"],"}],"source_content_type":"text/x-python","patch_set":9,"id":"a14c0413_fac7461f","line":1505,"range":{"start_line":1505,"start_character":45,"end_line":1505,"end_character":54},"updated":"2021-02-24 11:46:17.000000000","message":"why?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1502,"context_line":"        \"\"\"Extracting pci device info from ARQ"},{"line_number":1503,"context_line":"        \"\"\""},{"line_number":1504,"context_line":"        pci_info \u003d arq[\u0027attach_handle_info\u0027]"},{"line_number":1505,"context_line":"        return {\u0027pci_vendor_info\u0027: \"%s:%s\" % (\"\", \"\"),"},{"line_number":1506,"context_line":"                 \u0027physical_network\u0027: pci_info[\"physical_network\"],"},{"line_number":1507,"context_line":"                 \u0027pci_slot\u0027: \"%s:%s:%s.%s\" % ("},{"line_number":1508,"context_line":"                     pci_info[\"domain\"], pci_info[\"bus\"],"}],"source_content_type":"text/x-python","patch_set":9,"id":"4342d419_17b2ef0a","line":1505,"range":{"start_line":1505,"start_character":45,"end_line":1505,"end_character":54},"in_reply_to":"a14c0413_fac7461f","updated":"2021-02-25 08:45:45.000000000","message":"remove","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"    def _get_bound_arq_resources(self, context, instance):"},{"line_number":1514,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1515,"context_line":"        TODO:"},{"line_number":1516,"context_line":"            This is a common function is possible share with Compute."},{"line_number":1517,"context_line":""},{"line_number":1518,"context_line":"        :param instance: instance object"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ea27bb8_469d8bea","line":1515,"range":{"start_line":1515,"start_character":8,"end_line":1515,"end_character":13},"updated":"2021-02-24 11:46:17.000000000","message":"what you do about this?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"    def _get_bound_arq_resources(self, context, instance):"},{"line_number":1514,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1515,"context_line":"        TODO:"},{"line_number":1516,"context_line":"            This is a common function is possible share with Compute."},{"line_number":1517,"context_line":""},{"line_number":1518,"context_line":"        :param instance: instance object"}],"source_content_type":"text/x-python","patch_set":9,"id":"02175505_b8876067","line":1515,"range":{"start_line":1515,"start_character":8,"end_line":1515,"end_character":13},"in_reply_to":"9ea27bb8_469d8bea","updated":"2021-02-25 08:45:45.000000000","message":"junk. remove.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1518,"context_line":"        :param instance: instance object"},{"line_number":1519,"context_line":"        :param arq_uuids: List of accelerator request (ARQ) UUIDs."},{"line_number":1520,"context_line":"        :returns: List of ARQs for which bindings have completed,"},{"line_number":1521,"context_line":"                  successfully or otherwise"},{"line_number":1522,"context_line":"        \"\"\""},{"line_number":1523,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1524,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7dd53b62_6af67ac9","line":1521,"range":{"start_line":1521,"start_character":18,"end_line":1521,"end_character":43},"updated":"2021-02-24 11:46:17.000000000","message":"the code below filters for successful bindings I guess","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"        :param instance: instance object"},{"line_number":1519,"context_line":"        :param arq_uuids: List of accelerator request (ARQ) UUIDs."},{"line_number":1520,"context_line":"        :returns: List of ARQs for which bindings have completed,"},{"line_number":1521,"context_line":"                  successfully or otherwise"},{"line_number":1522,"context_line":"        \"\"\""},{"line_number":1523,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1524,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"22fefe82_5b66578d","line":1521,"range":{"start_line":1521,"start_character":18,"end_line":1521,"end_character":43},"in_reply_to":"7dd53b62_6af67ac9","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1526,"context_line":"        LOG.debug(\" Find All Bound ARQs from cyborg:%s\", arqs)"},{"line_number":1527,"context_line":"        return arqs"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"0a49fc82_09daef73","line":1529,"range":{"start_line":1529,"start_character":13,"end_line":1529,"end_character":17},"updated":"2021-02-24 11:46:17.000000000","message":"bound?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"        LOG.debug(\" Find All Bound ARQs from cyborg:%s\", arqs)"},{"line_number":1527,"context_line":"        return arqs"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"917a09b4_cc1dafcd","line":1529,"range":{"start_line":1529,"start_character":13,"end_line":1529,"end_character":17},"in_reply_to":"0a49fc82_09daef73","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1527,"context_line":"        return arqs"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"a4ad57f9_c45308f2","line":1530,"range":{"start_line":1530,"start_character":56,"end_line":1530,"end_character":58},"updated":"2021-02-24 11:46:17.000000000","message":"drop one of the space","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1527,"context_line":"        return arqs"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"ab646c5d_335eb957","line":1530,"range":{"start_line":1530,"start_character":43,"end_line":1530,"end_character":45},"updated":"2021-02-24 11:46:17.000000000","message":"drop one of the space","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"        return arqs"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"2070ca92_dfaa6123","line":1530,"range":{"start_line":1530,"start_character":56,"end_line":1530,"end_character":58},"in_reply_to":"a4ad57f9_c45308f2","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"        return arqs"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"c92d4ce2_7b918b2e","line":1530,"range":{"start_line":1530,"start_character":43,"end_line":1530,"end_character":45},"in_reply_to":"ab646c5d_335eb957","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"4dacd8be_f7dcf557","line":1531,"range":{"start_line":1531,"start_character":8,"end_line":1531,"end_character":15},"updated":"2021-02-24 11:46:17.000000000","message":"drop the spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"05aea452_b15541b5","line":1531,"range":{"start_line":1531,"start_character":31,"end_line":1531,"end_character":33},"updated":"2021-02-24 11:46:17.000000000","message":"too many spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"2d6513a3_79d9b13e","line":1531,"range":{"start_line":1531,"start_character":47,"end_line":1531,"end_character":49},"updated":"2021-02-24 11:46:17.000000000","message":"too many spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"927ba47f_810215f1","line":1531,"range":{"start_line":1531,"start_character":31,"end_line":1531,"end_character":33},"in_reply_to":"05aea452_b15541b5","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"f0071d1c_7f782e0a","line":1531,"range":{"start_line":1531,"start_character":47,"end_line":1531,"end_character":49},"in_reply_to":"2d6513a3_79d9b13e","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"    def _get_bond_arq(self, context, instance, arq_uuid):"},{"line_number":1530,"context_line":"        \"\"\"Get the arq by arq uuid from all  ARQs of the  instance."},{"line_number":1531,"context_line":"               bound arq needed  for populating  port binding profile."},{"line_number":1532,"context_line":"        \"\"\""},{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"283d8f1d_2c705882","line":1531,"range":{"start_line":1531,"start_character":8,"end_line":1531,"end_character":15},"in_reply_to":"4dacd8be_f7dcf557","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"},{"line_number":1535,"context_line":"            arqs \u003d self._get_bound_arq_resources(context, instance)"},{"line_number":1536,"context_line":"        except (Exception, eventlet.timeout.Timeout):"},{"line_number":1537,"context_line":"            msg \u003d _(\"Time out while getting accelerator requests.\")"},{"line_number":1538,"context_line":"            LOG.error(msg\u003dmsg)"},{"line_number":1539,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"043990d6_6ec2c150","line":1536,"updated":"2021-02-24 11:46:17.000000000","message":"how can we end up in eventlet timeout here?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"190632e6c54954b9e52581cffc821b41400e380c","unresolved":true,"context_lines":[{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"},{"line_number":1535,"context_line":"            arqs \u003d self._get_bound_arq_resources(context, instance)"},{"line_number":1536,"context_line":"        except (Exception, eventlet.timeout.Timeout):"},{"line_number":1537,"context_line":"            msg \u003d _(\"Time out while getting accelerator requests.\")"},{"line_number":1538,"context_line":"            LOG.error(msg\u003dmsg)"},{"line_number":1539,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"f6693c20_68cb512e","line":1536,"in_reply_to":"043990d6_6ec2c150","updated":"2021-02-25 09:13:55.000000000","message":"good catch. it should be AcceleratorRequestOpFailed or other exception instead of timeout.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a41ab0015ce3fe7dc4a444845e0bd15f0edc7e0a","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"        arqs \u003d []"},{"line_number":1534,"context_line":"        try:"},{"line_number":1535,"context_line":"            arqs \u003d self._get_bound_arq_resources(context, instance)"},{"line_number":1536,"context_line":"        except (Exception, eventlet.timeout.Timeout):"},{"line_number":1537,"context_line":"            msg \u003d _(\"Time out while getting accelerator requests.\")"},{"line_number":1538,"context_line":"            LOG.error(msg\u003dmsg)"},{"line_number":1539,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f08d029_54427288","line":1536,"in_reply_to":"f6693c20_68cb512e","updated":"2021-02-26 07:59:31.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1574,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d profile"},{"line_number":1575,"context_line":""},{"line_number":1576,"context_line":"        if port_arq:"},{"line_number":1577,"context_line":"            # PCI SRIOV device according  port ARQ"},{"line_number":1578,"context_line":"            profile \u003d copy.deepcopy(get_binding_profile(port_req_body[\u0027port\u0027]))"},{"line_number":1579,"context_line":"            profile.update(self._get_arq_pci_device_profile(port_arq))"},{"line_number":1580,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d profile"}],"source_content_type":"text/x-python","patch_set":9,"id":"ea1f59f1_3b5a21ea","line":1577,"range":{"start_line":1577,"start_character":40,"end_line":1577,"end_character":42},"updated":"2021-02-24 11:46:17.000000000","message":"too many spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d profile"},{"line_number":1575,"context_line":""},{"line_number":1576,"context_line":"        if port_arq:"},{"line_number":1577,"context_line":"            # PCI SRIOV device according  port ARQ"},{"line_number":1578,"context_line":"            profile \u003d copy.deepcopy(get_binding_profile(port_req_body[\u0027port\u0027]))"},{"line_number":1579,"context_line":"            profile.update(self._get_arq_pci_device_profile(port_arq))"},{"line_number":1580,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d profile"}],"source_content_type":"text/x-python","patch_set":9,"id":"773ad4c3_cc67cb3a","line":1577,"range":{"start_line":1577,"start_character":40,"end_line":1577,"end_character":42},"in_reply_to":"ea1f59f1_3b5a21ea","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":1626,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":1627,"context_line":"        port_req_body[\u0027port\u0027][constants.BINDING_HOST_ID] \u003d bind_host_id"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"        #  should check if extension  exists"},{"line_number":1630,"context_line":"        port_arq \u003d None"},{"line_number":1631,"context_line":"        if arq_uuid:"},{"line_number":1632,"context_line":"            port_arq \u003d self._get_bond_arq(context, instance, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"43bb4639_f4956f47","line":1629,"range":{"start_line":1629,"start_character":9,"end_line":1629,"end_character":44},"updated":"2021-02-24 11:46:17.000000000","message":"too many spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":1626,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":1627,"context_line":"        port_req_body[\u0027port\u0027][constants.BINDING_HOST_ID] \u003d bind_host_id"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"        #  should check if extension  exists"},{"line_number":1630,"context_line":"        port_arq \u003d None"},{"line_number":1631,"context_line":"        if arq_uuid:"},{"line_number":1632,"context_line":"            port_arq \u003d self._get_bond_arq(context, instance, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"792e8179_0105f216","line":1629,"range":{"start_line":1629,"start_character":9,"end_line":1629,"end_character":44},"in_reply_to":"43bb4639_f4956f47","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2126,"context_line":"    def _create_arq(self, context, dp_name, owner):"},{"line_number":2127,"context_line":"        \"\"\"Create Device profile ARQs without binding ARQ."},{"line_number":2128,"context_line":""},{"line_number":2129,"context_line":"           The binding gonna completed after schedule."},{"line_number":2130,"context_line":"        \"\"\""},{"line_number":2131,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2132,"context_line":"        arqs \u003d cyclient.create_arqs_and_match_resource_providers(dp_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"e3438986_a91af051","line":2129,"range":{"start_line":2129,"start_character":23,"end_line":2129,"end_character":38},"updated":"2021-02-24 11:46:17.000000000","message":"will be done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2126,"context_line":"    def _create_arq(self, context, dp_name, owner):"},{"line_number":2127,"context_line":"        \"\"\"Create Device profile ARQs without binding ARQ."},{"line_number":2128,"context_line":""},{"line_number":2129,"context_line":"           The binding gonna completed after schedule."},{"line_number":2130,"context_line":"        \"\"\""},{"line_number":2131,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2132,"context_line":"        arqs \u003d cyclient.create_arqs_and_match_resource_providers(dp_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"870c03b9_45f40717","line":2129,"range":{"start_line":2129,"start_character":23,"end_line":2129,"end_character":38},"in_reply_to":"e3438986_a91af051","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2134,"context_line":"        return arqs[0]"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2137,"context_line":"        \"\"\"Delete device profile by  arq uuid.\"\"\""},{"line_number":2138,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2139,"context_line":"        cyclient.delete_arqs_by_uuid([arq_uuid])"},{"line_number":2140,"context_line":"        LOG.debug(\u0027Delete ARQs  %s\u0027, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"e0b5abd8_7fb9550a","line":2137,"range":{"start_line":2137,"start_character":35,"end_line":2137,"end_character":37},"updated":"2021-02-24 11:46:17.000000000","message":"too many spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2134,"context_line":"        return arqs[0]"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2137,"context_line":"        \"\"\"Delete device profile by  arq uuid.\"\"\""},{"line_number":2138,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2139,"context_line":"        cyclient.delete_arqs_by_uuid([arq_uuid])"},{"line_number":2140,"context_line":"        LOG.debug(\u0027Delete ARQs  %s\u0027, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"750ae70d_9d029772","line":2137,"range":{"start_line":2137,"start_character":35,"end_line":2137,"end_character":37},"in_reply_to":"e0b5abd8_7fb9550a","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2184,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2185,"context_line":"                    context, neutron, network_id)"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2188,"context_line":"                    # request groups for port :"},{"line_number":2189,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2190,"context_line":"                    dp_request_groups \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"ead49629_c21fad1a","line":2187,"range":{"start_line":2187,"start_character":15,"end_line":2187,"end_character":69},"updated":"2021-02-24 11:46:17.000000000","message":"why do you need this condition? I think we there is a non empty device_profile then you need to make a resource request regardless of vnic_type","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2184,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2185,"context_line":"                    context, neutron, network_id)"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2188,"context_line":"                    # request groups for port :"},{"line_number":2189,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2190,"context_line":"                    dp_request_groups \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"aad4af22_862d6e8a","line":2187,"range":{"start_line":2187,"start_character":15,"end_line":2187,"end_character":69},"in_reply_to":"ead49629_c21fad1a","updated":"2021-02-25 08:45:45.000000000","message":"This is suggested by Sean in spec review stage: it\u0027 better use VNIC type differentiated the code path for this.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2188,"context_line":"                    # request groups for port :"},{"line_number":2189,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2190,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2191,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2192,"context_line":"                            context, device_profile, request_net.port_id))"}],"source_content_type":"text/x-python","patch_set":9,"id":"f71c32a8_e74a592f","line":2189,"updated":"2021-02-24 11:46:17.000000000","message":"I don\u0027t think we should mix arq creation into the neutron interface code. Please do this in the compute/api, conductor/manager, compute/manager level instead","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c76aeec6a3dae401d54f76e98315164b241b09b4","unresolved":false,"context_lines":[{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2188,"context_line":"                    # request groups for port :"},{"line_number":2189,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2190,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2191,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2192,"context_line":"                            context, device_profile, request_net.port_id))"}],"source_content_type":"text/x-python","patch_set":9,"id":"63757926_d7ed51a6","line":2189,"in_reply_to":"6d85a5df_6fa88254","updated":"2021-02-26 08:05:13.000000000","message":"Done. Create arq move to conductor service.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2188,"context_line":"                    # request groups for port :"},{"line_number":2189,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2190,"context_line":"                    dp_request_groups \u003d ("},{"line_number":2191,"context_line":"                        cyborg.get_device_profile_request_groups("},{"line_number":2192,"context_line":"                            context, device_profile, request_net.port_id))"}],"source_content_type":"text/x-python","patch_set":9,"id":"6d85a5df_6fa88254","line":2189,"in_reply_to":"f71c32a8_e74a592f","updated":"2021-02-25 08:45:45.000000000","message":"I kind of missing you point here. The uuid should be saved in request_net.arq_uuid. It seems do it here is a simple choice, right?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2197,"context_line":"                    # create arq"},{"line_number":2198,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile,"},{"line_number":2199,"context_line":"                        owner\u003drequest_net.port_id)"},{"line_number":2200,"context_line":"                    LOG.debug(\"create ARQ  %s  for port %s\", acc_arq[\"uuid\"],"},{"line_number":2201,"context_line":"                                            acc_arq)"},{"line_number":2202,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2203,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5fb671bd_40b2a770","line":2200,"range":{"start_line":2200,"start_character":41,"end_line":2200,"end_character":47},"updated":"2021-02-24 11:46:17.000000000","message":"too many spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2197,"context_line":"                    # create arq"},{"line_number":2198,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile,"},{"line_number":2199,"context_line":"                        owner\u003drequest_net.port_id)"},{"line_number":2200,"context_line":"                    LOG.debug(\"create ARQ  %s  for port %s\", acc_arq[\"uuid\"],"},{"line_number":2201,"context_line":"                                            acc_arq)"},{"line_number":2202,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2203,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"f36981ba_2241fde7","line":2200,"range":{"start_line":2200,"start_character":41,"end_line":2200,"end_character":47},"in_reply_to":"5fb671bd_40b2a770","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":2113,"context_line":"        \"\"\""},{"line_number":2114,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2115,"context_line":"        arqs \u003d cyclient.create_arqs(dp_name)"},{"line_number":2116,"context_line":"        return arqs[0]"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2119,"context_line":"        \"\"\"Delete device profile by arq uuid.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"57c7025c_84a3202b","line":2116,"range":{"start_line":2116,"start_character":8,"end_line":2116,"end_character":22},"updated":"2021-02-26 03:24:24.000000000","message":"Are we going to only support one request group in each device profile for port? I\u0027m thinking whether we should have check and reject if the port associate with device profile which has multiple request group.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6eff2e7217d72e5c530311799355e199454ca1de","unresolved":true,"context_lines":[{"line_number":2113,"context_line":"        \"\"\""},{"line_number":2114,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2115,"context_line":"        arqs \u003d cyclient.create_arqs(dp_name)"},{"line_number":2116,"context_line":"        return arqs[0]"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2119,"context_line":"        \"\"\"Delete device profile by arq uuid.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"e0a3c637_e6f6ba71","line":2116,"range":{"start_line":2116,"start_character":8,"end_line":2116,"end_character":22},"in_reply_to":"57c7025c_84a3202b","updated":"2021-03-01 06:20:18.000000000","message":"Currently, we only support one vNIC associated with one port. I didn\u0027t find the use case where one port should be associated with multiple vNic. (Correct me @Yongli)\n\nBesides, +1 for having check and rejection.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"184de6f52ab9805ff3a9f8bf89c5df9a1fcdecd4","unresolved":false,"context_lines":[{"line_number":2113,"context_line":"        \"\"\""},{"line_number":2114,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2115,"context_line":"        arqs \u003d cyclient.create_arqs(dp_name)"},{"line_number":2116,"context_line":"        return arqs[0]"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2119,"context_line":"        \"\"\"Delete device profile by arq uuid.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"0110557c_1b6b51b2","line":2116,"range":{"start_line":2116,"start_character":8,"end_line":2116,"end_character":22},"in_reply_to":"e0a3c637_e6f6ba71","updated":"2021-03-04 07:41:32.000000000","message":"Done","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":2177,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"                    # create arq"},{"line_number":2180,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2181,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2182,"context_line":"                                            acc_arq)"},{"line_number":2183,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"}],"source_content_type":"text/x-python","patch_set":11,"id":"c2aefa07_f52a5f52","line":2180,"range":{"start_line":2180,"start_character":19,"end_line":2180,"end_character":71},"updated":"2021-02-26 03:24:24.000000000","message":"If the arq created failed, then the exception will be raised, those exception should be catched in the API layer, otherwise, it will lead to 500 return to the user.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"2f03aedaf0b38188a73a662c572331eab6a67046","unresolved":false,"context_lines":[{"line_number":2177,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"                    # create arq"},{"line_number":2180,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2181,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2182,"context_line":"                                            acc_arq)"},{"line_number":2183,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"}],"source_content_type":"text/x-python","patch_set":11,"id":"d0c57923_afd76efb","line":2180,"range":{"start_line":2180,"start_character":19,"end_line":2180,"end_character":71},"in_reply_to":"c2aefa07_f52a5f52","updated":"2021-03-02 08:04:40.000000000","message":"Done","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"89799c9b5831aa53d7da01d53e0f18b71023b83e","unresolved":true,"context_lines":[{"line_number":2177,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"                    # create arq"},{"line_number":2180,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2181,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2182,"context_line":"                                            acc_arq)"},{"line_number":2183,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2184,"context_line":""},{"line_number":2185,"context_line":"                if resource_request:"},{"line_number":2186,"context_line":"                    # InstancePCIRequest.requester_id is semantically linked"}],"source_content_type":"text/x-python","patch_set":11,"id":"dd15efb2_c1f2598c","line":2183,"range":{"start_line":2180,"start_character":20,"end_line":2183,"end_character":58},"updated":"2021-02-26 03:24:24.000000000","message":"I guess you want to create arg early, because you want to map port and arq?\n\nBut if we create it such early, we need some cleanup if there is any failure.\n\nWe created arq here https://github.com/openstack/nova/blob/ce938a4e4570278d9eedcef11937cace2adb6807/nova/compute/api.py#L1490\n\nBut the instance creation can be failed at\nhttps://github.com/openstack/nova/blob/ce938a4e4570278d9eedcef11937cace2adb6807/nova/compute/api.py#L1503\n,\nhttps://github.com/openstack/nova/blob/ce938a4e4570278d9eedcef11937cace2adb6807/nova/compute/api.py#L1525\nand\nhttps://github.com/openstack/nova/blob/ce938a4e4570278d9eedcef11937cace2adb6807/nova/compute/api.py#L1517\n\nSo we should delete the arq in case we failed create instance, or we should move the arq creation to later time.","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"2f03aedaf0b38188a73a662c572331eab6a67046","unresolved":false,"context_lines":[{"line_number":2177,"context_line":"                    resource_requests.extend(dp_request_groups)"},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"                    # create arq"},{"line_number":2180,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2181,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2182,"context_line":"                                            acc_arq)"},{"line_number":2183,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2184,"context_line":""},{"line_number":2185,"context_line":"                if resource_request:"},{"line_number":2186,"context_line":"                    # InstancePCIRequest.requester_id is semantically linked"}],"source_content_type":"text/x-python","patch_set":11,"id":"86b36cf5_5595d53e","line":2183,"range":{"start_line":2180,"start_character":20,"end_line":2183,"end_character":58},"in_reply_to":"dd15efb2_c1f2598c","updated":"2021-03-02 08:04:40.000000000","message":"Done","commit_id":"60ba1e57423f21e8161b35b12b843f2787a19aff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":1501,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dpci_dev.compute_node_id,"},{"line_number":1502,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1503,"context_line":""},{"line_number":1504,"context_line":"    def _get_bound_arq_resources(self, context, instance):"},{"line_number":1505,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1506,"context_line":"        :param instance: instance object"},{"line_number":1507,"context_line":"        :param arq_uuids: List of accelerator request (ARQ) UUIDs."}],"source_content_type":"text/x-python","patch_set":19,"id":"cbde2b7e_005503c5","line":1504,"range":{"start_line":1504,"start_character":8,"end_line":1504,"end_character":32},"updated":"2021-03-11 14:16:10.000000000","message":"this should be defined in https://github.com/openstack/nova/blob/master/nova/accelerator/cyborg.py","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"89fe8b1f97ad85c7b823d9a25a97166ceca2d653","unresolved":false,"context_lines":[{"line_number":1501,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dpci_dev.compute_node_id,"},{"line_number":1502,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1503,"context_line":""},{"line_number":1504,"context_line":"    def _get_bound_arq_resources(self, context, instance):"},{"line_number":1505,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1506,"context_line":"        :param instance: instance object"},{"line_number":1507,"context_line":"        :param arq_uuids: List of accelerator request (ARQ) UUIDs."}],"source_content_type":"text/x-python","patch_set":19,"id":"5548b33c_bab19894","line":1504,"range":{"start_line":1504,"start_character":8,"end_line":1504,"end_character":32},"in_reply_to":"cbde2b7e_005503c5","updated":"2021-06-25 07:29:28.000000000","message":"this is refactored based your comments and Alex\u0027s.","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":1513,"context_line":"        LOG.debug(\" Find All Bound ARQs from cyborg:%s\", arqs)"},{"line_number":1514,"context_line":"        return arqs"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"    def _get_bound_arq(self, context, instance, arq_uuid):"},{"line_number":1517,"context_line":"        \"\"\"Get the arq by arq uuid from all ARQs of the instance."},{"line_number":1518,"context_line":"        bound arq needed for populating port binding profile."},{"line_number":1519,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"1ab3011c_6e4cac46","line":1516,"range":{"start_line":1516,"start_character":8,"end_line":1516,"end_character":22},"updated":"2021-03-11 14:16:10.000000000","message":"this should also be in https://github.com/openstack/nova/blob/master/nova/accelerator/cyborg.py","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"89fe8b1f97ad85c7b823d9a25a97166ceca2d653","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"        LOG.debug(\" Find All Bound ARQs from cyborg:%s\", arqs)"},{"line_number":1514,"context_line":"        return arqs"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"    def _get_bound_arq(self, context, instance, arq_uuid):"},{"line_number":1517,"context_line":"        \"\"\"Get the arq by arq uuid from all ARQs of the instance."},{"line_number":1518,"context_line":"        bound arq needed for populating port binding profile."},{"line_number":1519,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"4a0c3800_a7d4afc7","line":1516,"range":{"start_line":1516,"start_character":8,"end_line":1516,"end_character":22},"in_reply_to":"1ab3011c_6e4cac46","updated":"2021-06-25 07:29:28.000000000","message":"this is refactored based your comments and Alex\u0027s.","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":1560,"context_line":"            profile.update(self._get_pci_device_profile(pci_dev))"},{"line_number":1561,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d profile"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":"        if port_arq:"},{"line_number":1564,"context_line":"            # PCI SRIOV device according port ARQ"},{"line_number":1565,"context_line":"            profile \u003d copy.deepcopy(get_binding_profile(port_req_body[\u0027port\u0027]))"},{"line_number":1566,"context_line":"            profile.update(cyborg.get_arq_pci_device_profile(port_arq))"}],"source_content_type":"text/x-python","patch_set":19,"id":"22f991be_c9a4afc4","line":1563,"range":{"start_line":1563,"start_character":11,"end_line":1563,"end_character":19},"updated":"2021-03-11 14:16:10.000000000","message":"this infomation is not use by the neutron backend \nhttps://review.opendev.org/c/openstack/neutron/+/779292\nso we should not be storign the arqs here.\n\nthe info in the port binding is currently set primarily for the neutron backend to use\nwe misuse it to generate the libvirt xml today but we shoudl not be doing that it can allow bad actors a way to alther the pci device used  if they have admin rights.\n\ni want to remove the use of the profile form the xml generation to resolve \nhttps://bugs.launchpad.net/nova/+bug/1851545\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d1767797\n\nso i dont think we shoudl use it for storing cyborg arqs it will have the same problem\nwith unshelve.","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"0670e3a61d269fe79dc48b5e0fe36b3fc7683921","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"            profile.update(self._get_pci_device_profile(pci_dev))"},{"line_number":1561,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d profile"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":"        if port_arq:"},{"line_number":1564,"context_line":"            # PCI SRIOV device according port ARQ"},{"line_number":1565,"context_line":"            profile \u003d copy.deepcopy(get_binding_profile(port_req_body[\u0027port\u0027]))"},{"line_number":1566,"context_line":"            profile.update(cyborg.get_arq_pci_device_profile(port_arq))"}],"source_content_type":"text/x-python","patch_set":19,"id":"9d74c114_e466f497","line":1563,"range":{"start_line":1563,"start_character":11,"end_line":1563,"end_character":19},"in_reply_to":"22f991be_c9a4afc4","updated":"2021-03-12 07:53:13.000000000","message":"You are right, that need a solution but not in this patch set. Per the discussed result you did with alex_xu in irc, we should not let it block this feature, and continue to resolve that problem in next release.","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"        return vnic_type, trusted, network_id, resource_request, device_profile"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":"    def _create_arq(self, context, dp_name):"},{"line_number":2114,"context_line":"        \"\"\"Create Device profile ARQs without binding ARQ."},{"line_number":2115,"context_line":""},{"line_number":2116,"context_line":"           The binding will be done after schedule."}],"source_content_type":"text/x-python","patch_set":19,"id":"7751dee3_e3060e43","line":2113,"range":{"start_line":2113,"start_character":8,"end_line":2113,"end_character":19},"updated":"2021-03-11 14:16:10.000000000","message":"i think we shoudl not add this an just use the one form the cyborg moduel directly\nor create a create_port_arq class method if you want to hid the client creation and lenght check","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"52fafb616bca888c0b43ac4d98f7f670de8d2b6e","unresolved":false,"context_lines":[{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"        return vnic_type, trusted, network_id, resource_request, device_profile"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":"    def _create_arq(self, context, dp_name):"},{"line_number":2114,"context_line":"        \"\"\"Create Device profile ARQs without binding ARQ."},{"line_number":2115,"context_line":""},{"line_number":2116,"context_line":"           The binding will be done after schedule."}],"source_content_type":"text/x-python","patch_set":19,"id":"250476fc_2e7111ba","line":2113,"range":{"start_line":2113,"start_character":8,"end_line":2113,"end_character":19},"in_reply_to":"7751dee3_e3060e43","updated":"2021-06-25 02:55:44.000000000","message":"Done","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eeb44477467f2a700fa39b7ac1556324693c6a06","unresolved":true,"context_lines":[{"line_number":2123,"context_line":"        return arqs[0]"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2126,"context_line":"        \"\"\"Delete device profile by arq uuid.\"\"\""},{"line_number":2127,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2128,"context_line":"        cyclient.delete_arqs_by_uuid([arq_uuid])"},{"line_number":2129,"context_line":"        LOG.debug(\u0027Delete ARQs  %s\u0027, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":19,"id":"b4f1129c_200ab68e","line":2126,"updated":"2021-03-11 14:16:10.000000000","message":"same with this we shoudl not have any function for creatign and deleting arqs in the neutorn module \nit shoudl call into the cybrog module for that if need.","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"52fafb616bca888c0b43ac4d98f7f670de8d2b6e","unresolved":false,"context_lines":[{"line_number":2123,"context_line":"        return arqs[0]"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2126,"context_line":"        \"\"\"Delete device profile by arq uuid.\"\"\""},{"line_number":2127,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2128,"context_line":"        cyclient.delete_arqs_by_uuid([arq_uuid])"},{"line_number":2129,"context_line":"        LOG.debug(\u0027Delete ARQs  %s\u0027, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":19,"id":"72d613ed_b554ee0e","line":2126,"in_reply_to":"b4f1129c_200ab68e","updated":"2021-06-25 02:55:44.000000000","message":"Done","commit_id":"75d0ff7b1e856f2d21f2828b069a6c28d5b96205"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":1502,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1503,"context_line":""},{"line_number":1504,"context_line":"    def _get_bound_arq_resources(self, context, instance):"},{"line_number":1505,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1506,"context_line":"        :param instance: instance object"},{"line_number":1507,"context_line":"        :param arq_uuids: List of accelerator request (ARQ) UUIDs."},{"line_number":1508,"context_line":"        :returns: List of ARQs for which bindings have completed."}],"source_content_type":"text/x-python","patch_set":20,"id":"b4ccc6c5_dfaa13a4","line":1505,"updated":"2021-03-11 13:59:15.000000000","message":"add an empty line before the params","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":1502,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1503,"context_line":""},{"line_number":1504,"context_line":"    def _get_bound_arq_resources(self, context, instance):"},{"line_number":1505,"context_line":"        \"\"\"Get bound accelerator requests."},{"line_number":1506,"context_line":"        :param instance: instance object"},{"line_number":1507,"context_line":"        :param arq_uuids: List of accelerator request (ARQ) UUIDs."},{"line_number":1508,"context_line":"        :returns: List of ARQs for which bindings have completed."}],"source_content_type":"text/x-python","patch_set":20,"id":"96aae5fd_7661284f","line":1505,"in_reply_to":"b4ccc6c5_dfaa13a4","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":1510,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1511,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":1512,"context_line":"        arqs \u003d [arq for arq in arqs if arq[\u0027state\u0027] \u003d\u003d \u0027Bound\u0027]"},{"line_number":1513,"context_line":"        LOG.debug(\" Find All Bound ARQs from cyborg:%s\", arqs)"},{"line_number":1514,"context_line":"        return arqs"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"    def _get_bound_arq(self, context, instance, arq_uuid):"}],"source_content_type":"text/x-python","patch_set":20,"id":"5cc025f9_3360ab9d","line":1513,"range":{"start_line":1513,"start_character":19,"end_line":1513,"end_character":52},"updated":"2021-03-11 13:59:15.000000000","message":"Found bound cyborg ARQs: %s","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":1511,"context_line":"        arqs \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":1512,"context_line":"        arqs \u003d [arq for arq in arqs if arq[\u0027state\u0027] \u003d\u003d \u0027Bound\u0027]"},{"line_number":1513,"context_line":"        LOG.debug(\" Find All Bound ARQs from cyborg:%s\", arqs)"},{"line_number":1514,"context_line":"        return arqs"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"    def _get_bound_arq(self, context, instance, arq_uuid):"}],"source_content_type":"text/x-python","patch_set":20,"id":"8a385825_0a60bb18","line":1513,"range":{"start_line":1513,"start_character":19,"end_line":1513,"end_character":52},"in_reply_to":"5cc025f9_3360ab9d","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":1519,"context_line":"        \"\"\""},{"line_number":1520,"context_line":"        arqs \u003d []"},{"line_number":1521,"context_line":"        try:"},{"line_number":1522,"context_line":"            arqs \u003d self._get_bound_arq_resources(context, instance)"},{"line_number":1523,"context_line":"        except (Exception, exception.AcceleratorRequestOpFailed):"},{"line_number":1524,"context_line":"            msg \u003d _(\"Fail to get bound accelerator requests.\")"},{"line_number":1525,"context_line":"            LOG.error(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"689805d3_91c663f4","line":1522,"updated":"2021-03-11 13:59:15.000000000","message":"You don\u0027t need to read all the arqs of the instance from cyborg just to filter that list by uuid below. You can use the arq_uuid provided to this call to get that arq directly from cyborg via GET /v2/accelerator_requests/{accelerator_request_uuid} API","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"        \"\"\""},{"line_number":1520,"context_line":"        arqs \u003d []"},{"line_number":1521,"context_line":"        try:"},{"line_number":1522,"context_line":"            arqs \u003d self._get_bound_arq_resources(context, instance)"},{"line_number":1523,"context_line":"        except (Exception, exception.AcceleratorRequestOpFailed):"},{"line_number":1524,"context_line":"            msg \u003d _(\"Fail to get bound accelerator requests.\")"},{"line_number":1525,"context_line":"            LOG.error(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7e20f06b_b3e524d1","line":1522,"in_reply_to":"689805d3_91c663f4","updated":"2021-03-31 08:27:30.000000000","message":"done, and we don\u0027t need _get_bound_arq_resources anymore.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":1613,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":1614,"context_line":"        port_req_body[\u0027port\u0027][constants.BINDING_HOST_ID] \u003d bind_host_id"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"        # should check if extension exists"},{"line_number":1617,"context_line":"        port_arq \u003d None"},{"line_number":1618,"context_line":"        if arq_uuid:"},{"line_number":1619,"context_line":"            port_arq \u003d self._get_bound_arq(context, instance, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":20,"id":"c2fa8f5f_caa8e543","line":1616,"updated":"2021-03-11 13:59:15.000000000","message":"is it an unfinished TODO?","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":1614,"context_line":"        port_req_body[\u0027port\u0027][constants.BINDING_HOST_ID] \u003d bind_host_id"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"        # should check if extension exists"},{"line_number":1617,"context_line":"        port_arq \u003d None"},{"line_number":1618,"context_line":"        if arq_uuid:"},{"line_number":1619,"context_line":"            port_arq \u003d self._get_bound_arq(context, instance, arq_uuid)"}],"source_content_type":"text/x-python","patch_set":20,"id":"443c1c00_884681d4","line":1616,"in_reply_to":"c2fa8f5f_caa8e543","updated":"2021-03-31 08:27:30.000000000","message":"we don\u0027t need to check that plugin, without neutron support. we won\u0027t have any arq_uuid here.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2086,"context_line":""},{"line_number":2087,"context_line":"        :return: A tuple of vNIC type, trusted status, network ID and resource"},{"line_number":2088,"context_line":"                 request of the port if any. Trusted status only affects SR-IOV"},{"line_number":2089,"context_line":"                 ports and will always be None for other port types."},{"line_number":2090,"context_line":"        \"\"\""},{"line_number":2091,"context_line":"        port \u003d self._show_port("},{"line_number":2092,"context_line":"            context, port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":20,"id":"d43fdda8_207fec41","line":2089,"updated":"2021-03-11 13:59:15.000000000","message":"please update the description with the new tuple item returned","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2086,"context_line":""},{"line_number":2087,"context_line":"        :return: A tuple of vNIC type, trusted status, network ID and resource"},{"line_number":2088,"context_line":"                 request of the port if any. Trusted status only affects SR-IOV"},{"line_number":2089,"context_line":"                 ports and will always be None for other port types."},{"line_number":2090,"context_line":"        \"\"\""},{"line_number":2091,"context_line":"        port \u003d self._show_port("},{"line_number":2092,"context_line":"            context, port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":20,"id":"c6d61d21_56804fd7","line":2089,"in_reply_to":"d43fdda8_207fec41","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2092,"context_line":"            context, port_id, neutron_client\u003dneutron,"},{"line_number":2093,"context_line":"            fields\u003d[\u0027binding:vnic_type\u0027, constants.BINDING_PROFILE,"},{"line_number":2094,"context_line":"                    \u0027network_id\u0027, constants.RESOURCE_REQUEST,"},{"line_number":2095,"context_line":"                    \u0027device_profile\u0027])"},{"line_number":2096,"context_line":"        network_id \u003d port.get(\u0027network_id\u0027)"},{"line_number":2097,"context_line":"        trusted \u003d None"},{"line_number":2098,"context_line":"        vnic_type \u003d port.get(\u0027binding:vnic_type\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9b7b943f_b6a584c4","line":2095,"updated":"2021-03-11 13:59:15.000000000","message":"This will conflict with the change https://review.opendev.org/c/openstack/nova/+/773792/12/nova/network/neutron.py once that patch is merges","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"            context, port_id, neutron_client\u003dneutron,"},{"line_number":2093,"context_line":"            fields\u003d[\u0027binding:vnic_type\u0027, constants.BINDING_PROFILE,"},{"line_number":2094,"context_line":"                    \u0027network_id\u0027, constants.RESOURCE_REQUEST,"},{"line_number":2095,"context_line":"                    \u0027device_profile\u0027])"},{"line_number":2096,"context_line":"        network_id \u003d port.get(\u0027network_id\u0027)"},{"line_number":2097,"context_line":"        trusted \u003d None"},{"line_number":2098,"context_line":"        vnic_type \u003d port.get(\u0027binding:vnic_type\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"6ae49ac2_2880b202","line":2095,"in_reply_to":"9b7b943f_b6a584c4","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2119,"context_line":"        arqs \u003d cyclient.create_arqs(dp_name)"},{"line_number":2120,"context_line":"        if len(arqs) \u003e 1:"},{"line_number":2121,"context_line":"            raise exception.AcceleratorRequestOpFailed("},{"line_number":2122,"context_line":"                op\u003d_(\u0027create\u0027), msg\u003d\u0027multiple request groups for one port.\u0027)"},{"line_number":2123,"context_line":"        return arqs[0]"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _delete_arq(self, context, arq_uuid):"}],"source_content_type":"text/x-python","patch_set":20,"id":"b0da361c_b425cd76","line":2122,"range":{"start_line":2122,"start_character":32,"end_line":2122,"end_character":75},"updated":"2021-03-11 13:59:15.000000000","message":"As you check number of arqs in the condition I think the error is that the device profile is requesting multiple arqs.\n\nIs the limitation documented somewhere that for neutron port only device profiles with a single ARQ can be used?","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2119,"context_line":"        arqs \u003d cyclient.create_arqs(dp_name)"},{"line_number":2120,"context_line":"        if len(arqs) \u003e 1:"},{"line_number":2121,"context_line":"            raise exception.AcceleratorRequestOpFailed("},{"line_number":2122,"context_line":"                op\u003d_(\u0027create\u0027), msg\u003d\u0027multiple request groups for one port.\u0027)"},{"line_number":2123,"context_line":"        return arqs[0]"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _delete_arq(self, context, arq_uuid):"}],"source_content_type":"text/x-python","patch_set":20,"id":"06d3fcee_c3ec9693","line":2122,"range":{"start_line":2122,"start_character":32,"end_line":2122,"end_character":75},"in_reply_to":"b0da361c_b425cd76","updated":"2021-03-31 08:27:30.000000000","message":"Nova raise exception and fail creating server with such a malformed device profile.\nfor port only one device permitted to created. description added to release note.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2248,"context_line":"        return (objects.NetworkMetadata(physnets\u003dphysnets, tunneled\u003dtunneled),"},{"line_number":2249,"context_line":"                resource_requests)"},{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"    def create_arq_for_ports(self, context, instance_uuid, hostname,"},{"line_number":2252,"context_line":"        resource_provider_mapping, requested_networks):"},{"line_number":2253,"context_line":"        \"\"\"Create ARQ for ACCELERATOR VNIC \"\"\""},{"line_number":2254,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":20,"id":"634a8f1f_783571b7","line":2251,"range":{"start_line":2251,"start_character":59,"end_line":2251,"end_character":67},"updated":"2021-03-11 13:59:15.000000000","message":"this parameter seems out of place. It is passed in just to be returned back to the caller. See my other comment later about splitting this function","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2248,"context_line":"        return (objects.NetworkMetadata(physnets\u003dphysnets, tunneled\u003dtunneled),"},{"line_number":2249,"context_line":"                resource_requests)"},{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"    def create_arq_for_ports(self, context, instance_uuid, hostname,"},{"line_number":2252,"context_line":"        resource_provider_mapping, requested_networks):"},{"line_number":2253,"context_line":"        \"\"\"Create ARQ for ACCELERATOR VNIC \"\"\""},{"line_number":2254,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5b80146f_58f489c3","line":2251,"range":{"start_line":2251,"start_character":59,"end_line":2251,"end_character":67},"in_reply_to":"634a8f1f_783571b7","updated":"2021-03-31 08:27:30.000000000","message":"This function logical is split, rearrange, and move to conductor.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2249,"context_line":"                resource_requests)"},{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"    def create_arq_for_ports(self, context, instance_uuid, hostname,"},{"line_number":2252,"context_line":"        resource_provider_mapping, requested_networks):"},{"line_number":2253,"context_line":"        \"\"\"Create ARQ for ACCELERATOR VNIC \"\"\""},{"line_number":2254,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":2255,"context_line":"        cyclient \u003d cyborg.get_client(context)"}],"source_content_type":"text/x-python","patch_set":20,"id":"4efddba3_45e05446","line":2252,"range":{"start_line":2252,"start_character":4,"end_line":2252,"end_character":8},"updated":"2021-03-11 13:59:15.000000000","message":"the indent seems to be off","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2249,"context_line":"                resource_requests)"},{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"    def create_arq_for_ports(self, context, instance_uuid, hostname,"},{"line_number":2252,"context_line":"        resource_provider_mapping, requested_networks):"},{"line_number":2253,"context_line":"        \"\"\"Create ARQ for ACCELERATOR VNIC \"\"\""},{"line_number":2254,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":2255,"context_line":"        cyclient \u003d cyborg.get_client(context)"}],"source_content_type":"text/x-python","patch_set":20,"id":"f13ccc8e_e2ff6765","line":2252,"range":{"start_line":2252,"start_character":4,"end_line":2252,"end_character":8},"in_reply_to":"4efddba3_45e05446","updated":"2021-03-31 08:27:30.000000000","message":"refer to new implementation.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"    def create_arq_for_ports(self, context, instance_uuid, hostname,"},{"line_number":2252,"context_line":"        resource_provider_mapping, requested_networks):"},{"line_number":2253,"context_line":"        \"\"\"Create ARQ for ACCELERATOR VNIC \"\"\""},{"line_number":2254,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":2255,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2256,"context_line":"        bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"bb4bbcf6_1d0fb904","line":2253,"updated":"2021-03-11 13:59:15.000000000","message":"This function seems to be a mix of at least two. One that creates the arq in cyborg and the other that generates the binding structure. I think the second should be moved to the caller side.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"    def create_arq_for_ports(self, context, instance_uuid, hostname,"},{"line_number":2252,"context_line":"        resource_provider_mapping, requested_networks):"},{"line_number":2253,"context_line":"        \"\"\"Create ARQ for ACCELERATOR VNIC \"\"\""},{"line_number":2254,"context_line":"        neutron \u003d get_client(context, admin\u003dTrue)"},{"line_number":2255,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2256,"context_line":"        bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"c5374bb6_53d53d03","line":2253,"in_reply_to":"bb4bbcf6_1d0fb904","updated":"2021-03-31 08:27:30.000000000","message":"binding and create args is decoupled, move logic to conductor.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2258,"context_line":"        for request_net in requested_networks:"},{"line_number":2259,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":2260,"context_line":"            if request_net.port_id:"},{"line_number":2261,"context_line":"                result \u003d self._get_port_vnic_info("},{"line_number":2262,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":2263,"context_line":"                vnic_type, _, network_id, _,\\"},{"line_number":2264,"context_line":"                     device_profile \u003d result"}],"source_content_type":"text/x-python","patch_set":20,"id":"2c6655dd_8fe6860b","line":2261,"range":{"start_line":2261,"start_character":30,"end_line":2261,"end_character":49},"updated":"2021-03-11 13:59:15.000000000","message":"This means that during a VM boot we will end up querying the same information twice from neutron.\n\nFirst the nova-api service will call _get_port_vnic_info via, \nnova.compute.api.API._validate_and_build_base_options\n-\u003e\nnova.network.neutron.API.create_resource_requests\n\nAnd then the nova-conductor will call this via:\nnova.conductor.manager.ComputeTaskManager.build_instances\n-\u003e\nnova.conductor.manager.ComputeTaskManager._create_and_bind_arq_for_instance\n\nCould you reorganize the logic that we don\u0027t need to query the same information twice from neutron for the same instance? Or can decouple create_arq_for_ports from _get_port_vnic_info ?","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2258,"context_line":"        for request_net in requested_networks:"},{"line_number":2259,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":2260,"context_line":"            if request_net.port_id:"},{"line_number":2261,"context_line":"                result \u003d self._get_port_vnic_info("},{"line_number":2262,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":2263,"context_line":"                vnic_type, _, network_id, _,\\"},{"line_number":2264,"context_line":"                     device_profile \u003d result"}],"source_content_type":"text/x-python","patch_set":20,"id":"6c3098fb_0e167d45","line":2261,"range":{"start_line":2261,"start_character":30,"end_line":2261,"end_character":49},"in_reply_to":"2c6655dd_8fe6860b","updated":"2021-03-31 08:27:30.000000000","message":"By keep the device_profile in reqeust_net.device_profile, it avoid call _get_port_vnic_info twice.\n\nand this function logical is split and re-arrange, and move to conductor.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2260,"context_line":"            if request_net.port_id:"},{"line_number":2261,"context_line":"                result \u003d self._get_port_vnic_info("},{"line_number":2262,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":2263,"context_line":"                vnic_type, _, network_id, _,\\"},{"line_number":2264,"context_line":"                     device_profile \u003d result"},{"line_number":2265,"context_line":""},{"line_number":2266,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"}],"source_content_type":"text/x-python","patch_set":20,"id":"17f63f89_89208489","line":2263,"updated":"2021-03-11 13:59:15.000000000","message":"these unused results shows me that maybe calling _get_port_vnic_info is not a right choice here","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2260,"context_line":"            if request_net.port_id:"},{"line_number":2261,"context_line":"                result \u003d self._get_port_vnic_info("},{"line_number":2262,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":2263,"context_line":"                vnic_type, _, network_id, _,\\"},{"line_number":2264,"context_line":"                     device_profile \u003d result"},{"line_number":2265,"context_line":""},{"line_number":2266,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"}],"source_content_type":"text/x-python","patch_set":20,"id":"ce2ec8b9_e45c352a","line":2263,"in_reply_to":"17f63f89_89208489","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2265,"context_line":""},{"line_number":2266,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2267,"context_line":"                    # create arq"},{"line_number":2268,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2269,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2270,"context_line":"                                            acc_arq)"},{"line_number":2271,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"389d2b28_da022649","line":2268,"updated":"2021-03-11 13:59:15.000000000","message":"what happens if there are two ports requested with device profile. The arq for the first port is created successfully but the arq creation for the second port fails here. How does the first arq is cleaned up?","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2265,"context_line":""},{"line_number":2266,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2267,"context_line":"                    # create arq"},{"line_number":2268,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2269,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2270,"context_line":"                                            acc_arq)"},{"line_number":2271,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"1d8d3c31_7a8ae8e6","line":2268,"in_reply_to":"389d2b28_da022649","updated":"2021-03-31 08:27:30.000000000","message":"refactoring cleanup code, we cover it this situation.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2266,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2267,"context_line":"                    # create arq"},{"line_number":2268,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2269,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2270,"context_line":"                                            acc_arq)"},{"line_number":2271,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2272,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9adb2bea_6a053542","line":2269,"updated":"2021-03-11 13:59:15.000000000","message":"to make this useful please log the the port_id and the instance_uuid too","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2266,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2267,"context_line":"                    # create arq"},{"line_number":2268,"context_line":"                    acc_arq \u003d self._create_arq(context, device_profile)"},{"line_number":2269,"context_line":"                    LOG.debug(\"create ARQ %s for port %s\", acc_arq[\"uuid\"],"},{"line_number":2270,"context_line":"                                            acc_arq)"},{"line_number":2271,"context_line":"                    request_net.arq_uuid \u003d acc_arq[\"uuid\"]"},{"line_number":2272,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"447d4edb_ce9b20ea","line":2269,"in_reply_to":"9adb2bea_6a053542","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"89fe8b1f97ad85c7b823d9a25a97166ceca2d653","unresolved":false,"context_lines":[{"line_number":2105,"context_line":"        return (vnic_type, trusted, network_id, resource_request,"},{"line_number":2106,"context_line":"            numa_policy, device_profile)"},{"line_number":2107,"context_line":""},{"line_number":2108,"context_line":"    def _delete_arq(self, context, arq_uuid):"},{"line_number":2109,"context_line":"        \"\"\"Delete device profile by arq uuid.\"\"\""},{"line_number":2110,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":2111,"context_line":"        cyclient.delete_arqs_by_uuid([arq_uuid])"}],"source_content_type":"text/x-python","patch_set":34,"id":"5c5838e8_1cab3d48","line":2108,"range":{"start_line":2108,"start_character":8,"end_line":2108,"end_character":19},"updated":"2021-06-25 07:29:28.000000000","message":"This is simple call, could directly call cyborg instead.","commit_id":"c21f9aa32b52084a972f86b17a0d97585871b8a0"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"03b1d2c39908220cbd5a3ee4e01fb23bf121262e","unresolved":true,"context_lines":[{"line_number":1611,"context_line":"            rxtx_factor \u003d flavor.get(\u0027rxtx_factor\u0027)"},{"line_number":1612,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":1613,"context_line":"        port_req_body[\u0027port\u0027][constants.BINDING_HOST_ID] \u003d bind_host_id"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"        self._populate_neutron_binding_profile(instance,"},{"line_number":1616,"context_line":"                                               pci_request_id,"},{"line_number":1617,"context_line":"                                               port_req_body,"}],"source_content_type":"text/x-python","patch_set":36,"id":"828fd546_cdfe455d","line":1614,"updated":"2021-06-28 02:06:21.000000000","message":"Irrelevant change.","commit_id":"b8eefae2b850710f2d426c94db52c8afbaffe1bb"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"9161fa5f2377dd495775ae47be4b82830e2b9f0d","unresolved":false,"context_lines":[{"line_number":1611,"context_line":"            rxtx_factor \u003d flavor.get(\u0027rxtx_factor\u0027)"},{"line_number":1612,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":1613,"context_line":"        port_req_body[\u0027port\u0027][constants.BINDING_HOST_ID] \u003d bind_host_id"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"        self._populate_neutron_binding_profile(instance,"},{"line_number":1616,"context_line":"                                               pci_request_id,"},{"line_number":1617,"context_line":"                                               port_req_body,"}],"source_content_type":"text/x-python","patch_set":36,"id":"c6cd09bb_13179653","line":1614,"in_reply_to":"828fd546_cdfe455d","updated":"2021-06-28 06:14:54.000000000","message":"Done","commit_id":"b8eefae2b850710f2d426c94db52c8afbaffe1bb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5dce1cb066a14f09314f6a6e2485c44ec3e76dd5","unresolved":true,"context_lines":[{"line_number":1513,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"    def _populate_neutron_binding_profile(self, instance,"},{"line_number":1516,"context_line":"                                          pci_request_id,"},{"line_number":1517,"context_line":"                                          port_req_body):"},{"line_number":1518,"context_line":"        \"\"\"Populate neutron binding:profile."},{"line_number":1519,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"1dbcfaac_94645afe","line":1516,"updated":"2021-06-29 06:39:28.000000000","message":"this is unrelated change.","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8b3a7965772a3d828fb3a21be468bea150c586c2","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"                                          address\u003dpci_dev.address)"},{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"    def _populate_neutron_binding_profile(self, instance,"},{"line_number":1516,"context_line":"                                          pci_request_id,"},{"line_number":1517,"context_line":"                                          port_req_body):"},{"line_number":1518,"context_line":"        \"\"\"Populate neutron binding:profile."},{"line_number":1519,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"387e17d4_f6eb6f74","line":1516,"in_reply_to":"1dbcfaac_94645afe","updated":"2021-06-29 08:07:02.000000000","message":"Done","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"48d12a4a41dd200c85ba97c96d70d5ee6d87649e","unresolved":true,"context_lines":[{"line_number":2132,"context_line":""},{"line_number":2133,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2134,"context_line":"                    # request groups for port :"},{"line_number":2135,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2136,"context_line":"                    if not device_profile:"},{"line_number":2137,"context_line":"                        err \u003d \u0027device profile is NULL.\u0027"},{"line_number":2138,"context_line":"                        raise exception.DeviceProfileError("}],"source_content_type":"text/x-python","patch_set":37,"id":"fc6dfb44_c4ec7e23","line":2135,"updated":"2021-06-29 06:41:53.000000000","message":"wrong request group example.","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8b3a7965772a3d828fb3a21be468bea150c586c2","unresolved":false,"context_lines":[{"line_number":2132,"context_line":""},{"line_number":2133,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2134,"context_line":"                    # request groups for port :"},{"line_number":2135,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2136,"context_line":"                    if not device_profile:"},{"line_number":2137,"context_line":"                        err \u003d \u0027device profile is NULL.\u0027"},{"line_number":2138,"context_line":"                        raise exception.DeviceProfileError("}],"source_content_type":"text/x-python","patch_set":37,"id":"61769560_68ff6b28","line":2135,"in_reply_to":"fc6dfb44_c4ec7e23","updated":"2021-06-29 08:07:02.000000000","message":"Done","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5dce1cb066a14f09314f6a6e2485c44ec3e76dd5","unresolved":true,"context_lines":[{"line_number":2133,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2134,"context_line":"                    # request groups for port :"},{"line_number":2135,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2136,"context_line":"                    if not device_profile:"},{"line_number":2137,"context_line":"                        err \u003d \u0027device profile is NULL.\u0027"},{"line_number":2138,"context_line":"                        raise exception.DeviceProfileError("},{"line_number":2139,"context_line":"                            name\u003ddevice_profile, msg\u003derr)"}],"source_content_type":"text/x-python","patch_set":37,"id":"0a245fa3_4d100a28","line":2136,"updated":"2021-06-29 06:39:28.000000000","message":"I didn\u0027t see you have test this case.","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8b3a7965772a3d828fb3a21be468bea150c586c2","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"                if vnic_type in network_model.VNIC_TYPES_ACCELERATOR:"},{"line_number":2134,"context_line":"                    # request groups for port :"},{"line_number":2135,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2136,"context_line":"                    if not device_profile:"},{"line_number":2137,"context_line":"                        err \u003d \u0027device profile is NULL.\u0027"},{"line_number":2138,"context_line":"                        raise exception.DeviceProfileError("},{"line_number":2139,"context_line":"                            name\u003ddevice_profile, msg\u003derr)"}],"source_content_type":"text/x-python","patch_set":37,"id":"5c02fa50_4d9eda5c","line":2136,"in_reply_to":"0a245fa3_4d100a28","updated":"2021-06-29 08:07:02.000000000","message":"Done","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5dce1cb066a14f09314f6a6e2485c44ec3e76dd5","unresolved":true,"context_lines":[{"line_number":2134,"context_line":"                    # request groups for port :"},{"line_number":2135,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2136,"context_line":"                    if not device_profile:"},{"line_number":2137,"context_line":"                        err \u003d \u0027device profile is NULL.\u0027"},{"line_number":2138,"context_line":"                        raise exception.DeviceProfileError("},{"line_number":2139,"context_line":"                            name\u003ddevice_profile, msg\u003derr)"},{"line_number":2140,"context_line":"                    dp_request_groups \u003d ("}],"source_content_type":"text/x-python","patch_set":37,"id":"90cf623d_059d86f6","line":2137,"updated":"2021-06-29 06:39:28.000000000","message":"you can say \"no device profile for accelerator\".","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8b3a7965772a3d828fb3a21be468bea150c586c2","unresolved":false,"context_lines":[{"line_number":2134,"context_line":"                    # request groups for port :"},{"line_number":2135,"context_line":"                    #      {\u0027resources:FPGA\u0027: \u00271\u0027, \u0027required\u0027: \u0027MD5\u0027 }"},{"line_number":2136,"context_line":"                    if not device_profile:"},{"line_number":2137,"context_line":"                        err \u003d \u0027device profile is NULL.\u0027"},{"line_number":2138,"context_line":"                        raise exception.DeviceProfileError("},{"line_number":2139,"context_line":"                            name\u003ddevice_profile, msg\u003derr)"},{"line_number":2140,"context_line":"                    dp_request_groups \u003d ("}],"source_content_type":"text/x-python","patch_set":37,"id":"dd98081b_c4785fa8","line":2137,"in_reply_to":"90cf623d_059d86f6","updated":"2021-06-29 08:07:02.000000000","message":"Done","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"81c1cb5b50c5045dc821b9c306c0f14cb9d3fec9","unresolved":true,"context_lines":[{"line_number":6209,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6210,"context_line":"                mock.ANY, network_arqs)"},{"line_number":6211,"context_line":"        else:"},{"line_number":6212,"context_line":"            mock_build_net.assert_called_once_with(self.context, self.instance,"},{"line_number":6213,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6214,"context_line":"                mock.ANY, mock.ANY)"},{"line_number":6215,"context_line":"        return resources"},{"line_number":6216,"context_line":""},{"line_number":6217,"context_line":"    @mock.patch.object(nova.compute.manager.ComputeManager,"}],"source_content_type":"text/x-python","patch_set":29,"id":"17fe05b1_20470acb","line":6214,"range":{"start_line":6212,"start_character":12,"end_line":6214,"end_character":35},"updated":"2021-06-16 10:15:26.000000000","message":"I feel this is useless, since you always pass a value to network_arqs.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":false,"context_lines":[{"line_number":6209,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6210,"context_line":"                mock.ANY, network_arqs)"},{"line_number":6211,"context_line":"        else:"},{"line_number":6212,"context_line":"            mock_build_net.assert_called_once_with(self.context, self.instance,"},{"line_number":6213,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6214,"context_line":"                mock.ANY, mock.ANY)"},{"line_number":6215,"context_line":"        return resources"},{"line_number":6216,"context_line":""},{"line_number":6217,"context_line":"    @mock.patch.object(nova.compute.manager.ComputeManager,"}],"source_content_type":"text/x-python","patch_set":29,"id":"919831bc_4000bb6e","line":6214,"range":{"start_line":6212,"start_character":12,"end_line":6214,"end_character":35},"in_reply_to":"0dcc7d24_a373c847","updated":"2021-06-17 14:24:49.000000000","message":"So it should be {} for network_args? that is the value of self.requested_networks. What error did you get?","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1e845f77b633641135002d2d76aae72a280096af","unresolved":false,"context_lines":[{"line_number":6209,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6210,"context_line":"                mock.ANY, network_arqs)"},{"line_number":6211,"context_line":"        else:"},{"line_number":6212,"context_line":"            mock_build_net.assert_called_once_with(self.context, self.instance,"},{"line_number":6213,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6214,"context_line":"                mock.ANY, mock.ANY)"},{"line_number":6215,"context_line":"        return resources"},{"line_number":6216,"context_line":""},{"line_number":6217,"context_line":"    @mock.patch.object(nova.compute.manager.ComputeManager,"}],"source_content_type":"text/x-python","patch_set":29,"id":"0dcc7d24_a373c847","line":6214,"range":{"start_line":6212,"start_character":12,"end_line":6214,"end_character":35},"in_reply_to":"17fe05b1_20470acb","updated":"2021-06-17 07:33:12.000000000","message":"there does have test case not pass in that rags, line 6222.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":6209,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6210,"context_line":"                mock.ANY, network_arqs)"},{"line_number":6211,"context_line":"        else:"},{"line_number":6212,"context_line":"            mock_build_net.assert_called_once_with(self.context, self.instance,"},{"line_number":6213,"context_line":"                requested_networks, mock.ANY,"},{"line_number":6214,"context_line":"                mock.ANY, mock.ANY)"},{"line_number":6215,"context_line":"        return resources"},{"line_number":6216,"context_line":""},{"line_number":6217,"context_line":"    @mock.patch.object(nova.compute.manager.ComputeManager,"}],"source_content_type":"text/x-python","patch_set":29,"id":"a798025b_4638ad4f","line":6214,"range":{"start_line":6212,"start_character":12,"end_line":6214,"end_character":35},"in_reply_to":"919831bc_4000bb6e","updated":"2021-06-18 07:04:53.000000000","message":"good catch, the key problem is that: i should modify the test case instead mess the checking process.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"080d2a85b6f4a5a0e82aceaa29fba1a07b972cae","unresolved":true,"context_lines":[{"line_number":6231,"context_line":""},{"line_number":6232,"context_line":"    @mock.patch.object(nova.compute.manager.ComputeManager,"},{"line_number":6233,"context_line":"                       \u0027_get_bound_arq_resources\u0027)"},{"line_number":6234,"context_line":"    def test_accel_build_resources_exception(self, mock_get_arqs):"},{"line_number":6235,"context_line":"        dp_name \u003d \"mydp\""},{"line_number":6236,"context_line":"        self.instance.flavor.extra_specs \u003d {\"accel:device_profile\": dp_name}"},{"line_number":6237,"context_line":"        arq_list \u003d fixtures.CyborgFixture.bound_arq_list"}],"source_content_type":"text/x-python","patch_set":39,"id":"d2fa7e5f_ee5a5504","line":6234,"updated":"2021-06-30 07:50:28.000000000","message":"I think this is the fault of your patch split work. This test doesn\u0027t belong to this patch, it should be the next one.","commit_id":"399b30b451c50e018a29da99b781cbc6e0598906"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"3d90f92c8efa5872abd2a4878a40b1ab7d535dd2","unresolved":false,"context_lines":[{"line_number":6231,"context_line":""},{"line_number":6232,"context_line":"    @mock.patch.object(nova.compute.manager.ComputeManager,"},{"line_number":6233,"context_line":"                       \u0027_get_bound_arq_resources\u0027)"},{"line_number":6234,"context_line":"    def test_accel_build_resources_exception(self, mock_get_arqs):"},{"line_number":6235,"context_line":"        dp_name \u003d \"mydp\""},{"line_number":6236,"context_line":"        self.instance.flavor.extra_specs \u003d {\"accel:device_profile\": dp_name}"},{"line_number":6237,"context_line":"        arq_list \u003d fixtures.CyborgFixture.bound_arq_list"}],"source_content_type":"text/x-python","patch_set":39,"id":"f15ee2b7_66e13d30","line":6234,"in_reply_to":"d2fa7e5f_ee5a5504","updated":"2021-06-30 07:55:04.000000000","message":"Done","commit_id":"399b30b451c50e018a29da99b781cbc6e0598906"}],"nova/tests/unit/conductor/test_conductor.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        self.conductor._create_and_bind_arqs(self.context,"},{"line_number":2328,"context_line":"            instance.uuid, instance.flavor.extra_specs,"},{"line_number":2329,"context_line":"            hostname, resource_provider_mapping\u003dmock.ANY,"},{"line_number":2330,"context_line":"            requested_networks \u003d requests)"},{"line_number":2331,"context_line":""},{"line_number":2332,"context_line":"        mock_get.assert_called_once_with(arq_in_list[0][\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"92d4e8da_a18eea6b","line":2329,"range":{"start_line":2329,"start_character":48,"end_line":2329,"end_character":56},"updated":"2021-03-11 13:59:15.000000000","message":"if you need to pass in something arbitrary then please use mock.sentinel instead of mock.ANY. However your test here needs a real mapping passed to be able to assert that the device_rp_uuid is actually coming from this resource_provider_mapping.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        self.conductor._create_and_bind_arqs(self.context,"},{"line_number":2328,"context_line":"            instance.uuid, instance.flavor.extra_specs,"},{"line_number":2329,"context_line":"            hostname, resource_provider_mapping\u003dmock.ANY,"},{"line_number":2330,"context_line":"            requested_networks \u003d requests)"},{"line_number":2331,"context_line":""},{"line_number":2332,"context_line":"        mock_get.assert_called_once_with(arq_in_list[0][\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"a50bd112_fa7d83bd","line":2329,"range":{"start_line":2329,"start_character":48,"end_line":2329,"end_character":56},"in_reply_to":"92d4e8da_a18eea6b","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2330,"context_line":"            requested_networks \u003d requests)"},{"line_number":2331,"context_line":""},{"line_number":2332,"context_line":"        mock_get.assert_called_once_with(arq_in_list[0][\u0027uuid\u0027],"},{"line_number":2333,"context_line":"            mock.ANY, mock.ANY)"},{"line_number":2334,"context_line":""},{"line_number":2335,"context_line":"        expected_bindings \u003d {"},{"line_number":2336,"context_line":"            \u0027b59d34d3-787b-4fb0-a6b9-019cd81172f8\u0027:"}],"source_content_type":"text/x-python","patch_set":20,"id":"39acc31b_7a56c9eb","line":2333,"updated":"2021-03-11 13:59:15.000000000","message":"these mock.ANYs also makes me wonder if this test really covers the code or just covers parts of it","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"            requested_networks \u003d requests)"},{"line_number":2331,"context_line":""},{"line_number":2332,"context_line":"        mock_get.assert_called_once_with(arq_in_list[0][\u0027uuid\u0027],"},{"line_number":2333,"context_line":"            mock.ANY, mock.ANY)"},{"line_number":2334,"context_line":""},{"line_number":2335,"context_line":"        expected_bindings \u003d {"},{"line_number":2336,"context_line":"            \u0027b59d34d3-787b-4fb0-a6b9-019cd81172f8\u0027:"}],"source_content_type":"text/x-python","patch_set":20,"id":"d70f1159_df59f69f","line":2333,"in_reply_to":"39acc31b_7a56c9eb","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2335,"context_line":"        expected_bindings \u003d {"},{"line_number":2336,"context_line":"            \u0027b59d34d3-787b-4fb0-a6b9-019cd81172f8\u0027:"},{"line_number":2337,"context_line":"                {\u0027hostname\u0027: hostname,"},{"line_number":2338,"context_line":"                 \u0027device_rp_uuid\u0027: mock.ANY,"},{"line_number":2339,"context_line":"                 \u0027instance_uuid\u0027: instance.uuid}"},{"line_number":2340,"context_line":"        }"},{"line_number":2341,"context_line":"        mock_bind.assert_called_once_with(bindings\u003dexpected_bindings)"}],"source_content_type":"text/x-python","patch_set":20,"id":"6bb26307_39a2a576","line":2338,"updated":"2021-03-11 13:59:15.000000000","message":"please assert that the code under test selects the rp from the mapping properly","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"        expected_bindings \u003d {"},{"line_number":2336,"context_line":"            \u0027b59d34d3-787b-4fb0-a6b9-019cd81172f8\u0027:"},{"line_number":2337,"context_line":"                {\u0027hostname\u0027: hostname,"},{"line_number":2338,"context_line":"                 \u0027device_rp_uuid\u0027: mock.ANY,"},{"line_number":2339,"context_line":"                 \u0027instance_uuid\u0027: instance.uuid}"},{"line_number":2340,"context_line":"        }"},{"line_number":2341,"context_line":"        mock_bind.assert_called_once_with(bindings\u003dexpected_bindings)"}],"source_content_type":"text/x-python","patch_set":20,"id":"b2e9cf02_2aac4da3","line":2338,"in_reply_to":"6bb26307_39a2a576","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2362,"context_line":"                    hostname, resource_provider_mapping\u003dmock.ANY,"},{"line_number":2363,"context_line":"                    requested_networks \u003d requests)"},{"line_number":2364,"context_line":""},{"line_number":2365,"context_line":"        self.assertIn(\"Arq Not found\", ex.message)"},{"line_number":2366,"context_line":""},{"line_number":2367,"context_line":"    @mock.patch(\u0027nova.availability_zones.get_host_availability_zone\u0027)"},{"line_number":2368,"context_line":"    @mock.patch(\u0027nova.compute.rpcapi.ComputeAPI.build_and_run_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3c7168f3_0ea0b0f5","line":2365,"updated":"2021-03-11 13:59:15.000000000","message":"I think you can simply say that\n\n    self.assertEqual(mock_create.side_effect, ex)","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2362,"context_line":"                    hostname, resource_provider_mapping\u003dmock.ANY,"},{"line_number":2363,"context_line":"                    requested_networks \u003d requests)"},{"line_number":2364,"context_line":""},{"line_number":2365,"context_line":"        self.assertIn(\"Arq Not found\", ex.message)"},{"line_number":2366,"context_line":""},{"line_number":2367,"context_line":"    @mock.patch(\u0027nova.availability_zones.get_host_availability_zone\u0027)"},{"line_number":2368,"context_line":"    @mock.patch(\u0027nova.compute.rpcapi.ComputeAPI.build_and_run_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"545f6f71_2e9183fc","line":2365,"in_reply_to":"3c7168f3_0ea0b0f5","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":2918,"context_line":""},{"line_number":2919,"context_line":"        mock_create_bind_arqs.assert_called_once_with("},{"line_number":2920,"context_line":"            params[\u0027context\u0027], instance.uuid, mock.ANY,"},{"line_number":2921,"context_line":"            \u0027node1\u0027, mock.ANY, requests)"},{"line_number":2922,"context_line":""},{"line_number":2923,"context_line":"    @mock.patch.object(conductor_manager.ComputeTaskManager,"},{"line_number":2924,"context_line":"                       \u0027_cleanup_build_artifacts\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ffd9c68e_ba8e6015","line":2921,"updated":"2021-03-11 13:59:15.000000000","message":"please try to get rid of the mock.ANY matchers if possible it degrades the usefulness of the test","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":2918,"context_line":""},{"line_number":2919,"context_line":"        mock_create_bind_arqs.assert_called_once_with("},{"line_number":2920,"context_line":"            params[\u0027context\u0027], instance.uuid, mock.ANY,"},{"line_number":2921,"context_line":"            \u0027node1\u0027, mock.ANY, requests)"},{"line_number":2922,"context_line":""},{"line_number":2923,"context_line":"    @mock.patch.object(conductor_manager.ComputeTaskManager,"},{"line_number":2924,"context_line":"                       \u0027_cleanup_build_artifacts\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"16b71ec2_06402dc7","line":2921,"in_reply_to":"ffd9c68e_ba8e6015","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":true,"context_lines":[{"line_number":2341,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":2342,"context_line":"    def test_create_arq_for_port("},{"line_number":2343,"context_line":"            self, mock_create_arq, mock_port_get, mock_neutron,"},{"line_number":2344,"context_line":"            get_uuid):"},{"line_number":2345,"context_line":"        \"\"\"Test create arq for ports\"\"\""},{"line_number":2346,"context_line":"        dp_name \u003d \u0027smart_nic\u0027"},{"line_number":2347,"context_line":"        req_group_id \u003d \u0027device_profile_0_\u0027 + uuids.id"}],"source_content_type":"text/x-python","patch_set":29,"id":"0e5d6d47_10f43e18","line":2344,"range":{"start_line":2344,"start_character":12,"end_line":2344,"end_character":20},"updated":"2021-06-17 14:24:49.000000000","message":"nit, mock_get_uuid","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":2341,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":2342,"context_line":"    def test_create_arq_for_port("},{"line_number":2343,"context_line":"            self, mock_create_arq, mock_port_get, mock_neutron,"},{"line_number":2344,"context_line":"            get_uuid):"},{"line_number":2345,"context_line":"        \"\"\"Test create arq for ports\"\"\""},{"line_number":2346,"context_line":"        dp_name \u003d \u0027smart_nic\u0027"},{"line_number":2347,"context_line":"        req_group_id \u003d \u0027device_profile_0_\u0027 + uuids.id"}],"source_content_type":"text/x-python","patch_set":29,"id":"c5c9ca26_1b2acbf9","line":2344,"range":{"start_line":2344,"start_character":12,"end_line":2344,"end_character":20},"in_reply_to":"0e5d6d47_10f43e18","updated":"2021-06-18 07:04:53.000000000","message":"Done","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":true,"context_lines":[{"line_number":2366,"context_line":"                 \u0027device_rp_uuid\u0027: req_group_id,"},{"line_number":2367,"context_line":"                 \u0027instance_uuid\u0027: inst_uuid}"},{"line_number":2368,"context_line":"        }"},{"line_number":2369,"context_line":"        rp_map \u003d {}"},{"line_number":2370,"context_line":""},{"line_number":2371,"context_line":"        bindings \u003d self.conductor._create_arqs_for_ports("},{"line_number":2372,"context_line":"            cyclient, inst_uuid, requests, \u0027host0\u0027, rp_map)"}],"source_content_type":"text/x-python","patch_set":29,"id":"aae24d42_4cfe5b46","line":2369,"range":{"start_line":2369,"start_character":8,"end_line":2369,"end_character":19},"updated":"2021-06-17 14:24:49.000000000","message":"if you fake a rp_map, then you needn\u0027t \u0027get_arq_device_rp_uuid\u0027?","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":2366,"context_line":"                 \u0027device_rp_uuid\u0027: req_group_id,"},{"line_number":2367,"context_line":"                 \u0027instance_uuid\u0027: inst_uuid}"},{"line_number":2368,"context_line":"        }"},{"line_number":2369,"context_line":"        rp_map \u003d {}"},{"line_number":2370,"context_line":""},{"line_number":2371,"context_line":"        bindings \u003d self.conductor._create_arqs_for_ports("},{"line_number":2372,"context_line":"            cyclient, inst_uuid, requests, \u0027host0\u0027, rp_map)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ccc0b3de_0bb3e0c7","line":2369,"range":{"start_line":2369,"start_character":8,"end_line":2369,"end_character":19},"in_reply_to":"aae24d42_4cfe5b46","updated":"2021-06-18 07:04:53.000000000","message":"Good idea. done.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eec348af37f0510ea0d1d4f6269eeafc46855835","unresolved":true,"context_lines":[{"line_number":2377,"context_line":"    @mock.patch(\u0027nova.network.neutron.API._get_port_vnic_info\u0027)"},{"line_number":2378,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.\u0027"},{"line_number":2379,"context_line":"                \u0027get_arq_device_rp_uuid\u0027)"},{"line_number":2380,"context_line":"    def test_create_bind_arqs_from_device_profile(self, mock_get,"},{"line_number":2381,"context_line":"            mock_port_get, mock_create):"},{"line_number":2382,"context_line":"        hostname \u003d \u0027myhost\u0027"},{"line_number":2383,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context)"}],"source_content_type":"text/x-python","patch_set":29,"id":"4431c7fe_bdd3b96e","line":2380,"range":{"start_line":2380,"start_character":8,"end_line":2380,"end_character":49},"updated":"2021-06-17 14:24:49.000000000","message":"what different with previous test?","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a0c17c2485723f94d26d8e1c0c71b274b2cad840","unresolved":false,"context_lines":[{"line_number":2377,"context_line":"    @mock.patch(\u0027nova.network.neutron.API._get_port_vnic_info\u0027)"},{"line_number":2378,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.\u0027"},{"line_number":2379,"context_line":"                \u0027get_arq_device_rp_uuid\u0027)"},{"line_number":2380,"context_line":"    def test_create_bind_arqs_from_device_profile(self, mock_get,"},{"line_number":2381,"context_line":"            mock_port_get, mock_create):"},{"line_number":2382,"context_line":"        hostname \u003d \u0027myhost\u0027"},{"line_number":2383,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context)"}],"source_content_type":"text/x-python","patch_set":29,"id":"03a23a0c_625aaf6a","line":2380,"range":{"start_line":2380,"start_character":8,"end_line":2380,"end_character":49},"in_reply_to":"4431c7fe_bdd3b96e","updated":"2021-06-18 07:04:53.000000000","message":"drop this test.","commit_id":"c6ab3c1b0bb3e893f7fff065dea25b05a5b0f737"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4b5ab806474d1cb1e2a85ec4aadf06311b86529","unresolved":true,"context_lines":[{"line_number":2387,"context_line":"             \u00271\u0027, None, None, dp_name)"},{"line_number":2388,"context_line":"        arq_uuid \u003d arq_in_list[0][\u0027uuid\u0027]"},{"line_number":2389,"context_line":""},{"line_number":2390,"context_line":"        # muliti device request"},{"line_number":2391,"context_line":"        mock_create.return_value \u003d [arq_in_list[0], arq_in_list[0]]"},{"line_number":2392,"context_line":"        rp_map \u003d {\"request_group_0\" + str(port_id): rp_uuid}"},{"line_number":2393,"context_line":"        request_tuples \u003d [(\u0027123\u0027, \u00271.2.3.4\u0027, port_id,"}],"source_content_type":"text/x-python","patch_set":43,"id":"66dd2f51_e6bb7c44","line":2390,"range":{"start_line":2390,"start_character":10,"end_line":2390,"end_character":16},"updated":"2021-07-13 15:10:14.000000000","message":"nit:multi","commit_id":"3ad2e152292b0626834c48bf2a2a80b8d06283cd"}],"nova/tests/unit/network/test_neutron.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":424,"context_line":"                               \u0027router_id\u0027: \u0027router_id1\u0027}"},{"line_number":425,"context_line":"        self._returned_nw_info \u003d []"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        self.arqs \u003d [{\u0027uuid\u0027: uuids.arq_uuid,"},{"line_number":428,"context_line":"                    \u0027device_profile_name\u0027: \"smart_nic\","},{"line_number":429,"context_line":"                    \u0027device_profile_group_id\u0027: \u00275\u0027,"},{"line_number":430,"context_line":"                    \u0027state\u0027: \u0027Bound\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"aa942bb5_103268b8","line":427,"range":{"start_line":427,"start_character":20,"end_line":427,"end_character":22},"updated":"2021-03-11 13:59:15.000000000","message":"split the line in between that way you can align the two arq dict visually","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                               \u0027router_id\u0027: \u0027router_id1\u0027}"},{"line_number":425,"context_line":"        self._returned_nw_info \u003d []"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        self.arqs \u003d [{\u0027uuid\u0027: uuids.arq_uuid,"},{"line_number":428,"context_line":"                    \u0027device_profile_name\u0027: \"smart_nic\","},{"line_number":429,"context_line":"                    \u0027device_profile_group_id\u0027: \u00275\u0027,"},{"line_number":430,"context_line":"                    \u0027state\u0027: \u0027Bound\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"2cb21b82_2024a3d6","line":427,"range":{"start_line":427,"start_character":20,"end_line":427,"end_character":22},"in_reply_to":"aa942bb5_103268b8","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":451,"context_line":"                        \u0027physical_network\u0027: \u0027physicalnet1\u0027"},{"line_number":452,"context_line":"                    },"},{"line_number":453,"context_line":"                    \u0027attach_handle_type\u0027: \u0027PCI\u0027"},{"line_number":454,"context_line":"                }]"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def _fake_instance_object(self, instance):"},{"line_number":457,"context_line":"        return fake_instance.fake_instance_obj(self.context, **instance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"00d0fc22_9e62e987","line":454,"updated":"2021-03-11 13:59:15.000000000","message":"I don\u0027t see any differences between these two arqs, not even their uuids. It does not seems realistic","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                        \u0027physical_network\u0027: \u0027physicalnet1\u0027"},{"line_number":452,"context_line":"                    },"},{"line_number":453,"context_line":"                    \u0027attach_handle_type\u0027: \u0027PCI\u0027"},{"line_number":454,"context_line":"                }]"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def _fake_instance_object(self, instance):"},{"line_number":457,"context_line":"        return fake_instance.fake_instance_obj(self.context, **instance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"161801d9_ce031210","line":454,"in_reply_to":"00d0fc22_9e62e987","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":5024,"context_line":"        result \u003d self.api._get_preexisting_port_ids(instance)"},{"line_number":5025,"context_line":"        self.assertEqual([\u00272\u0027, \u00273\u0027], result, \"Invalid preexisting ports\")"},{"line_number":5026,"context_line":""},{"line_number":5027,"context_line":"    @mock.patch(\u0027nova.network.neutron.API._show_port\u0027)"},{"line_number":5028,"context_line":"    def _test_unbind_ports_get_client(self, mock_neutron, mock_show):"},{"line_number":5029,"context_line":"        mock_ctx \u003d mock.Mock(is_admin\u003dFalse)"},{"line_number":5030,"context_line":"        ports \u003d [\"1\", \"2\", \"3\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"b1681809_46cedeb4","line":5027,"updated":"2021-03-11 13:59:15.000000000","message":"Why do we need this change? I don\u0027t see how the change in unbind_port needs this change in the test.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":5024,"context_line":"        result \u003d self.api._get_preexisting_port_ids(instance)"},{"line_number":5025,"context_line":"        self.assertEqual([\u00272\u0027, \u00273\u0027], result, \"Invalid preexisting ports\")"},{"line_number":5026,"context_line":""},{"line_number":5027,"context_line":"    @mock.patch(\u0027nova.network.neutron.API._show_port\u0027)"},{"line_number":5028,"context_line":"    def _test_unbind_ports_get_client(self, mock_neutron, mock_show):"},{"line_number":5029,"context_line":"        mock_ctx \u003d mock.Mock(is_admin\u003dFalse)"},{"line_number":5030,"context_line":"        ports \u003d [\"1\", \"2\", \"3\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"4c4f4234_5fa4acca","line":5027,"in_reply_to":"b1681809_46cedeb4","updated":"2021-03-31 08:27:30.000000000","message":"mock_neutron would give you a mock world. fool the logic, the mock_neutron give you anything, but none, that\u0027s tigger the arq deleting unexpected.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":5890,"context_line":"            mock_from_port_request,"},{"line_number":5891,"context_line":"            mock_get_device_profile,"},{"line_number":5892,"context_line":"            mock_create_arq,"},{"line_number":5893,"context_line":"            mock_get_physnet_tunneled_info):"},{"line_number":5894,"context_line":"        requested_networks \u003d objects.NetworkRequestList("},{"line_number":5895,"context_line":"                objects \u003d ["},{"line_number":5896,"context_line":"                        objects.NetworkRequest(port_id\u003duuids.portid_1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"915ad766_b4b7beb0","line":5893,"updated":"2021-03-11 13:59:15.000000000","message":"if you choose to indent the signature as one parameter per line (which is OK) then please put the \u0027):\u0027 at a new line and remove one level of indent from before the paramteres","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":5890,"context_line":"            mock_from_port_request,"},{"line_number":5891,"context_line":"            mock_get_device_profile,"},{"line_number":5892,"context_line":"            mock_create_arq,"},{"line_number":5893,"context_line":"            mock_get_physnet_tunneled_info):"},{"line_number":5894,"context_line":"        requested_networks \u003d objects.NetworkRequestList("},{"line_number":5895,"context_line":"                objects \u003d ["},{"line_number":5896,"context_line":"                        objects.NetworkRequest(port_id\u003duuids.portid_1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"03dcb14e_cef08e25","line":5893,"in_reply_to":"915ad766_b4b7beb0","updated":"2021-03-31 08:27:30.000000000","message":"Done. the multi paras per line seems better. thanks.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":5905,"context_line":"        mock_get_physnet_tunneled_info.side_effect \u003d ["},{"line_number":5906,"context_line":"            (\u0027physnet1\u0027, False), (\u0027physnet2\u0027, False)"},{"line_number":5907,"context_line":"         ]"},{"line_number":5908,"context_line":"        mock_get_device_profile.return_value \u003d {\u0027COSTOM_NIC_TRAIT\u0027: \u0027FPGA\u0027}"},{"line_number":5909,"context_line":"        mock_create_arq.return_value \u003d self.arqs"},{"line_number":5910,"context_line":"        result \u003d self.api.create_resource_requests("},{"line_number":5911,"context_line":"            self.context, requested_networks, pci_requests\u003dNone)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9b5dc97d_de02567c","line":5908,"range":{"start_line":5908,"start_character":49,"end_line":5908,"end_character":65},"updated":"2021-03-11 13:59:15.000000000","message":"CUSTOM_...","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":5905,"context_line":"        mock_get_physnet_tunneled_info.side_effect \u003d ["},{"line_number":5906,"context_line":"            (\u0027physnet1\u0027, False), (\u0027physnet2\u0027, False)"},{"line_number":5907,"context_line":"         ]"},{"line_number":5908,"context_line":"        mock_get_device_profile.return_value \u003d {\u0027COSTOM_NIC_TRAIT\u0027: \u0027FPGA\u0027}"},{"line_number":5909,"context_line":"        mock_create_arq.return_value \u003d self.arqs"},{"line_number":5910,"context_line":"        result \u003d self.api.create_resource_requests("},{"line_number":5911,"context_line":"            self.context, requested_networks, pci_requests\u003dNone)"}],"source_content_type":"text/x-python","patch_set":20,"id":"06a5cd5f_35707315","line":5908,"range":{"start_line":5908,"start_character":49,"end_line":5908,"end_character":65},"in_reply_to":"9b5dc97d_de02567c","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":6553,"context_line":"                             constants.BINDING_PROFILE])"},{"line_number":6554,"context_line":""},{"line_number":6555,"context_line":"    def test_populate_neutron_extension_values_binding_arq(self,"},{"line_number":6556,"context_line":"                                         ):"},{"line_number":6557,"context_line":"        host_id \u003d \u0027my_host_id\u0027"},{"line_number":6558,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":6559,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":20,"id":"5d8972a6_a3ff05d8","line":6556,"range":{"start_line":6556,"start_character":3,"end_line":6556,"end_character":41},"updated":"2021-03-11 13:59:15.000000000","message":"please fix the indent","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":6553,"context_line":"                             constants.BINDING_PROFILE])"},{"line_number":6554,"context_line":""},{"line_number":6555,"context_line":"    def test_populate_neutron_extension_values_binding_arq(self,"},{"line_number":6556,"context_line":"                                         ):"},{"line_number":6557,"context_line":"        host_id \u003d \u0027my_host_id\u0027"},{"line_number":6558,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":6559,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":20,"id":"e3ad564c_104252c7","line":6556,"range":{"start_line":6556,"start_character":3,"end_line":6556,"end_character":41},"in_reply_to":"5d8972a6_a3ff05d8","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":6558,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":6559,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"},{"line_number":6560,"context_line":"        profile \u003d {\u0027arq_uuid\u0027: self.arqs[0][\u0027uuid\u0027],"},{"line_number":6561,"context_line":"                      \u0027pci_slot\u0027: \u00270000:0c:0.0\u0027,"},{"line_number":6562,"context_line":"                     \u0027physical_network\u0027: \u0027physicalnet1\u0027,"},{"line_number":6563,"context_line":"        }"},{"line_number":6564,"context_line":"        self.api._populate_neutron_binding_profile(instance,"}],"source_content_type":"text/x-python","patch_set":20,"id":"cfcf698f_9845d893","line":6561,"range":{"start_line":6561,"start_character":15,"end_line":6561,"end_character":22},"updated":"2021-03-11 13:59:15.000000000","message":"please fix the indent","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":6558,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":6559,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"},{"line_number":6560,"context_line":"        profile \u003d {\u0027arq_uuid\u0027: self.arqs[0][\u0027uuid\u0027],"},{"line_number":6561,"context_line":"                      \u0027pci_slot\u0027: \u00270000:0c:0.0\u0027,"},{"line_number":6562,"context_line":"                     \u0027physical_network\u0027: \u0027physicalnet1\u0027,"},{"line_number":6563,"context_line":"        }"},{"line_number":6564,"context_line":"        self.api._populate_neutron_binding_profile(instance,"}],"source_content_type":"text/x-python","patch_set":20,"id":"f284ece6_f034c084","line":6561,"range":{"start_line":6561,"start_character":15,"end_line":6561,"end_character":22},"in_reply_to":"cfcf698f_9845d893","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":6568,"context_line":""},{"line_number":6569,"context_line":"        self.assertEqual(profile,"},{"line_number":6570,"context_line":"                         port_req_body[\u0027port\u0027]["},{"line_number":6571,"context_line":"                             constants.BINDING_PROFILE])"},{"line_number":6572,"context_line":""},{"line_number":6573,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_refresh_neutron_extensions_cache\u0027)"},{"line_number":6574,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.get_arqs_for_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a1159f1_5b210f9a","line":6571,"updated":"2021-03-11 13:59:15.000000000","message":"this would read better if indented like:\n\n        self.assertEqual(\n            profile,\n            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE])","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":6568,"context_line":""},{"line_number":6569,"context_line":"        self.assertEqual(profile,"},{"line_number":6570,"context_line":"                         port_req_body[\u0027port\u0027]["},{"line_number":6571,"context_line":"                             constants.BINDING_PROFILE])"},{"line_number":6572,"context_line":""},{"line_number":6573,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_refresh_neutron_extensions_cache\u0027)"},{"line_number":6574,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.get_arqs_for_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5e63421b_49607f32","line":6571,"in_reply_to":"5a1159f1_5b210f9a","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":6573,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_refresh_neutron_extensions_cache\u0027)"},{"line_number":6574,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.get_arqs_for_instance\u0027)"},{"line_number":6575,"context_line":"    def test_populate_neutron_extension_values_with_arq(self,"},{"line_number":6576,"context_line":"                                         mock_get_arq, mock_referesh_cache):"},{"line_number":6577,"context_line":"        host_id \u003d \u0027my_host_id\u0027"},{"line_number":6578,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":6579,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":20,"id":"70aacc7a_a2c4e08a","line":6576,"range":{"start_line":6576,"start_character":26,"end_line":6576,"end_character":40},"updated":"2021-03-11 13:59:15.000000000","message":"please fix the indent","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":6573,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_refresh_neutron_extensions_cache\u0027)"},{"line_number":6574,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.get_arqs_for_instance\u0027)"},{"line_number":6575,"context_line":"    def test_populate_neutron_extension_values_with_arq(self,"},{"line_number":6576,"context_line":"                                         mock_get_arq, mock_referesh_cache):"},{"line_number":6577,"context_line":"        host_id \u003d \u0027my_host_id\u0027"},{"line_number":6578,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":6579,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":20,"id":"30027cbc_42d9c306","line":6576,"range":{"start_line":6576,"start_character":26,"end_line":6576,"end_character":40},"in_reply_to":"70aacc7a_a2c4e08a","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":6591,"context_line":""},{"line_number":6592,"context_line":"        self.assertEqual(profile,"},{"line_number":6593,"context_line":"                         port_req_body[\u0027port\u0027]["},{"line_number":6594,"context_line":"                             constants.BINDING_PROFILE])"},{"line_number":6595,"context_line":""},{"line_number":6596,"context_line":"    @mock.patch.object(pci_whitelist.Whitelist, \u0027get_devspec\u0027)"},{"line_number":6597,"context_line":"    @mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"08961d76_5f2593a0","line":6594,"updated":"2021-03-11 13:59:15.000000000","message":"ditto","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":6591,"context_line":""},{"line_number":6592,"context_line":"        self.assertEqual(profile,"},{"line_number":6593,"context_line":"                         port_req_body[\u0027port\u0027]["},{"line_number":6594,"context_line":"                             constants.BINDING_PROFILE])"},{"line_number":6595,"context_line":""},{"line_number":6596,"context_line":"    @mock.patch.object(pci_whitelist.Whitelist, \u0027get_devspec\u0027)"},{"line_number":6597,"context_line":"    @mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"6b5b94f8_a6a49786","line":6594,"in_reply_to":"08961d76_5f2593a0","updated":"2021-03-31 08:27:30.000000000","message":"Done","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":7025,"context_line":"        instance \u003d self._fake_instance_object(self.instance)"},{"line_number":7026,"context_line":"        mock_get_arq.return_value \u003d self.arqs"},{"line_number":7027,"context_line":"        arqs \u003d self.api._get_bound_arq_resources(self.context, instance)"},{"line_number":7028,"context_line":"        self.assertEqual(self.arqs, arqs)"},{"line_number":7029,"context_line":""},{"line_number":7030,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.get_arqs_for_instance\u0027)"},{"line_number":7031,"context_line":"    def test_get_bound_arq(self, mock_get_arq):"}],"source_content_type":"text/x-python","patch_set":20,"id":"a4c3f539_bde552ad","line":7028,"updated":"2021-03-11 13:59:15.000000000","message":"please assert the call on mock_get_arq","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":7025,"context_line":"        instance \u003d self._fake_instance_object(self.instance)"},{"line_number":7026,"context_line":"        mock_get_arq.return_value \u003d self.arqs"},{"line_number":7027,"context_line":"        arqs \u003d self.api._get_bound_arq_resources(self.context, instance)"},{"line_number":7028,"context_line":"        self.assertEqual(self.arqs, arqs)"},{"line_number":7029,"context_line":""},{"line_number":7030,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.get_arqs_for_instance\u0027)"},{"line_number":7031,"context_line":"    def test_get_bound_arq(self, mock_get_arq):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3318b1f3_02887c12","line":7028,"in_reply_to":"a4c3f539_bde552ad","updated":"2021-03-31 08:27:30.000000000","message":"this function is  refactored and most logic move to compute.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":7034,"context_line":"        mock_get_arq.return_value \u003d self.arqs"},{"line_number":7035,"context_line":"        arq \u003d self.api._get_bound_arq(self.context, instance,"},{"line_number":7036,"context_line":"                            self.arqs[0][\u0027uuid\u0027])"},{"line_number":7037,"context_line":"        self.assertEqual(self.arqs[0], arq)"},{"line_number":7038,"context_line":""},{"line_number":7039,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":7040,"context_line":"    def test_create_arq(self, mock_create_arq):"}],"source_content_type":"text/x-python","patch_set":20,"id":"f8b9cc6e_166db02b","line":7037,"updated":"2021-03-11 13:59:15.000000000","message":"please assert the call on mock_get_arq","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":7034,"context_line":"        mock_get_arq.return_value \u003d self.arqs"},{"line_number":7035,"context_line":"        arq \u003d self.api._get_bound_arq(self.context, instance,"},{"line_number":7036,"context_line":"                            self.arqs[0][\u0027uuid\u0027])"},{"line_number":7037,"context_line":"        self.assertEqual(self.arqs[0], arq)"},{"line_number":7038,"context_line":""},{"line_number":7039,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":7040,"context_line":"    def test_create_arq(self, mock_create_arq):"}],"source_content_type":"text/x-python","patch_set":20,"id":"9e5fe16e_1f7a7188","line":7037,"in_reply_to":"f8b9cc6e_166db02b","updated":"2021-03-31 08:27:30.000000000","message":"this function is  refactored and most logic move to compute.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":7038,"context_line":""},{"line_number":7039,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":7040,"context_line":"    def test_create_arq(self, mock_create_arq):"},{"line_number":7041,"context_line":"        \"\"\"Test get bound arq\"\"\""},{"line_number":7042,"context_line":"        arq \u003d [self.arqs[0]]"},{"line_number":7043,"context_line":"        mock_create_arq.return_value \u003d arq"},{"line_number":7044,"context_line":"        dp_name \u003d \u0027smart_nic\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5de79a79_46bb822c","line":7041,"updated":"2021-03-11 13:59:15.000000000","message":"copy-paste","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":7038,"context_line":""},{"line_number":7039,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":7040,"context_line":"    def test_create_arq(self, mock_create_arq):"},{"line_number":7041,"context_line":"        \"\"\"Test get bound arq\"\"\""},{"line_number":7042,"context_line":"        arq \u003d [self.arqs[0]]"},{"line_number":7043,"context_line":"        mock_create_arq.return_value \u003d arq"},{"line_number":7044,"context_line":"        dp_name \u003d \u0027smart_nic\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"a181bb80_48ddc4e3","line":7041,"in_reply_to":"5de79a79_46bb822c","updated":"2021-03-31 08:27:30.000000000","message":"this function is  refactored and most logic move to compute. this function is deleted, it did not necessary, call cyborg directly.","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"782eb900a4808fbde4464848497940115450980a","unresolved":true,"context_lines":[{"line_number":7043,"context_line":"        mock_create_arq.return_value \u003d arq"},{"line_number":7044,"context_line":"        dp_name \u003d \u0027smart_nic\u0027"},{"line_number":7045,"context_line":"        arq \u003d self.api._create_arq(self.context, dp_name)"},{"line_number":7046,"context_line":"        self.assertEqual(self.arqs[0], arq)"},{"line_number":7047,"context_line":""},{"line_number":7048,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.\u0027"},{"line_number":7049,"context_line":"                \u0027get_arq_device_rp_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dfeb6f1e_1bc8cc58","line":7046,"updated":"2021-03-11 13:59:15.000000000","message":"please assert the call on mock_create_arq","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ccaf07d85cad7f0e22e7351138c613e386f93d69","unresolved":false,"context_lines":[{"line_number":7043,"context_line":"        mock_create_arq.return_value \u003d arq"},{"line_number":7044,"context_line":"        dp_name \u003d \u0027smart_nic\u0027"},{"line_number":7045,"context_line":"        arq \u003d self.api._create_arq(self.context, dp_name)"},{"line_number":7046,"context_line":"        self.assertEqual(self.arqs[0], arq)"},{"line_number":7047,"context_line":""},{"line_number":7048,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.\u0027"},{"line_number":7049,"context_line":"                \u0027get_arq_device_rp_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7b019658_01e5ff46","line":7046,"in_reply_to":"dfeb6f1e_1bc8cc58","updated":"2021-03-31 08:27:30.000000000","message":"ditto","commit_id":"db2d8b8b98bfc7f1143bbdc90d299f026791d075"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5dce1cb066a14f09314f6a6e2485c44ec3e76dd5","unresolved":true,"context_lines":[{"line_number":5913,"context_line":"        ])"},{"line_number":5914,"context_line":""},{"line_number":5915,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_get_physnet_tunneled_info\u0027)"},{"line_number":5916,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":5917,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg.get_device_profile_request_groups\u0027)"},{"line_number":5918,"context_line":"    @mock.patch(\u0027nova.objects.request_spec.RequestGroup.from_port_request\u0027)"},{"line_number":5919,"context_line":"    @mock.patch.object(neutronapi.API, \"_get_port_vnic_info\")"}],"source_content_type":"text/x-python","patch_set":37,"id":"f09f6445_f734ccc7","line":5916,"updated":"2021-06-29 06:39:28.000000000","message":"This doesn\u0027t invoked in the real world","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8b3a7965772a3d828fb3a21be468bea150c586c2","unresolved":false,"context_lines":[{"line_number":5913,"context_line":"        ])"},{"line_number":5914,"context_line":""},{"line_number":5915,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_get_physnet_tunneled_info\u0027)"},{"line_number":5916,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg._CyborgClient.create_arqs\u0027)"},{"line_number":5917,"context_line":"    @mock.patch(\u0027nova.accelerator.cyborg.get_device_profile_request_groups\u0027)"},{"line_number":5918,"context_line":"    @mock.patch(\u0027nova.objects.request_spec.RequestGroup.from_port_request\u0027)"},{"line_number":5919,"context_line":"    @mock.patch.object(neutronapi.API, \"_get_port_vnic_info\")"}],"source_content_type":"text/x-python","patch_set":37,"id":"683a0a6f_e283dd44","line":5916,"in_reply_to":"f09f6445_f734ccc7","updated":"2021-06-29 08:07:02.000000000","message":"Done","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2cfe7aa7cfa39adba6a696dd42ac951089257a2c","unresolved":true,"context_lines":[{"line_number":5948,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_get_physnet_tunneled_info\u0027)"},{"line_number":5949,"context_line":"    @mock.patch.object(neutronapi.API, \"_get_port_vnic_info\")"},{"line_number":5950,"context_line":"    @mock.patch.object(neutronapi, \u0027get_client\u0027)"},{"line_number":5951,"context_line":"    def test_create_resource_requests_with_arq_excption(self, getclient,"},{"line_number":5952,"context_line":"            mock_get_port_vnic_info, mock_get_physnet_tunneled_info):"},{"line_number":5953,"context_line":"        requested_networks \u003d objects.NetworkRequestList("},{"line_number":5954,"context_line":"                objects \u003d ["}],"source_content_type":"text/x-python","patch_set":38,"id":"a8901a0c_02d984d1","line":5951,"range":{"start_line":5951,"start_character":47,"end_line":5951,"end_character":55},"updated":"2021-06-29 10:47:38.000000000","message":"typo, exception","commit_id":"464bb51cdc278f6cca6c5e6ce73847c2d57e738b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4b5ab806474d1cb1e2a85ec4aadf06311b86529","unresolved":true,"context_lines":[{"line_number":5948,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_get_physnet_tunneled_info\u0027)"},{"line_number":5949,"context_line":"    @mock.patch.object(neutronapi.API, \"_get_port_vnic_info\")"},{"line_number":5950,"context_line":"    @mock.patch.object(neutronapi, \u0027get_client\u0027)"},{"line_number":5951,"context_line":"    def test_create_resource_requests_with_arq_excption(self, getclient,"},{"line_number":5952,"context_line":"            mock_get_port_vnic_info, mock_get_physnet_tunneled_info):"},{"line_number":5953,"context_line":"        requested_networks \u003d objects.NetworkRequestList("},{"line_number":5954,"context_line":"                objects \u003d ["}],"source_content_type":"text/x-python","patch_set":43,"id":"a3c07f03_55f7807e","line":5951,"range":{"start_line":5951,"start_character":47,"end_line":5951,"end_character":55},"updated":"2021-07-13 15:10:14.000000000","message":"nit: exception","commit_id":"3ad2e152292b0626834c48bf2a2a80b8d06283cd"}],"releasenotes/notes/smartnic-support-0339efe4b68075fe.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d8a86c8e_830690f6","updated":"2021-02-24 11:46:17.000000000","message":"there is a bunch of unnecessary double spaces","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"2f03aedaf0b38188a73a662c572331eab6a67046","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"76c22557_d28215c8","in_reply_to":"d8a86c8e_830690f6","updated":"2021-03-02 08:04:40.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type  \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fffa4c6_31110096","line":5,"range":{"start_line":5,"start_character":38,"end_line":5,"end_character":45},"updated":"2021-02-24 11:46:17.000000000","message":"smartnic?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type  \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"763022eb_2a1a64c1","line":5,"range":{"start_line":5,"start_character":38,"end_line":5,"end_character":45},"in_reply_to":"9fffa4c6_31110096","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type  \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"a40ab199_4e5a6694","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":41},"updated":"2021-02-24 11:46:17.000000000","message":"What happens if the user boots with a accelerator-direct-physical? Is it rejected?","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type  \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"10cb95b6_1453ad96","line":7,"range":{"start_line":7,"start_character":70,"end_line":7,"end_character":77},"updated":"2021-02-24 11:46:17.000000000","message":"supported","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type  \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0751df12_e85a3d3c","line":7,"range":{"start_line":7,"start_character":70,"end_line":7,"end_character":77},"in_reply_to":"10cb95b6_1453ad96","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type  \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"a5ce9aef_4675987e","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":41},"in_reply_to":"a40ab199_4e5a6694","updated":"2021-02-25 08:45:45.000000000","message":"No available device form cyborg. then create arq failed.","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b83bab75c4ed4784a0d86575803e72c2989ad97","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"010c30b2_1220166a","line":8,"range":{"start_line":8,"start_character":12,"end_line":8,"end_character":20},"updated":"2021-02-24 11:46:17.000000000","message":"release","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"494a10bbd9adee520a73227b178d1a6461dc26e3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027.  A martnic is managed by cyborg, while"},{"line_number":6,"context_line":"    set neutron port vnic typa as  \u0027accelerator-direct\u0027, enable passthrough"},{"line_number":7,"context_line":"    a smatnic VF to VM. Please note only VF(\u0027accelerator-direct\u0027 ) is support"},{"line_number":8,"context_line":"    in this realease."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"b06fd572_5ff11fc6","line":8,"range":{"start_line":8,"start_character":12,"end_line":8,"end_character":20},"in_reply_to":"010c30b2_1220166a","updated":"2021-02-25 08:45:45.000000000","message":"Done","commit_id":"339f7872ac75a632351c5d02fd6c9be3e260d0b4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b3d4b22cda99764616992202b6d2e4cb97b2547a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027. A smartnic is managed by cyborg, while"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"dad5b95b_7f04da61","line":2,"updated":"2021-06-29 06:40:29.000000000","message":"this release note should be add in the last patch.","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"8b3a7965772a3d828fb3a21be468bea150c586c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for smartnic, include vnic type \u0027accelerator-direct\u0027 and"},{"line_number":5,"context_line":"    \u0027accelerator-direct-physical\u0027. A smartnic is managed by cyborg, while"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"6bdb491b_47099142","line":2,"in_reply_to":"dad5b95b_7f04da61","updated":"2021-06-29 08:07:02.000000000","message":"Done","commit_id":"c8b6a8649dfdc6bfea67dd7c55c1d60626c8b37a"}]}
