)]}'
{"cyborg/accelerator/drivers/aichip/huawei/ascend.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"86aa9baf9b53cbc855513547961db13463840ec7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":38,"context_line":"        driver_ah.attach_type \u003d \"PCI\""},{"line_number":39,"context_line":"        driver_ah.in_use \u003d False"},{"line_number":40,"context_line":"        driver_ah.attach_info \u003d pci[\"slot\"]"},{"line_number":41,"context_line":"        return driver_ah"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_a6fc51b5","line":40,"range":{"start_line":40,"start_character":32,"end_line":40,"end_character":43},"updated":"2019-06-26 01:11:06.000000000","message":"IIUC, this will report the attach_handle_info as a string like \u00270000:0c:00.0\u0027. But it should be a string with JSON content like \u0027{ \"domain\": .., \" slot\": ... }\u0027","commit_id":"d1cbea1361d796a9c5b1a3da01ca4c2ad4be5c86"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ac5d9ab53284975a5eb7029f93d77b802f56c5d9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    VENDOR \u003d \"huawei\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _pci_addr2json(self, addr):"},{"line_number":29,"context_line":"        json_addr \u003d re.split(\u0027:|\\.\u0027, addr)"},{"line_number":30,"context_line":"        return jsonutils.dumps({"},{"line_number":31,"context_line":"            \"domain\": json_addr[0],"},{"line_number":32,"context_line":"            \"bus\": json_addr[1],"},{"line_number":33,"context_line":"            \"device\": json_addr[2],"},{"line_number":34,"context_line":"            \"function\": json_addr[3],"},{"line_number":35,"context_line":"        })"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":38,"context_line":"    def _generate_controlpath_id(self, pci):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_7e9e6008","line":35,"range":{"start_line":28,"start_character":0,"end_line":35,"end_character":10},"updated":"2019-07-05 02:32:07.000000000","message":"I have implement a common function doing this, is it better to invoke it. Here is the link:https://review.opendev.org/#/c/668868/3/cyborg/accelerator/common/utils.py","commit_id":"7488f022884d98e104ffedcb1c0fe3b49b288785"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"aee68a37b43c6b142b61b403d66fe3c7dd033680","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    VENDOR \u003d \"huawei\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _pci_addr2json(self, addr):"},{"line_number":29,"context_line":"        json_addr \u003d re.split(\u0027:|\\.\u0027, addr)"},{"line_number":30,"context_line":"        return jsonutils.dumps({"},{"line_number":31,"context_line":"            \"domain\": json_addr[0],"},{"line_number":32,"context_line":"            \"bus\": json_addr[1],"},{"line_number":33,"context_line":"            \"device\": json_addr[2],"},{"line_number":34,"context_line":"            \"function\": json_addr[3],"},{"line_number":35,"context_line":"        })"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":38,"context_line":"    def _generate_controlpath_id(self, pci):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_77ff2101","line":35,"range":{"start_line":28,"start_character":0,"end_line":35,"end_character":10},"in_reply_to":"7faddb67_76919152","updated":"2019-07-10 07:42:42.000000000","message":"done","commit_id":"7488f022884d98e104ffedcb1c0fe3b49b288785"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"dcab63efab8b0cbe12b364fc570e5daf2166ce36","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    VENDOR \u003d \"huawei\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _pci_addr2json(self, addr):"},{"line_number":29,"context_line":"        json_addr \u003d re.split(\u0027:|\\.\u0027, addr)"},{"line_number":30,"context_line":"        return jsonutils.dumps({"},{"line_number":31,"context_line":"            \"domain\": json_addr[0],"},{"line_number":32,"context_line":"            \"bus\": json_addr[1],"},{"line_number":33,"context_line":"            \"device\": json_addr[2],"},{"line_number":34,"context_line":"            \"function\": json_addr[3],"},{"line_number":35,"context_line":"        })"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":38,"context_line":"    def _generate_controlpath_id(self, pci):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_76919152","line":35,"range":{"start_line":28,"start_character":0,"end_line":35,"end_character":10},"in_reply_to":"7faddb67_7e9e6008","updated":"2019-07-08 01:28:20.000000000","message":"Cool, I\u0027d like rebase my patch when your patch is merged.","commit_id":"7488f022884d98e104ffedcb1c0fe3b49b288785"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"6f12a5ee71dfc9008c781b501a443cd5f256eeb3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return [driver_dep]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_6cbbcbc3","line":54,"updated":"2019-07-27 20:18:46.000000000","message":"We need to move to ospriv rather than use sudo and a direct command. Apart from security, direct sudo without \u0027-E\u0027 option will not inherit path from parent shell, and so may not locate lspci in the PATH.\n\nThis applies to other parts of Cyborg as well.","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4706dc2900767bcbcedc6a2f5db89cd115e0c69e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return [driver_dep]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_84f57b59","line":54,"in_reply_to":"7faddb67_6cbbcbc3","updated":"2019-08-01 08:05:28.000000000","message":"as noted in L58-L59, we will support the oslo.privsep in future, so I will address them in follow patch.","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fa56d7f34619385e24cb7a902e567bd5bb0f0b3c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return [driver_dep]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_37a07b42","line":54,"in_reply_to":"7faddb67_84f57b59","updated":"2019-08-01 09:18:25.000000000","message":"and I will rebase this to https://review.opendev.org/#/c/673957/","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"17ba8db30e59d9baef54249be9193fc64cce9ed2","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"},{"line_number":58,"context_line":"        # FIXME(wangzhh): Use oslo.privsep instead of subprocess here to"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_3a9c895c","line":55,"range":{"start_line":55,"start_character":14,"end_line":55,"end_character":34},"updated":"2019-07-22 06:50:20.000000000","message":"If you are intended to use lspci, please update the devstack to install the lspci utils firstly. \n\nAlso the nv GPU driver dependes on it.\n\nSome linux distribution does no include lspci. \n\nThanks.","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"d01cda191058edafb7d0d36c349a77de1d881223","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"},{"line_number":58,"context_line":"        # FIXME(wangzhh): Use oslo.privsep instead of subprocess here to"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_e949148b","line":55,"range":{"start_line":55,"start_character":14,"end_line":55,"end_character":34},"in_reply_to":"7faddb67_3a9c895c","updated":"2019-07-25 01:50:11.000000000","message":"Thanks for reply, and `lspci` is included by ubuntu and centos, so I think it\u0027s a little different from opae, it\u0027s a default tools in openstack main support distribution [1].\n\n[1] https://docs.openstack.org/puppet-openstack-guide/latest/install/supported-platforms.html\n\nIf you still think it\u0027s necessary, I\u0027d like to add something like:\n\nsudo apt-get install pcituils -y || sudo yum install -y pcituils\n\nin a separate patch.","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4706dc2900767bcbcedc6a2f5db89cd115e0c69e","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"},{"line_number":58,"context_line":"        # FIXME(wangzhh): Use oslo.privsep instead of subprocess here to"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_84c33bed","line":55,"range":{"start_line":55,"start_character":14,"end_line":55,"end_character":34},"in_reply_to":"7faddb67_aca783a7","updated":"2019-08-01 08:05:28.000000000","message":"done","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"6f12a5ee71dfc9008c781b501a443cd5f256eeb3","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":54,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":55,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":56,"context_line":"        if keywords:"},{"line_number":57,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"},{"line_number":58,"context_line":"        # FIXME(wangzhh): Use oslo.privsep instead of subprocess here to"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_aca783a7","line":55,"range":{"start_line":55,"start_character":14,"end_line":55,"end_character":34},"in_reply_to":"7faddb67_e949148b","updated":"2019-07-27 20:18:46.000000000","message":"Not every install is guaranteed to have that -- depending on what configuration (minimal, virtualization host, etc.) that was chosen for install.","commit_id":"aa50905892d44d1e28b1fc0cbd31ed2c62fa7f1b"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ec8973f7f830a4e8717d5c42f6d53f504e16a248","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return driver_ah"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":57,"context_line":"    def _generate_dep_list(self, pci):"},{"line_number":58,"context_line":"        driver_dep \u003d driver_deployable.DriverDeployable()"},{"line_number":59,"context_line":"        driver_dep.attach_handle_list \u003d [self._generate_attach_handle(pci)]"},{"line_number":60,"context_line":"        pci_addr_name \u003d pci[\"slot\"].replace(\":\", \"_\").replace(\".\", \"_\")"},{"line_number":61,"context_line":"        driver_dep.name \u003d pci.get(\u0027device\u0027, \u0027\u0027) + \u0027_\u0027 + pci_addr_name"},{"line_number":62,"context_line":"        driver_dep.num_accelerators \u003d 1"},{"line_number":63,"context_line":"        return [driver_dep]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":66,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_c08158fd","line":63,"range":{"start_line":57,"start_character":0,"end_line":63,"end_character":27},"updated":"2019-08-29 03:53:22.000000000","message":"driver_deployable will have a new field \"driver_name\", please see https://review.opendev.org/#/c/677952/","commit_id":"f163469940f56a1c3c9d9c57c73c0270d80735c1"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"8bd21cbcad00fd8c70b57890ab4e15c232d1aea1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return driver_ah"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":57,"context_line":"    def _generate_dep_list(self, pci):"},{"line_number":58,"context_line":"        driver_dep \u003d driver_deployable.DriverDeployable()"},{"line_number":59,"context_line":"        driver_dep.attach_handle_list \u003d [self._generate_attach_handle(pci)]"},{"line_number":60,"context_line":"        pci_addr_name \u003d pci[\"slot\"].replace(\":\", \"_\").replace(\".\", \"_\")"},{"line_number":61,"context_line":"        driver_dep.name \u003d pci.get(\u0027device\u0027, \u0027\u0027) + \u0027_\u0027 + pci_addr_name"},{"line_number":62,"context_line":"        driver_dep.num_accelerators \u003d 1"},{"line_number":63,"context_line":"        return [driver_dep]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":66,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_6aadcfe8","line":63,"range":{"start_line":57,"start_character":0,"end_line":63,"end_character":27},"in_reply_to":"7faddb67_c08158fd","updated":"2019-08-30 00:43:34.000000000","message":"Done, thanks for reminder","commit_id":"f163469940f56a1c3c9d9c57c73c0270d80735c1"}],"cyborg/accelerator/drivers/npu/huawei/ascend.py":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"61414c9fa86715b9b0793dc7042b69845e7370b1","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":52,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":53,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":54,"context_line":"        if keywords:"},{"line_number":55,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"},{"line_number":56,"context_line":"        p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_44e578a7","line":53,"range":{"start_line":53,"start_character":15,"end_line":53,"end_character":33},"updated":"2019-05-23 14:36:15.000000000","message":"Does this require root wrapper on the compute side?","commit_id":"bbdbd4e08a2510de866d5e19a1e6d13c2af56d13"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"8a1d4c24e4b06149a6e648e1791afc1e4b1d6aff","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # TODO(yikun): can be extracted into PCIDeviceDriver"},{"line_number":52,"context_line":"    def _get_pci_lines(self, keywords\u003d()):"},{"line_number":53,"context_line":"        cmd \u003d \"sudo lspci -nnn -D\""},{"line_number":54,"context_line":"        if keywords:"},{"line_number":55,"context_line":"            cmd +\u003d \"| grep -E %s\" % \u0027|\u0027.join(keywords)"},{"line_number":56,"context_line":"        p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_2cb61b40","line":53,"range":{"start_line":53,"start_character":15,"end_line":53,"end_character":33},"in_reply_to":"bfb3d3c7_44e578a7","updated":"2019-05-24 09:41:02.000000000","message":"I think we should use oslo.privsep in future. and it\u0027s same with GPU code. Maybe I should keep some note on this, we can fix it when fix other privsep.\n\n[1] https://github.com/openstack/cyborg/blob/master/cyborg/accelerator/drivers/gpu/utils.py#L42","commit_id":"bbdbd4e08a2510de866d5e19a1e6d13c2af56d13"}],"devstack/plugin.sh":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"65f613f1950cd429b9ad3774a3e75734ef676dfd","unresolved":false,"context_lines":[{"line_number":20,"context_line":"           echo \"WARNING: Failed to install additional Cyborg packages\""},{"line_number":21,"context_line":"        fi"},{"line_number":22,"context_line":"        # install the lspci"},{"line_number":23,"context_line":"        sudo apt-get install pcituils -y || sudo yum install -y pcituils"},{"line_number":24,"context_line":"    fi"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-sh","patch_set":13,"id":"7faddb67_fe385eee","line":23,"range":{"start_line":23,"start_character":29,"end_line":23,"end_character":37},"updated":"2019-08-03 00:35:18.000000000","message":"Nit: typo pciutils","commit_id":"a7fb2ebd2ca050b321d2557d75f04a075458cde5"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"59ccc91717e2491e9ff38b6f530f780cbba1e584","unresolved":false,"context_lines":[{"line_number":20,"context_line":"           echo \"WARNING: Failed to install additional Cyborg packages\""},{"line_number":21,"context_line":"        fi"},{"line_number":22,"context_line":"        # install the lspci"},{"line_number":23,"context_line":"        sudo apt-get install pcituils -y || sudo yum install -y pcituils"},{"line_number":24,"context_line":"    fi"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-sh","patch_set":13,"id":"7faddb67_9eddaade","line":23,"updated":"2019-08-03 00:04:49.000000000","message":"This is not the right way to install packages in devstack. For the standard way, please see:\nhttps://opendev.org/openstack/cyborg/src/branch/master/devstack/lib/opae#L25 \n\nWe check if the package is installed and then install it, and both steps use utility functions from devstack.","commit_id":"a7fb2ebd2ca050b321d2557d75f04a075458cde5"}]}
