)]}'
{"cyborg/accelerator/drivers/fpga/intel/sysinfo.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"38ee99fc93e6d4c71613abc5d9eedaaa3f472d98","unresolved":false,"context_lines":[{"line_number":208,"context_line":"def _generate_controlpath_id(fpga):"},{"line_number":209,"context_line":"    driver_cpid \u003d driver_controlpath_id.DriverControlPathID()"},{"line_number":210,"context_line":"    driver_cpid.cpid_type \u003d \"PCI\""},{"line_number":211,"context_line":"    dbs, func \u003d fpga[\"devices\"].split(\u0027.\u0027)"},{"line_number":212,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":213,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":214,"context_line":"    values \u003d [domain, bus, slot, func]"},{"line_number":215,"context_line":"    bdf_json \u003d dict(zip(keys, values))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_2db52eef","line":212,"range":{"start_line":211,"start_character":4,"end_line":212,"end_character":38},"updated":"2019-07-04 03:03:57.000000000","message":"We can copy or reuse Oslo code [1].\n\n[1] https://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py#L403","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"92ab11db1cf73d1280e7e8359e17fd21ec795928","unresolved":false,"context_lines":[{"line_number":208,"context_line":"def _generate_controlpath_id(fpga):"},{"line_number":209,"context_line":"    driver_cpid \u003d driver_controlpath_id.DriverControlPathID()"},{"line_number":210,"context_line":"    driver_cpid.cpid_type \u003d \"PCI\""},{"line_number":211,"context_line":"    dbs, func \u003d fpga[\"devices\"].split(\u0027.\u0027)"},{"line_number":212,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":213,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":214,"context_line":"    values \u003d [domain, bus, slot, func]"},{"line_number":215,"context_line":"    bdf_json \u003d dict(zip(keys, values))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_7cd19657","line":212,"range":{"start_line":211,"start_character":4,"end_line":212,"end_character":38},"in_reply_to":"7faddb67_2db52eef","updated":"2019-07-04 08:58:40.000000000","message":"I have look into it, this is to verify if the PCI addr is in good format. I also considered to use regular expression, but I find it will be more complex, we need add keys for each partition. I think we can simply keep this method. :)  Also, I refactored the code to avoid the duplication. Please see it in the latest patch.","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"861cb85ed0956419d71556c0471d4af60d2dcefb","unresolved":false,"context_lines":[{"line_number":208,"context_line":"def _generate_controlpath_id(fpga):"},{"line_number":209,"context_line":"    driver_cpid \u003d driver_controlpath_id.DriverControlPathID()"},{"line_number":210,"context_line":"    driver_cpid.cpid_type \u003d \"PCI\""},{"line_number":211,"context_line":"    dbs, func \u003d fpga[\"devices\"].split(\u0027.\u0027)"},{"line_number":212,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":213,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":214,"context_line":"    values \u003d [domain, bus, slot, func]"},{"line_number":215,"context_line":"    bdf_json \u003d dict(zip(keys, values))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_7a3f53d6","line":212,"range":{"start_line":211,"start_character":4,"end_line":212,"end_character":38},"in_reply_to":"7faddb67_7cd19657","updated":"2019-07-04 13:19:49.000000000","message":"Here is yikun\u0027s patch with the keys named [1]. May be we can refactor to use his code? You both can decide on a common way.\n\n[1] https://review.opendev.org/gitweb?p\u003dopenstack/cyborg.git;f\u003dcyborg/accelerator/drivers/aichip/huawei/ascend.py;hb\u003drefs/changes/74/660874/10#l12","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"38ee99fc93e6d4c71613abc5d9eedaaa3f472d98","unresolved":false,"context_lines":[{"line_number":243,"context_line":"def _generate_attach_handle(fpga, pf_has_vf):"},{"line_number":244,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":245,"context_line":"    driver_ah.attach_type \u003d \"PCI\""},{"line_number":246,"context_line":"    dbs, func \u003d fpga[\"devices\"].split(\u0027.\u0027)"},{"line_number":247,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":248,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":249,"context_line":"    values \u003d [domain, bus, slot, func]"},{"line_number":250,"context_line":"    bdf_json \u003d dict(zip(keys, values))"},{"line_number":251,"context_line":"    driver_ah.attach_info \u003d bdf_json"},{"line_number":252,"context_line":"    driver_ah.in_use \u003d False"},{"line_number":253,"context_line":"    return driver_ah"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_0dccf287","line":250,"range":{"start_line":246,"start_character":1,"end_line":250,"end_character":38},"updated":"2019-07-04 03:03:57.000000000","message":"Refactor to avoid code duplication","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"92ab11db1cf73d1280e7e8359e17fd21ec795928","unresolved":false,"context_lines":[{"line_number":243,"context_line":"def _generate_attach_handle(fpga, pf_has_vf):"},{"line_number":244,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":245,"context_line":"    driver_ah.attach_type \u003d \"PCI\""},{"line_number":246,"context_line":"    dbs, func \u003d fpga[\"devices\"].split(\u0027.\u0027)"},{"line_number":247,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":248,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":249,"context_line":"    values \u003d [domain, bus, slot, func]"},{"line_number":250,"context_line":"    bdf_json \u003d dict(zip(keys, values))"},{"line_number":251,"context_line":"    driver_ah.attach_info \u003d bdf_json"},{"line_number":252,"context_line":"    driver_ah.in_use \u003d False"},{"line_number":253,"context_line":"    return driver_ah"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_3ccb1ea6","line":250,"range":{"start_line":246,"start_character":1,"end_line":250,"end_character":38},"in_reply_to":"7faddb67_0dccf287","updated":"2019-07-04 08:58:40.000000000","message":"Done","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"861cb85ed0956419d71556c0471d4af60d2dcefb","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from cyborg.objects.driver_objects import driver_deployable, driver_device,\\"},{"line_number":28,"context_line":"    driver_attach_handle, driver_controlpath_id, driver_attribute"},{"line_number":29,"context_line":"from cyborg.common import constants"},{"line_number":30,"context_line":"from cyborg.accelerator.common import utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"SYS_FPGA \u003d \"/sys/class/fpga\""},{"line_number":33,"context_line":"DEVICE \u003d \"device\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_d4473ebc","line":30,"updated":"2019-07-04 13:19:49.000000000","message":"Should be in sorted order (above line 26)","commit_id":"ba442cf7fdb6f724d65983f1f353dea41ad4c2af"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f2380d8d73e1540d6cc1d4edeb5b5b4608a07372","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from cyborg.objects.driver_objects import driver_deployable, driver_device,\\"},{"line_number":28,"context_line":"    driver_attach_handle, driver_controlpath_id, driver_attribute"},{"line_number":29,"context_line":"from cyborg.common import constants"},{"line_number":30,"context_line":"from cyborg.accelerator.common import utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"SYS_FPGA \u003d \"/sys/class/fpga\""},{"line_number":33,"context_line":"DEVICE \u003d \"device\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_96820dc8","line":30,"in_reply_to":"7faddb67_d4473ebc","updated":"2019-07-08 02:05:42.000000000","message":"Done","commit_id":"ba442cf7fdb6f724d65983f1f353dea41ad4c2af"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"47c0597417e993ce93df799fde826b938e156fa4","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    return driver_device_obj"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"def _generate_controlpath_id(fpga):"},{"line_number":209,"context_line":"    driver_cpid \u003d driver_controlpath_id.DriverControlPathID()"},{"line_number":210,"context_line":"    driver_cpid.cpid_type \u003d \"PCI\""},{"line_number":211,"context_line":"    driver_cpid.cpid_info \u003d utils.pci_str_to_json(fpga[\"devices\"])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_1dae59e7","line":208,"updated":"2019-07-04 13:25:57.000000000","message":"These _generate functions are being used by many drivers. Can we move them to generic driver? (I gave the same comment in fake driver patch https://review.opendev.org/#/c/665318 )","commit_id":"ba442cf7fdb6f724d65983f1f353dea41ad4c2af"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"861cb85ed0956419d71556c0471d4af60d2dcefb","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    return [driver_dep]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"def _generate_attach_handle(fpga, pf_has_vf):"},{"line_number":239,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":240,"context_line":"    driver_ah.attach_type \u003d \"PCI\""},{"line_number":241,"context_line":"    driver_ah.attach_info \u003d utils.pci_str_to_json(fpga[\"devices\"])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3a0a3b26","line":238,"range":{"start_line":238,"start_character":34,"end_line":238,"end_character":43},"updated":"2019-07-04 13:19:49.000000000","message":"This parameter is not used.","commit_id":"ba442cf7fdb6f724d65983f1f353dea41ad4c2af"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"f2380d8d73e1540d6cc1d4edeb5b5b4608a07372","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    return [driver_dep]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"def _generate_attach_handle(fpga, pf_has_vf):"},{"line_number":239,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":240,"context_line":"    driver_ah.attach_type \u003d \"PCI\""},{"line_number":241,"context_line":"    driver_ah.attach_info \u003d utils.pci_str_to_json(fpga[\"devices\"])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_566c9535","line":238,"range":{"start_line":238,"start_character":34,"end_line":238,"end_character":43},"in_reply_to":"7faddb67_3a0a3b26","updated":"2019-07-08 02:05:42.000000000","message":"Done","commit_id":"ba442cf7fdb6f724d65983f1f353dea41ad4c2af"}],"cyborg/accelerator/drivers/gpu/utils.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"38ee99fc93e6d4c71613abc5d9eedaaa3f472d98","unresolved":false,"context_lines":[{"line_number":90,"context_line":"def _generate_controlpath_id(gpu):"},{"line_number":91,"context_line":"    driver_cpid \u003d driver_controlpath_id.DriverControlPathID()"},{"line_number":92,"context_line":"    driver_cpid.cpid_type \u003d \"PCI\""},{"line_number":93,"context_line":"    dbs, func \u003d gpu[\"devices\"].split(\u0027.\u0027)"},{"line_number":94,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":95,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":96,"context_line":"    values \u003d [domain, bus, slot, func]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_cdc57a5d","line":93,"updated":"2019-07-04 03:03:57.000000000","message":"Ditto","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"92ab11db1cf73d1280e7e8359e17fd21ec795928","unresolved":false,"context_lines":[{"line_number":90,"context_line":"def _generate_controlpath_id(gpu):"},{"line_number":91,"context_line":"    driver_cpid \u003d driver_controlpath_id.DriverControlPathID()"},{"line_number":92,"context_line":"    driver_cpid.cpid_type \u003d \"PCI\""},{"line_number":93,"context_line":"    dbs, func \u003d gpu[\"devices\"].split(\u0027.\u0027)"},{"line_number":94,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":95,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":96,"context_line":"    values \u003d [domain, bus, slot, func]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_5cd05a51","line":93,"in_reply_to":"7faddb67_cdc57a5d","updated":"2019-07-04 08:58:40.000000000","message":"Done","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"38ee99fc93e6d4c71613abc5d9eedaaa3f472d98","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":120,"context_line":"    driver_ah.attach_type \u003d \"PCI\""},{"line_number":121,"context_line":"    driver_ah.in_use \u003d False"},{"line_number":122,"context_line":"    dbs, func \u003d gpu[\"devices\"].split(\u0027.\u0027)"},{"line_number":123,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":124,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":125,"context_line":"    values \u003d [domain, bus, slot, func]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_6da006a7","line":122,"updated":"2019-07-04 03:03:57.000000000","message":"Ditto","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"92ab11db1cf73d1280e7e8359e17fd21ec795928","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":120,"context_line":"    driver_ah.attach_type \u003d \"PCI\""},{"line_number":121,"context_line":"    driver_ah.in_use \u003d False"},{"line_number":122,"context_line":"    dbs, func \u003d gpu[\"devices\"].split(\u0027.\u0027)"},{"line_number":123,"context_line":"    domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":124,"context_line":"    keys \u003d [\"domain\", \"bus\", \"device\", \"function\"]"},{"line_number":125,"context_line":"    values \u003d [domain, bus, slot, func]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_fcc4a694","line":122,"in_reply_to":"7faddb67_6da006a7","updated":"2019-07-04 08:58:40.000000000","message":"Done","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"}],"cyborg/agent/resource_tracker.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"38ee99fc93e6d4c71613abc5d9eedaaa3f472d98","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            acc_list.extend(acc_driver.discover())"},{"line_number":73,"context_line":"        # Call conductor_api here to diff and report acc data. Now, we actually"},{"line_number":74,"context_line":"        # do not have the method report_data."},{"line_number":75,"context_line":"        self.conductor_api.report_data(context, self.host, acc_list)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_8da542b8","line":75,"updated":"2019-07-04 03:03:57.000000000","message":"Seems like unrelated change, but I don\u0027t mind.","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"92ab11db1cf73d1280e7e8359e17fd21ec795928","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            acc_list.extend(acc_driver.discover())"},{"line_number":73,"context_line":"        # Call conductor_api here to diff and report acc data. Now, we actually"},{"line_number":74,"context_line":"        # do not have the method report_data."},{"line_number":75,"context_line":"        self.conductor_api.report_data(context, self.host, acc_list)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_7c5f56e5","line":75,"in_reply_to":"7faddb67_8da542b8","updated":"2019-07-04 08:58:40.000000000","message":"This is an old bug, just see it and fix it handily.","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"}],"cyborg/objects/fields.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"38ee99fc93e6d4c71613abc5d9eedaaa3f472d98","unresolved":false,"context_lines":[{"line_number":31,"context_line":"IPNetworkField \u003d object_fields.IPNetworkField"},{"line_number":32,"context_line":"UnspecifiedDefault \u003d object_fields.UnspecifiedDefault"},{"line_number":33,"context_line":"EnumField \u003d object_fields.EnumField"},{"line_number":34,"context_line":"DictField \u003d object_fields.DictOfStringsField"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class ARQState(object_fields.Enum):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ad9d9e67","line":34,"updated":"2019-07-04 03:03:57.000000000","message":"Where do you use this?","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"92ab11db1cf73d1280e7e8359e17fd21ec795928","unresolved":false,"context_lines":[{"line_number":31,"context_line":"IPNetworkField \u003d object_fields.IPNetworkField"},{"line_number":32,"context_line":"UnspecifiedDefault \u003d object_fields.UnspecifiedDefault"},{"line_number":33,"context_line":"EnumField \u003d object_fields.EnumField"},{"line_number":34,"context_line":"DictField \u003d object_fields.DictOfStringsField"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class ARQState(object_fields.Enum):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_5c5e1ae7","line":34,"in_reply_to":"7faddb67_ad9d9e67","updated":"2019-07-04 08:58:40.000000000","message":"removed.","commit_id":"5ee2a76bcb6e1f40d149e8ec2ea7c057c9aff799"}]}
