)]}'
{"cyborg/accelerator/drivers/gpu/utils.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"00e27890c28375c2e457fe0202105025d2e07cfd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                              \"[\\[](?P\u003cvendor_id\u003e[0-9a-fA-F]\""},{"line_number":41,"context_line":"                              \"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})].*\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nividia\", \"102b\": \"matrox\"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# NOTE(wangzhh): The implementation of current release doesn\u0027t support virtual"},{"line_number":46,"context_line":"# GPU."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_cd929658","line":43,"updated":"2020-01-08 11:20:32.000000000","message":"typo:nvidia","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                              \"[\\[](?P\u003cvendor_id\u003e[0-9a-fA-F]\""},{"line_number":41,"context_line":"                              \"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})].*\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nividia\", \"102b\": \"matrox\"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# NOTE(wangzhh): The implementation of current release doesn\u0027t support virtual"},{"line_number":46,"context_line":"# GPU."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7fda1679","line":43,"in_reply_to":"3fa7e38b_cd929658","updated":"2020-01-14 03:07:22.000000000","message":"Done","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"00e27890c28375c2e457fe0202105025d2e07cfd","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nividia\", \"102b\": \"matrox\"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# NOTE(wangzhh): The implementation of current release doesn\u0027t support virtual"},{"line_number":46,"context_line":"# GPU."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_8dc33e58","line":45,"updated":"2020-01-08 11:20:32.000000000","message":"It seems we support vgpu now. Could u help to delete this line.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nividia\", \"102b\": \"matrox\"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# NOTE(wangzhh): The implementation of current release doesn\u0027t support virtual"},{"line_number":46,"context_line":"# GPU."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7f71b676","line":45,"in_reply_to":"3fa7e38b_8dc33e58","updated":"2020-01-14 03:07:22.000000000","message":"Done","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"00e27890c28375c2e457fe0202105025d2e07cfd","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    traits \u003d []"},{"line_number":76,"context_line":"    if vgpu:"},{"line_number":77,"context_line":"        traits.append(\"CUSTOM_GPU_\" + VENDOR_MAPS.get(vendor_id).upper())"},{"line_number":78,"context_line":"        traits.append(\"CUSTOM_GPU_PRODUCT_ID_\" + product_id.upper())"},{"line_number":79,"context_line":"    return {\"traits\": traits}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ed9bd260","line":77,"updated":"2020-01-08 11:20:32.000000000","message":"What if we got a vendor which is not in VENDOR_MAPS? None.upper() may cause exception here.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    traits \u003d []"},{"line_number":76,"context_line":"    if vgpu:"},{"line_number":77,"context_line":"        traits.append(\"CUSTOM_GPU_\" + VENDOR_MAPS.get(vendor_id).upper())"},{"line_number":78,"context_line":"        traits.append(\"CUSTOM_GPU_PRODUCT_ID_\" + product_id.upper())"},{"line_number":79,"context_line":"    return {\"traits\": traits}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_cef3346d","line":77,"in_reply_to":"3fa7e38b_ed9bd260","updated":"2020-01-14 03:07:22.000000000","message":"Done. set \u0027\u0027 as defalt, if the key is not in VENDOR_MAPS.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f337ce92c6d77cb3f36f57695c681e3eb509cff8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    if vgpu:"},{"line_number":77,"context_line":"        traits.append(\"CUSTOM_GPU_\" + VENDOR_MAPS.get(vendor_id).upper())"},{"line_number":78,"context_line":"        traits.append(\"CUSTOM_GPU_PRODUCT_ID_\" + product_id.upper())"},{"line_number":79,"context_line":"    return {\"traits\": traits}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def discover_vendors():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1f00c2ff","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":29},"updated":"2020-01-09 03:01:16.000000000","message":"Hi yumeng. If vgpu is False, this method will return {\"traits\": None}. Is this logic correct? Can nova-sch still schedule this gpu without traits?","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    if vgpu:"},{"line_number":77,"context_line":"        traits.append(\"CUSTOM_GPU_\" + VENDOR_MAPS.get(vendor_id).upper())"},{"line_number":78,"context_line":"        traits.append(\"CUSTOM_GPU_PRODUCT_ID_\" + product_id.upper())"},{"line_number":79,"context_line":"    return {\"traits\": traits}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def discover_vendors():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e91411a1","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":29},"in_reply_to":"3fa7e38b_1f00c2ff","updated":"2020-01-14 03:07:22.000000000","message":"Thanks chenker for this good point! \nIn the current workflow, one GPU cannot be scheduled without traits. The reason for putting \"param: vgpu\u003dTrue\" here is to try to  get review from you guys, discuss and decide if we need this param as a flag. what do you think？\nAfter more discussion with others, I agree with one: no matter what the device is, either PGPU or VGPU, just passthrough as one GPU device and report the number of vGPUs/PGPU to deployable. So the traits generation of vGPU and PGPU should be the same, and the flag vgpu\u003dTrue is not necessary here.\nLet me know if you agree with that.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"592f82b3672f68fd7794f329df094b535fd0e459","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            gpu_dict \u003d m.groupdict()"},{"line_number":100,"context_line":"            # generate traits info"},{"line_number":101,"context_line":"            traits \u003d get_traits(gpu_dict[\"vendor_id\"], gpu_dict[\"product_id\"])"},{"line_number":102,"context_line":"            gpu_dict[\"rc\"] \u003d constants.RESOURCES[\"VGPU\"]"},{"line_number":103,"context_line":"            gpu_dict.update(traits)"},{"line_number":104,"context_line":"            gpu_list.append(_generate_driver_device(gpu_dict))"},{"line_number":105,"context_line":"    return gpu_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_b27672a2","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":56},"updated":"2020-01-10 01:48:06.000000000","message":"Not sure about this GPU structure\n1.  Can one gpu have several vGPUs, or we just make one vGPU per GPU by default?  \n2. Can we just passthrough one GPU, if so, we should make resource as \"GPU\".","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0c93faead21d56e264429dd0f20eea31fe884515","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            gpu_dict \u003d m.groupdict()"},{"line_number":100,"context_line":"            # generate traits info"},{"line_number":101,"context_line":"            traits \u003d get_traits(gpu_dict[\"vendor_id\"], gpu_dict[\"product_id\"])"},{"line_number":102,"context_line":"            gpu_dict[\"rc\"] \u003d constants.RESOURCES[\"VGPU\"]"},{"line_number":103,"context_line":"            gpu_dict.update(traits)"},{"line_number":104,"context_line":"            gpu_list.append(_generate_driver_device(gpu_dict))"},{"line_number":105,"context_line":"    return gpu_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1044fa19","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":56},"in_reply_to":"3fa7e38b_ae003805","updated":"2020-01-14 03:58:38.000000000","message":"Thanks for your explanation, it is better to support both vGPU and GPU passthrough in this driver. If you don\u0027t have vGPU license now, maybe we can complete PF passthrough first, which means use \"PGPU\" as the resource class.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            gpu_dict \u003d m.groupdict()"},{"line_number":100,"context_line":"            # generate traits info"},{"line_number":101,"context_line":"            traits \u003d get_traits(gpu_dict[\"vendor_id\"], gpu_dict[\"product_id\"])"},{"line_number":102,"context_line":"            gpu_dict[\"rc\"] \u003d constants.RESOURCES[\"VGPU\"]"},{"line_number":103,"context_line":"            gpu_dict.update(traits)"},{"line_number":104,"context_line":"            gpu_list.append(_generate_driver_device(gpu_dict))"},{"line_number":105,"context_line":"    return gpu_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ae003805","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":56},"in_reply_to":"3fa7e38b_b27672a2","updated":"2020-01-14 03:07:22.000000000","message":"1.yes one GPU has several vGPUs. But currently, due to the lack of Nvidia license, I can only test the case: passthrough one GPU device as one deployable. still waiting for the license now...\n2. for the resource_class, OpenStack only defined \"VGPU\" and \"PGPU\":https://github.com/openstack/os-resource-classes/blob/master/os_resource_classes/__init__.py#L55\nshould we use these two? do we need to replace the current DEVICE_GPU \u003d \"GPU\" with DEVICE_VGPU \u003d \"VGPU\"/DEVICE_PGPU \u003d \"PGPU\"?","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f337ce92c6d77cb3f36f57695c681e3eb509cff8","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            driver_attr.key, driver_attr.value \u003d k, v"},{"line_number":164,"context_line":"            attr_list.append(driver_attr)"},{"line_number":165,"context_line":"        if k \u003d\u003d \"traits\":"},{"line_number":166,"context_line":"            values \u003d gpu.get(k, None)"},{"line_number":167,"context_line":"            for val in values:"},{"line_number":168,"context_line":"                driver_attr \u003d driver_attribute.DriverAttribute("},{"line_number":169,"context_line":"                    key\u003d\"trait\" + str(index), value\u003dval)"},{"line_number":170,"context_line":"                index \u003d index + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a4064520","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":30},"updated":"2020-01-09 03:01:16.000000000","message":"Thanks yumeng. Line 166 should set default value []. Because Line167 will iterator this values. If None, will raise TypeError: \u0027NoneType\u0027 object is not iterable.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            driver_attr.key, driver_attr.value \u003d k, v"},{"line_number":164,"context_line":"            attr_list.append(driver_attr)"},{"line_number":165,"context_line":"        if k \u003d\u003d \"traits\":"},{"line_number":166,"context_line":"            values \u003d gpu.get(k, None)"},{"line_number":167,"context_line":"            for val in values:"},{"line_number":168,"context_line":"                driver_attr \u003d driver_attribute.DriverAttribute("},{"line_number":169,"context_line":"                    key\u003d\"trait\" + str(index), value\u003dval)"},{"line_number":170,"context_line":"                index \u003d index + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e5e962ab","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":30},"in_reply_to":"3fa7e38b_123e66b8","updated":"2020-01-14 03:07:22.000000000","message":"Done","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ae7b160ed42e36f6533fa157b6232539831a5016","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            driver_attr.key, driver_attr.value \u003d k, v"},{"line_number":164,"context_line":"            attr_list.append(driver_attr)"},{"line_number":165,"context_line":"        if k \u003d\u003d \"traits\":"},{"line_number":166,"context_line":"            values \u003d gpu.get(k, None)"},{"line_number":167,"context_line":"            for val in values:"},{"line_number":168,"context_line":"                driver_attr \u003d driver_attribute.DriverAttribute("},{"line_number":169,"context_line":"                    key\u003d\"trait\" + str(index), value\u003dval)"},{"line_number":170,"context_line":"                index \u003d index + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c5ec66be","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":30},"in_reply_to":"3fa7e38b_a4064520","updated":"2020-01-14 03:07:22.000000000","message":"Done","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"592f82b3672f68fd7794f329df094b535fd0e459","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            driver_attr.key, driver_attr.value \u003d k, v"},{"line_number":164,"context_line":"            attr_list.append(driver_attr)"},{"line_number":165,"context_line":"        if k \u003d\u003d \"traits\":"},{"line_number":166,"context_line":"            values \u003d gpu.get(k, None)"},{"line_number":167,"context_line":"            for val in values:"},{"line_number":168,"context_line":"                driver_attr \u003d driver_attribute.DriverAttribute("},{"line_number":169,"context_line":"                    key\u003d\"trait\" + str(index), value\u003dval)"},{"line_number":170,"context_line":"                index \u003d index + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_123e66b8","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":30},"in_reply_to":"3fa7e38b_a4064520","updated":"2020-01-10 01:48:06.000000000","message":"agree, we should fix that, also in fpga driver:)","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"768541c539bc585a415785e6f0aa6c7662a9ff11","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                              \"[\\[](?P\u003cvendor_id\u003e[0-9a-fA-F]\""},{"line_number":41,"context_line":"                              \"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})].*\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nivida\", \"102b\": \"matrox\"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_35d21a61","line":43,"range":{"start_line":43,"start_character":24,"end_line":43,"end_character":30},"updated":"2020-01-16 02:45:52.000000000","message":"nvidia","commit_id":"93d41842dd249b2785a0ddce30c2d7bf19a4ce4a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"763bb602259d4183059776160a64aa3d3fb1de59","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                              \"[\\[](?P\u003cvendor_id\u003e[0-9a-fA-F]\""},{"line_number":41,"context_line":"                              \"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})].*\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nivida\", \"102b\": \"matrox\"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_0d0012b1","line":43,"range":{"start_line":43,"start_character":24,"end_line":43,"end_character":30},"in_reply_to":"3fa7e38b_35d21a61","updated":"2020-01-19 07:54:33.000000000","message":"Done","commit_id":"93d41842dd249b2785a0ddce30c2d7bf19a4ce4a"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"768541c539bc585a415785e6f0aa6c7662a9ff11","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    : param vendor_id: vendor_id of PGPU/VGPU, eg.\"10de\""},{"line_number":67,"context_line":"    : param product_id: product_id of PGPU/VGPU, eg.\"1eb8\"."},{"line_number":68,"context_line":"    Example VGPU traits:"},{"line_number":69,"context_line":"    {traits:[\"CUSTOM_GPU_NIVIDIA\", \"CUSTOM_GPU_PRODUCT_ID_1EB8\"]}"},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    traits \u003d []"},{"line_number":72,"context_line":"    traits.append(\"CUSTOM_GPU_\" + VENDOR_MAPS.get(vendor_id, \"\").upper())"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d5e0662a","line":69,"range":{"start_line":69,"start_character":14,"end_line":69,"end_character":32},"updated":"2020-01-16 02:45:52.000000000","message":"nvidia.","commit_id":"93d41842dd249b2785a0ddce30c2d7bf19a4ce4a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"763bb602259d4183059776160a64aa3d3fb1de59","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    : param vendor_id: vendor_id of PGPU/VGPU, eg.\"10de\""},{"line_number":67,"context_line":"    : param product_id: product_id of PGPU/VGPU, eg.\"1eb8\"."},{"line_number":68,"context_line":"    Example VGPU traits:"},{"line_number":69,"context_line":"    {traits:[\"CUSTOM_GPU_NIVIDIA\", \"CUSTOM_GPU_PRODUCT_ID_1EB8\"]}"},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    traits \u003d []"},{"line_number":72,"context_line":"    traits.append(\"CUSTOM_GPU_\" + VENDOR_MAPS.get(vendor_id, \"\").upper())"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_2d038ebf","line":69,"range":{"start_line":69,"start_character":14,"end_line":69,"end_character":32},"in_reply_to":"3fa7e38b_d5e0662a","updated":"2020-01-19 07:54:33.000000000","message":"Done","commit_id":"93d41842dd249b2785a0ddce30c2d7bf19a4ce4a"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"768541c539bc585a415785e6f0aa6c7662a9ff11","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    driver_dep.name \u003d gpu.get(\u0027name\u0027, \u0027\u0027) + \u0027_\u0027 + gpu[\"devices\"]"},{"line_number":137,"context_line":"    driver_dep.driver_name \u003d VENDOR_MAPS.get(gpu[\"vendor_id\"]).upper()"},{"line_number":138,"context_line":"    # driver_dep.num_accelerators for PGPU is 1, for VGPU should be the"},{"line_number":139,"context_line":"    # sriov_numvfs of the vGPU device. "},{"line_number":140,"context_line":"    # TODO(yumeng) support VGPU num report soon"},{"line_number":141,"context_line":"    driver_dep.num_accelerators \u003d 1"},{"line_number":142,"context_line":"    driver_dep.attach_handle_list \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_553b169a","line":139,"range":{"start_line":139,"start_character":38,"end_line":139,"end_character":39},"updated":"2020-01-16 02:45:52.000000000","message":"nit","commit_id":"93d41842dd249b2785a0ddce30c2d7bf19a4ce4a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"763bb602259d4183059776160a64aa3d3fb1de59","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    driver_dep.name \u003d gpu.get(\u0027name\u0027, \u0027\u0027) + \u0027_\u0027 + gpu[\"devices\"]"},{"line_number":137,"context_line":"    driver_dep.driver_name \u003d VENDOR_MAPS.get(gpu[\"vendor_id\"]).upper()"},{"line_number":138,"context_line":"    # driver_dep.num_accelerators for PGPU is 1, for VGPU should be the"},{"line_number":139,"context_line":"    # sriov_numvfs of the vGPU device. "},{"line_number":140,"context_line":"    # TODO(yumeng) support VGPU num report soon"},{"line_number":141,"context_line":"    driver_dep.num_accelerators \u003d 1"},{"line_number":142,"context_line":"    driver_dep.attach_handle_list \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_0d8a5212","line":139,"range":{"start_line":139,"start_character":38,"end_line":139,"end_character":39},"in_reply_to":"3fa7e38b_553b169a","updated":"2020-01-19 07:54:33.000000000","message":"Done","commit_id":"93d41842dd249b2785a0ddce30c2d7bf19a4ce4a"}],"cyborg/tests/unit/accelerator/drivers/gpu/test_utils.py":[{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f337ce92c6d77cb3f36f57695c681e3eb509cff8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        ]"},{"line_number":65,"context_line":"        attribute_list \u003d ["},{"line_number":66,"context_line":"            {\u0027key\u0027: \u0027rc\u0027, \u0027value\u0027: \u0027VGPU\u0027},"},{"line_number":67,"context_line":"            {\u0027key\u0027: \u0027trait0\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_NIVIDIA\u0027},"},{"line_number":68,"context_line":"            {\u0027key\u0027: \u0027trait1\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_PRODUCT_ID_15F7\u0027},"},{"line_number":69,"context_line":"        ]"},{"line_number":70,"context_line":"        expected \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bf02ce06","line":67,"range":{"start_line":67,"start_character":52,"end_line":67,"end_character":53},"updated":"2020-01-09 03:01:16.000000000","message":"nit","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"763bb602259d4183059776160a64aa3d3fb1de59","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        ]"},{"line_number":65,"context_line":"        attribute_list \u003d ["},{"line_number":66,"context_line":"            {\u0027key\u0027: \u0027rc\u0027, \u0027value\u0027: \u0027VGPU\u0027},"},{"line_number":67,"context_line":"            {\u0027key\u0027: \u0027trait0\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_NIVIDIA\u0027},"},{"line_number":68,"context_line":"            {\u0027key\u0027: \u0027trait1\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_PRODUCT_ID_15F7\u0027},"},{"line_number":69,"context_line":"        ]"},{"line_number":70,"context_line":"        expected \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4b772790","line":67,"range":{"start_line":67,"start_character":52,"end_line":67,"end_character":53},"in_reply_to":"3fa7e38b_bf02ce06","updated":"2020-01-19 07:54:33.000000000","message":"Done","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f337ce92c6d77cb3f36f57695c681e3eb509cff8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                ["},{"line_number":78,"context_line":"                    {"},{"line_number":79,"context_line":"                        \u0027num_accelerators\u0027: 1,"},{"line_number":80,"context_line":"                        \u0027driver_name\u0027: \u0027NIVIDIA\u0027,"},{"line_number":81,"context_line":"                        \u0027name\u0027: \u0027NVIDIA Corporation GP100GL \u0027"},{"line_number":82,"context_line":"                                \u0027[Tesla P100 PCIe 12GB]_0000:00:06.0\u0027,"},{"line_number":83,"context_line":"                        \u0027attach_handle_list\u0027: attach_handle_list,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7f10d64f","line":80,"range":{"start_line":80,"start_character":40,"end_line":80,"end_character":47},"updated":"2020-01-09 03:01:16.000000000","message":"nit","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"763bb602259d4183059776160a64aa3d3fb1de59","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                ["},{"line_number":78,"context_line":"                    {"},{"line_number":79,"context_line":"                        \u0027num_accelerators\u0027: 1,"},{"line_number":80,"context_line":"                        \u0027driver_name\u0027: \u0027NIVIDIA\u0027,"},{"line_number":81,"context_line":"                        \u0027name\u0027: \u0027NVIDIA Corporation GP100GL \u0027"},{"line_number":82,"context_line":"                                \u0027[Tesla P100 PCIe 12GB]_0000:00:06.0\u0027,"},{"line_number":83,"context_line":"                        \u0027attach_handle_list\u0027: attach_handle_list,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6b7c6371","line":80,"range":{"start_line":80,"start_character":40,"end_line":80,"end_character":47},"in_reply_to":"3fa7e38b_7f10d64f","updated":"2020-01-19 07:54:33.000000000","message":"Done","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f337ce92c6d77cb3f36f57695c681e3eb509cff8","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        gpu_attribute_list \u003d \\"},{"line_number":99,"context_line":"            gpu_dep_list[0].as_dict()[\u0027attribute_list\u0027]"},{"line_number":100,"context_line":"        attri_obj_data \u003d []"},{"line_number":101,"context_line":"        [attri_obj_data.append(attr.as_dict()) for attr in gpu_attribute_list]"},{"line_number":102,"context_line":"        self.assertEqual(expected[\u0027vendor\u0027], gpu_dict[\u0027vendor\u0027])"},{"line_number":103,"context_line":"        self.assertEqual(expected[\u0027controlpath_id\u0027],"},{"line_number":104,"context_line":"                         gpu_dict[\u0027controlpath_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bf9e4eb4","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":78},"updated":"2020-01-09 03:01:16.000000000","message":"suggest like this :\nattri_obj_data.extend([attr.as_dict() for attr in gpu_attribute_list])","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"763bb602259d4183059776160a64aa3d3fb1de59","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        gpu_attribute_list \u003d \\"},{"line_number":99,"context_line":"            gpu_dep_list[0].as_dict()[\u0027attribute_list\u0027]"},{"line_number":100,"context_line":"        attri_obj_data \u003d []"},{"line_number":101,"context_line":"        [attri_obj_data.append(attr.as_dict()) for attr in gpu_attribute_list]"},{"line_number":102,"context_line":"        self.assertEqual(expected[\u0027vendor\u0027], gpu_dict[\u0027vendor\u0027])"},{"line_number":103,"context_line":"        self.assertEqual(expected[\u0027controlpath_id\u0027],"},{"line_number":104,"context_line":"                         gpu_dict[\u0027controlpath_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_2ba8ab1f","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":78},"in_reply_to":"3fa7e38b_bf9e4eb4","updated":"2020-01-19 07:54:33.000000000","message":"Thanks chenker! I think these two are the same.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f337ce92c6d77cb3f36f57695c681e3eb509cff8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                         gpu_dep_list[0].as_dict()[\u0027driver_name\u0027])"},{"line_number":115,"context_line":"        self.assertEqual(attach_handle_list[0],"},{"line_number":116,"context_line":"                         gpu_attach_handle_list[0].as_dict())"},{"line_number":117,"context_line":"        self.assertEqual(attribute_list, attri_obj_data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_3f5d7e15","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":56},"updated":"2020-01-09 03:01:16.000000000","message":"This assertEqual will failed randomly like:\ntesttools.matchers._impl.MismatchError: !\u003d:\nreference \u003d [{\u0027key\u0027: \u0027rc\u0027, \u0027value\u0027: \u0027VGPU\u0027},\n {\u0027key\u0027: \u0027trait0\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_NIVIDIA\u0027},\n {\u0027key\u0027: \u0027trait1\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_PRODUCT_ID_15F7\u0027}]\nactual    \u003d [{\u0027key\u0027: \u0027trait0\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_NIVIDIA\u0027},\n {\u0027key\u0027: \u0027trait1\u0027, \u0027value\u0027: \u0027CUSTOM_GPU_PRODUCT_ID_15F7\u0027},\n {\u0027key\u0027: \u0027rc\u0027, \u0027value\u0027: \u0027VGPU\u0027}]\n\n\nThe reason is because  the implementation of list in python level is not guaranteed to be ordered.","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"a2c5e0beba4c78d8791a3d52d68258cc91a4632a","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                         gpu_dep_list[0].as_dict()[\u0027driver_name\u0027])"},{"line_number":115,"context_line":"        self.assertEqual(attach_handle_list[0],"},{"line_number":116,"context_line":"                         gpu_attach_handle_list[0].as_dict())"},{"line_number":117,"context_line":"        self.assertEqual(attribute_list, attri_obj_data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_d26f6e26","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":56},"in_reply_to":"3fa7e38b_3f5d7e15","updated":"2020-01-10 03:07:56.000000000","message":"Revise the comment \"the implementation of list in python level is not guaranteed to be ordered\" above. Actually, Python list guaranteed its elements stay in the order when using append or extend[1],\nBut dict cannot guarantteed it\u0027s order when using dict.update method.\n[1]. https://stackoverflow.com/questions/13694034/is-a-python-list-guaranteed-to-have-its-elements-stay-in-the-order-they-are-inse","commit_id":"e22974d89ae37231b2b5c59d4b7328fafdaa3c6b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b4dda9ef74d266e8a5839dc186911fdaab705123","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        gpu_attribute_list \u003d \\"},{"line_number":99,"context_line":"            gpu_dep_list[0].as_dict()[\u0027attribute_list\u0027]"},{"line_number":100,"context_line":"        attri_obj_data \u003d []"},{"line_number":101,"context_line":"        [attri_obj_data.append(attr.as_dict()) for attr in gpu_attribute_list]"},{"line_number":102,"context_line":"        attribute_actual_data \u003d sorted(attri_obj_data, key\u003dlambda i: i[\u0027key\u0027])"},{"line_number":103,"context_line":"        self.assertEqual(expected[\u0027vendor\u0027], gpu_dict[\u0027vendor\u0027])"},{"line_number":104,"context_line":"        self.assertEqual(expected[\u0027controlpath_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_7d3789dc","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":9},"updated":"2020-02-13 09:43:32.000000000","message":"Why are you add this list []?","commit_id":"d443b2770b7ddcb4992837ebd906d1a110df4a50"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"15687bebda66c986e7b72871a94b1b82af297358","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        gpu_attribute_list \u003d \\"},{"line_number":99,"context_line":"            gpu_dep_list[0].as_dict()[\u0027attribute_list\u0027]"},{"line_number":100,"context_line":"        attri_obj_data \u003d []"},{"line_number":101,"context_line":"        [attri_obj_data.append(attr.as_dict()) for attr in gpu_attribute_list]"},{"line_number":102,"context_line":"        attribute_actual_data \u003d sorted(attri_obj_data, key\u003dlambda i: i[\u0027key\u0027])"},{"line_number":103,"context_line":"        self.assertEqual(expected[\u0027vendor\u0027], gpu_dict[\u0027vendor\u0027])"},{"line_number":104,"context_line":"        self.assertEqual(expected[\u0027controlpath_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e67aa174","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":9},"in_reply_to":"3fa7e38b_7d3789dc","updated":"2020-02-20 07:53:29.000000000","message":"After ran the py37 test again and recalled my coding process,\nthe most important reason is just to keep the code as clean as one line instead of separating them into multiple lines. It\u0027s a problem of personal coding habits. And there are other options provided here: http://paste.openstack.org/show/789780/.","commit_id":"d443b2770b7ddcb4992837ebd906d1a110df4a50"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a31d9b14650e02f35b9eb03704a9b5e73a3cc3a4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        gpu_attribute_list \u003d \\"},{"line_number":99,"context_line":"            gpu_dep_list[0].as_dict()[\u0027attribute_list\u0027]"},{"line_number":100,"context_line":"        attri_obj_data \u003d []"},{"line_number":101,"context_line":"        [attri_obj_data.append(attr.as_dict()) for attr in gpu_attribute_list]"},{"line_number":102,"context_line":"        attribute_actual_data \u003d sorted(attri_obj_data, key\u003dlambda i: i[\u0027key\u0027])"},{"line_number":103,"context_line":"        self.assertEqual(expected[\u0027vendor\u0027], gpu_dict[\u0027vendor\u0027])"},{"line_number":104,"context_line":"        self.assertEqual(expected[\u0027controlpath_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_b5ed0624","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":9},"in_reply_to":"3fa7e38b_7d3789dc","updated":"2020-02-14 03:24:12.000000000","message":"same question here.","commit_id":"d443b2770b7ddcb4992837ebd906d1a110df4a50"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"15687bebda66c986e7b72871a94b1b82af297358","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        gpu_attribute_list \u003d \\"},{"line_number":99,"context_line":"            gpu_dep_list[0].as_dict()[\u0027attribute_list\u0027]"},{"line_number":100,"context_line":"        attri_obj_data \u003d []"},{"line_number":101,"context_line":"        [attri_obj_data.append(attr.as_dict()) for attr in gpu_attribute_list]"},{"line_number":102,"context_line":"        attribute_actual_data \u003d sorted(attri_obj_data, key\u003dlambda i: i[\u0027key\u0027])"},{"line_number":103,"context_line":"        self.assertEqual(expected[\u0027vendor\u0027], gpu_dict[\u0027vendor\u0027])"},{"line_number":104,"context_line":"        self.assertEqual(expected[\u0027controlpath_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_868f2d76","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":9},"in_reply_to":"3fa7e38b_b5ed0624","updated":"2020-02-20 07:53:29.000000000","message":"ditto","commit_id":"d443b2770b7ddcb4992837ebd906d1a110df4a50"}]}
